src/main/php/ioc/Injector.php
private function getAnnotatedBinding(\ReflectionClass $class)
    {
        $annotations = annotationsOf($class);
        if ($class->isInterface() && $annotations->contain('ImplementedBy')) {
            return $this->bind($class->getName())
                    ->to($this->findImplementation($annotations, $class->getName()));
        } elseif ($annotations->contain('ProvidedBy')) {
            return $this->bind($class->getName())
                    ->toProviderClass(
                        $annotations->firstNamed('ProvidedBy')
                                ->getProviderClass()
                    );
        }

        return $this->getImplicitBinding($class);
    }
private function getAnnotatedBinding(\ReflectionClass $class)
    {
        $annotations = annotationsOf($class);
        if ($class->isInterface() && $annotations->contain('ImplementedBy')) {
            return $this->bind($class->getName())
                    ->to($this->findImplementation($annotations, $class->getName()));
        } elseif ($annotations->contain('ProvidedBy')) {
            return $this->bind($class->getName())
                    ->toProviderClass(
                        $annotations->firstNamed('ProvidedBy')
                                ->getProviderClass()
                    );
        }

        return $this->getImplicitBinding($class);
    }
returns binding denoted by annotations on type to create

An annotated binding is when the type to create is annotated with
@ImplementedBy oder @ProvidedBy.

If this is not the case it will fall back to the implicit binding.

@param   \ReflectionClass  $class
@return  \stubbles\ioc\binding\Binding