/**
  * Attempts to locate the specified identifier.
  *
  * @param Identifier $identifier
  * @return string
  */
 private function locateIdentifier(Identifier $identifier)
 {
     if ($identifier->isClass()) {
         return $this->locateClassByName($identifier->getName());
     }
     if ($identifier->isFunction()) {
         return $this->locateFunctionByName($identifier->getName());
     }
 }
 /**
  * Attempts to locate the specified identifier
  *
  * @param Identifier $identifier
  * @return string
  */
 private function locateIdentifier(Identifier $identifier)
 {
     if ($identifier->isClass()) {
         return $this->locateClassByName($identifier->getName());
     }
     if ($identifier->isFunction()) {
         return $this->locateFunctionByName($identifier->getName());
     }
     throw new Exception\UnloadableIdentifierType('AutoloadSourceLocator cannot locate ' . $identifier->getType()->getName());
 }
 /**
  * @param Identifier $identifier
  *
  * @return null|string
  */
 private function getInternalReflectionClassName(Identifier $identifier)
 {
     if (!$identifier->isClass()) {
         return null;
     }
     $name = $identifier->getName();
     if (!(class_exists($name, false) || interface_exists($name, false) || trait_exists($name, false))) {
         return null;
         // not an available internal class
     }
     $reflection = new \ReflectionClass($name);
     return $reflection->getFileName() ? $reflection->getName() : null;
 }
 public function testIsTypesForFunction()
 {
     $identifier = new Identifier('Foo', new IdentifierType(IdentifierType::IDENTIFIER_FUNCTION));
     $this->assertFalse($identifier->isClass());
     $this->assertTrue($identifier->isFunction());
 }