code: protected function parseFirstMethodStatement($source)
      {
          $this->typeCheck->parseFirstMethodStatement(func_get_args());
  
          $tokens = token_get_all('<?php '.$source);
          array_shift($tokens);
          array_shift($tokens);
  
          $inModifiers = true;
          $inName = false;
          $inArguments = false;
          $parenthesisDepth = 0;
          $inBody = false;
          $inStatement = false;
          $statement = '';
          while ($token = next($tokens)) {
              $token = $this->normalizeToken($token);
  
              if ($inStatement) {
                  $statement .= $token[1];
                  if (';' === $token[0]) {
                      break;
                  }
              } elseif ($inBody) {
                  if (
                      T_WHITESPACE !== $token[0] &&
                      T_COMMENT !== $token[0] &&
                      T_DOC_COMMENT !== $token[0]
                  ) {
                      $inStatement = true;
                      $statement .= $token[1];
                  }
              } elseif ($inArguments) {
                  if (')' === $token[0]) {
                      $parenthesisDepth --;
                  } elseif ('(' === $token[0]) {
                      $parenthesisDepth ++;
                  }
  
                  if ('{' === $token[0] && 0 === $parenthesisDepth) {
                      $inBody = true;
                  }
              } elseif ($inName) {
                  if ('(' === $token[0]) {
                      $inArguments = true;
                      $parenthesisDepth ++;
                  }
              } elseif ($inModifiers) {
                  if (T_FUNCTION === $token[0]) {
                      $inName = true;
                  }
              }
          }
  
          return $statement;
      }
docs: @param string $source
  
  @return string