code: public <T> Navigator with(Class<T> type, Preparer<T> preparer) throws MvcGraphException {
          with(type, null, preparer);
          return this;
      }
docs: Prepare the instance subject to being injected with no qualifier for the fragment being
  navigated to. It's an equivalent way to pass arguments to the next fragment.For example, when
  next fragment needs to have a pre set page title name, the controller referenced by the
  fragment can be prepared here and set the title in the controller's model. Then in the
  MvcFragment.onViewReady bind the value of the page title from the controller's model to the
  fragment.
  <p/>
  <p>Example:</p>
  To initialize the timer of a TimerFragment which counts down seconds,sets the initial value
  of its controller by this with method.
  <pre>
  class TimerFragment {
  @Inject
  TimerController timerController;
  }
  
  interface TimerController {
  void setInitialValue(long howManySeconds);
  }
  
  navigationManager.navigate(this).with(TimerController.class, new Preparer<TimerController>() {
  @Override
  public void prepare(TimerController instance) {
  long fiveMinutes = 60 * 5;
  instance.setInitialValue(fiveMinutes);
  
  //Then the value set to the controller will be guaranteed to be retained when
  //TimerFragment is ready to show
  }
  }).to(TimerFragment.class.getName());
  </pre>
  
  @param type     The class type of the instance needs to be prepared
  @param preparer The preparer in which the injected instance will be prepared
  @return This navigator
  @throws MvcGraphException Raised when the required injectable object cannot be injected