public void nextStage() {
   if (s != null) {
     s = s.nextStage(this);
     if (s != null) {
       s.apply(this);
     }
   }
 }
 public void turnOff() {
   s = Stage.DYING1;
   s.apply(this);
 }
 public void turnOn() {
   s = Stage.SPAWNING;
   s.apply(this);
 }
 @Override
 public <R> XStream<R> pipe(final Stage<T, R> stage) {
   return new XStreamImpl<>(stage.apply(stream));
 }