void ChangeState(FiniteState newState)
 {
     if (currentState != null){
         currentState.OnExit(target);
     }
     currentState = newState;
     // TODO Assert(currentState != null);
     currentState.OnEnter(target);
 }