code: public synchronized void send(final EvaluatorRuntimeProtocol.EvaluatorControlProto evaluatorControlProto) {
      if (!this.wrapped.isPresent()) {
        throw new IllegalStateException("Trying to send an EvaluatorControlProto before the Evaluator ID is set.");
      }
      if (!this.stateManager.isRunning()) {
        LOG.log(Level.WARNING, "Trying to send an EvaluatorControlProto to Evaluator [{0}] that is in state [{1}], " +
                "not [RUNNING]. The control message was: {2}",
                new Object[]{this.evaluatorId, this.stateManager, evaluatorControlProto});
        return;
      }
      this.wrapped.get().onNext(evaluatorControlProto);
    }
docs: Send the evaluatorControlProto to the Evaluator.
  
  @param evaluatorControlProto
  @throws java.lang.IllegalStateException if the remote ID hasn't been set via setRemoteID() prior to this call
  @throws java.lang.IllegalStateException if the Evaluator isn't running.