public function set(string $abstract, $concrete, $singleton = false) {
        if ($this->has($abstract)) {
            throw new ContainerException(
                sprintf('An entry with the id "%s" already exists.', $abstract)
            );
        }

        $this->bindings[$abstract] = new ContainerEntry($abstract, $concrete, $singleton);
        return true;
    }