public function registerNamedType($typeName)
    {
        if (isset($this->namedTypes[$typeName])) {
            throw new \InvalidArgumentException("`$typeName` is already registerd.");
        }

        $type = new \ReflectionClass($typeName);
        $this->namedTypes[$typeName] = $type;

        return $this;
    }