public function enableInjecterDetection(array $blacklist = array(), $version = PHP_VERSION)
    {
        if (version_compare($version, '5.4.0') <= 0) {

            throw new RunTimeException('This feature requires PHP 5.4 or higher');

        }

        if ($this->detector === null) {
            $this->setDetector(new SimpleDetector);
        }

        $blacklist = $this->buildDimdBlacklist($blacklist);
        $this->dimbBlacklist = $blacklist;

        $this->onResolving(function ($object) use ($blacklist) {
            $class = get_class($object);

            $reflection = new ReflectionClass($class);

            $methods = $reflection->getMethods();

            /**
             * Cycle thru all methods. Filtering in the next control-construct
             */
            foreach ($methods as $method) {

                /**
                 * This is not a complex detection, but most injecter methods are starting with a set[...]
                 */
                if ($this->detector->detect($method)) {
                    
                    // Just check if the method is in the blacklist
                    if (in_array($method->name, $blacklist) || (isset($blacklist['_CLASSES_'][$class]) && in_array($method->name, $blacklist['_CLASSES_'][$class]))) {

                        continue;

                    }

                    try {
                        
                        $dependencies = $this->getDependencies($method->getParameters());

                        /**
                         * We keep this line in the try/catch block as well in order to skip it if an exception is thrown,
                         * otherwise we would get native PHP errors.. Nasty.
                         */
                        call_user_func_array(array($object, $method->name), $dependencies);

                    /**
                     * If an ParameterResolveException is thrown it hit a non class injector method and we simply ignore these
                     * We do NOT catch ResolveExceptions since a not found class is something we' re not responsible for.
                     */
                    } catch (ParameterResolveException $e) {
                    }
                }
            }
            
            return $object;

        }, -255);
    }