protected function findImplementsOrTraitUse($fullQualifiedNamespace, $type) {
        $fullQualifiedNamespace = $this->trimNamespace($fullQualifiedNamespace);

        $phpClasses = [];

        $method = 'get' . ucfirst($type);

        foreach ($this->localCache as $phpClass) {
            $implementsOrTrait = $phpClass->$method();
            if (is_array($implementsOrTrait) && in_array($fullQualifiedNamespace, $implementsOrTrait)) {
                $phpClasses[] = $phpClass;
                $phpClasses   = array_merge($phpClasses, $this->findExtends($phpClass->getFullQualifiedNamespace()));
            }
        }

        return $this->arrayUniqueObject($phpClasses);
    }