original_string: protected function doMatch($actual)
      {
          $this->validateActual($actual);
  
          if ($this->isDeep()) {
              return $this->matchDeep($actual);
          }
  
          $actual = $this->actualToArray($actual);
  
          return $this->matchArrayIndex($actual);
      }
code: protected function doMatch($actual)
      {
          $this->validateActual($actual);
  
          if ($this->isDeep()) {
              return $this->matchDeep($actual);
          }
  
          $actual = $this->actualToArray($actual);
  
          return $this->matchArrayIndex($actual);
      }
code_tokens: protected function doMatch ( $ actual ) { $ this -> validateActual ( $ actual ) ; if ( $ this -> isDeep ( ) ) { return $ this -> matchDeep ( $ actual ) ; } $ actual = $ this -> actualToArray ( $ actual ) ; return $ this -> matchArrayIndex ( $ actual ) ; }
docstring: Matches if the actual value has a property, optionally matching
  the expected value of that property. If the deep flag is set,
  the matcher will use the ObjectPath utility to parse deep expressions.
  
  @code
  
  $this->doMatch('child->name->first', 'brian');
  
  @endcode
  
  @param  mixed $actual
  @return mixed
docstring_tokens: Matches if the actual value has a property optionally matching the expected value of that property . If the deep flag is set the matcher will use the ObjectPath utility to parse deep expressions .