/**
  * @return \Donquixote\HastyReflectionCommon\Reflection\FunctionLike\MethodReflectionInterface[]
  */
 protected function findMethods()
 {
     $methods = $this->getOwnMethods();
     $parentClass = $this->extends->getParentClass();
     if (NULL !== $parentClass) {
         $methods += $parentClass->getMethods();
     }
     foreach ($this->interfacesAll->getAllInterfaces(FALSE) as $interface) {
         $methods += $interface->getOwnMethods();
     }
     return $methods;
 }
 /**
  * @return bool
  */
 protected function calcHasMethods()
 {
     if ($this->ownBody->hasOwnMethods()) {
         return TRUE;
     }
     if (NULL !== ($parentClass = $this->extends->getParentClass())) {
         if ($parentClass->hasMethods()) {
             return TRUE;
         }
     }
     foreach ($this->interfacesAll->getAllInterfaces(FALSE) as $interface) {
         if ($interface->hasMethods()) {
             return TRUE;
         }
     }
     return FALSE;
 }
 /**
  * Gets the interfaces directly/explicitly implemented or extended by this
  * class or interface.
  *
  * This does not include interfaces implemented by parent classes, or extended
  * by explicitly implemented interfaces.
  *
  * If the class itself is an interface, it will NOT be part of the returned
  * array.
  *
  * Some implementations with no access to a parser might simply return ALL
  * interfaces, but without the class itself, if it is an interface.
  *
  * @return \Donquixote\HastyReflectionCommon\Reflection\ClassLike\ClassLikeReflectionInterface[]
  */
 function getOwnInterfaces()
 {
     return $this->allInterfaces->getAllInterfaces(FALSE);
 }
 /**
  * @param string $interfaceName
  * @param bool $includeSelf
  *
  * @return bool
  */
 function extendsOrImplementsInterface($interfaceName, $includeSelf)
 {
     return $this->interfacesAll->extendsOrImplementsInterface($interfaceName, $includeSelf);
 }