docs: function(state, data){
      state = resolveValue(this, this.setState, state, 'stateRA_') || STATE.UNDEFINED;
  
      var stateCode = String(state);
  
      if (!STATE.isValid(stateCode))
      {
        /** @cut */ basis.dev.error('Wrong value for state (value has been ignored)', stateCode);
        return false;
      }
  
      // try fetch data from state
      if (this.stateRA_ && data === undefined)
        data = state.data;
  
      // set new state for object
      if (this.state != stateCode || this.state.data != data)
      {
        var oldState = this.state;
  
        this.state = Object(stateCode);
        this.state.data = data;
  
        this.emit_stateChanged(oldState);
  
        return true; // state was changed
      }
  
      return false; // state wasn't changed
    }