code: private function methodInfo($obj, \ReflectionMethod $reflectionMethod)
      {
          // getDeclaringClass() returns LAST-declared/overridden
          $declaringClassName = $reflectionMethod->getDeclaringClass()->getName();
          $phpDoc = $this->phpDoc->getParsed($reflectionMethod);
          $vis = 'public';
          if ($reflectionMethod->isPrivate()) {
              $vis = 'private';
          } elseif ($reflectionMethod->isProtected()) {
              $vis = 'protected';
          }
          $info = array(
              'implements' => null,
              'inheritedFrom' => $declaringClassName != \get_class($obj)
                  ? $declaringClassName
                  : null,
              'isAbstract' => $reflectionMethod->isAbstract(),
              'isDeprecated' => $reflectionMethod->isDeprecated() || isset($phpDoc['deprecated']),
              'isFinal' => $reflectionMethod->isFinal(),
              'isStatic' => $reflectionMethod->isStatic(),
              'params' => $this->getParams($reflectionMethod, $phpDoc),
              'phpDoc' => $phpDoc,
              'visibility' => $vis,   // public | private | protected | debug | magic
          );
          unset($info['phpDoc']['param']);
          return $info;
      }
docs: Get method info
  
  @param object            $obj              object method belongs to
  @param \ReflectionMethod $reflectionMethod ReflectionMethod instance
  
  @return array