original_string: protected function _capability()
      {
          if (!isset($this->_init['capability'])) {
              $this->_initCapability();
          }
  
          return ($args = func_num_args())
              ? $this->_init['capability']->query(func_get_arg(0), ($args > 1) ? func_get_arg(1) : null)
              : $this->_init['capability'];
      }
code: protected function _capability()
      {
          if (!isset($this->_init['capability'])) {
              $this->_initCapability();
          }
  
          return ($args = func_num_args())
              ? $this->_init['capability']->query(func_get_arg(0), ($args > 1) ? func_get_arg(1) : null)
              : $this->_init['capability'];
      }
code_tokens: protected function _capability ( ) { if ( ! isset ( $ this -> _init [ 'capability' ] ) ) { $ this -> _initCapability ( ) ; } return ( $ args = func_num_args ( ) ) ? $ this -> _init [ 'capability' ] -> query ( func_get_arg ( 0 ) , ( $ args > 1 ) ? func_get_arg ( 1 ) : null ) : $ this -> _init [ 'capability' ] ; }
docstring: Query server capability.
  
  Required because internal code can't call capability via magic method
  directly - it may not exist yet, the creation code may call capability
  recursively, and __get() doesn't allow recursive calls to the same
  property (chicken/egg issue).
  
  @return mixed  The capability object if no arguments provided. If
  arguments are provided, they are passed to the query()
  method and this value is returned.
  @throws Horde_Imap_Client_Exception
docstring_tokens: Query server capability .