code: boolean success(T result) {
          State<T> oldState;
          synchronized (mutex) {
              if (state.isCompleted()) {
                  return false;
              }
              oldState = state;
              state = state.getSuccessState(result);
          }
          oldState.callSuccessCallbacks(result);
          return true;
  
      }
docs: To be called to set the result value.
  
  @param result the result value
  @return true if this result will be used (first result registered)