code: public synchronized void start() {
          checkState(setupConversion);
          checkState(initialized);
  
          if (running) {
              return;
          }
  
          LOGGER.info("starting raft agent");
  
          timer.start();
          raftNetworkClient.start();
          raftAlgorithm.start();
  
          running = true;
      }
docs: Start the local Raft server.
  <p/>
  This call <strong>must</strong> only be made <strong>after</strong>:
  <ol>
  <li>one of {@link RaftAgent#setupJacksonAnnotatedCommandSerializationAndDeserialization(Class)} or
  {@link RaftAgent#setupCustomCommandSerializationAndDeserialization(CommandSerializer, CommandDeserializer)}</li>
  <li>{@link RaftAgent#initialize()}</li>
  </ol>
  Following a successful call to {@code start()} callers
  <strong>no longer</strong> have exclusive access to system resources.
  <p/>
  Once a successful call to {@code start()} is made subsequent calls are noops.
  
  @throws IllegalStateException if this method is called before {@code RaftAgent} is initialized