public function bind($name, $value, $shared = false, $protected = false)
    {
        if (is_string($value)) {
            $value = function (Container $container) use ($value) {
                // We must check the keys exists or not, if exists, just get it instead new one.
                if ($container->exists($value)) {
                    return $container->get($value);
                }

                return $container->newInstance($value);
            };
        }

        return $this->set($name, $value, $shared, $protected);
    }