code: synchronized void processFinished() {
          final InternalState required = this.requiredState;
          final InternalState state = this.internalState;
          // If the server was not stopped
          if(required == InternalState.STOPPED && state == InternalState.PROCESS_STOPPING) {
              finishTransition(InternalState.PROCESS_STOPPING, InternalState.PROCESS_STOPPED);
          } else {
              this.requiredState = InternalState.STOPPED;
              if ( !(internalSetState(getTransitionTask(InternalState.PROCESS_STOPPING), internalState, InternalState.PROCESS_STOPPING)
                      && internalSetState(getTransitionTask(InternalState.PROCESS_REMOVING), internalState, InternalState.PROCESS_REMOVING)
                      && internalSetState(getTransitionTask(InternalState.STOPPED), internalState, InternalState.STOPPED)) ){
                  this.requiredState = InternalState.FAILED;
                  internalSetState(null, internalState, InternalState.PROCESS_STOPPED);
              }
          }
      }
docs: Notification that the server process finished.