docs: public void queueStateChange(IState state)
      {
          synchronized(this.stateQueue)
          {
              if (this.stateQueue.size() != 0)
              {
                  // The queue is only a method for ensuring the transition is carried out on the correct thread - transitions should
                  // never happen so quickly that we end up with more than one state in the queue.
                  System.out.println("STATE ERROR - multiple states in the queue.");
              }
              this.stateQueue.add(state);
              System.out.println(getName() + " request state: " + state);
              TCPUtils.Log(Level.INFO, "-------- " + getName() + " request state: " + state + " --------");
          }
      }