public function create(string $class, $args = [], $explicit = null)
    {
        // check first for definition even if auto wiring is on
        $def = $this->getDefinition($class);
        if ($def === null && !$this->auto_wiring) {
            throw new ClassDefinitionNotFoundException($class);
        } elseif ($def !== null) {
            return $this->binding_resolver->resolve(
                $this->getDefinition($class),
                $this,
                $args,
                $explicit
            );
        }

        // process class dependencies with reflection
        $args = $this->resolver->resolve($class, $this, $args, $explicit);

        // instantiate class with resolved dependencies and args if apply
        return $this->instantiator->instantiate($class, $args);
    }