public function set($class, $definition = [], array $params = [])
    {
        $normalizedDefinition = $this->normalizeDefinition($class, $definition);

        if (is_array($normalizedDefinition)) {
            $concrete = $normalizedDefinition['class'];
        } else {
            $concrete = $class;
        }

        if ($class !== $concrete) {
            $this->alias($concrete, $class);
        }

        $this->_definitions[$concrete] = $normalizedDefinition;
        $this->_params[$concrete] = $params;
        unset($this->_singletons[$concrete]);

        return $this;
    }