private void shiftStateIfNecessary() {
    if (myCurrentState.isDone() && !myStates.isEmpty()) {
      myCurrentState = myStates.get(0);
      myStates.remove(0);
      myCurrentState.prepare();
    }
  }
private void shiftStateIfNecessary()