/** Enqueue a message to this state machine after a delay. */
  public final void sendMessageDelayed(Message msg, long delayMillis) {
    // mSmHandler can be null if the state machine has quit.
    if (mSmHandler == null) return;

    mSmHandler.sendMessageDelayed(msg, delayMillis);
  }
  /** Enqueue a message to this state machine after a delay. */
  public final void sendMessageDelayed(int what, Object obj, long delayMillis) {
    // mSmHandler can be null if the state machine has quit.
    if (mSmHandler == null) return;

    mSmHandler.sendMessageDelayed(obtainMessage(what, obj), delayMillis);
  }