Disco: a container-interop compatible dependency injection container

Code
<?php

use bitExpert\Disco\Annotations\Bean;
use 
bitExpert\Disco\Annotations\Configuration;
use 
bitExpert\Disco\AnnotationBeanFactory;

class 
Foo
{
    public function 
bar() : string
    
{
        return 
'Disco dancing';
    }
}

/**
 * @Configuration
 */
class DiConfig
{
    
/**
     * @Bean
     */
     
public function foo() : Foo
     
{
         return new 
Foo();
     }

    
/**
     * @Bean({"singleton"=false})
     */
    
public function specialFoo() : Foo
    
{
        return new 
Foo();
    }
}

// $beanFactory uses container interop
$parameters = [];
$beanFactory = new AnnotationBeanFactory(DiConfig::class, $parameters);

$foo1 $beanFactory->get('foo');
$foo2 $beanFactory->get('foo');

echo 
$foo1->bar();

dump($foo1 === $foo2);

$foo1 $beanFactory->get('specialFoo');
$foo2 $beanFactory->get('specialFoo');

dump($foo1 === $foo2);
Result
Disco dancing
true

false
Used Versions
PHP 7.1, Zend 3.0, Symfony 3.2, Laravel 5.2, PHPUnit 5.6, Doctrine 2.6