code: public void setToState(State state, @FloatRange(from = 0f, to = 1f) float position) {
          if (position <= 0) {
              throw new IllegalArgumentException("'To' position cannot be <= 0");
          }
          if (position > 1f) {
              throw new IllegalArgumentException("'To' position cannot be > 1");
          }
  
          if (GestureDebug.isDebugAnimator()) {
              Log.d(TAG, "State reset: " + state + " at " + position);
          }
  
          toPosition = position;
          toState.set(state);
          requestUpdateToState();
          requestUpdateFromState();
      }
docs: Specifies target ('to') state and it's position which will be used to interpolate
  current state for intermediate positions (i.e. during animation or exit gesture).<br>
  This allows you to set up correct state without changing current position
  ({@link #getPosition()}).
  <p>
  Only use this method if you understand what you do.
  
  @param state Target ('to') state
  @param position Target ('to') position
  @see #getToPosition()