public function addParameter(ParameterGenerator $parameter)
    {
        $name = $parameter->getName();
        if (isset($this->parameters[$name]) === true) {
            throw new InvalidArgumentException('A parameter with the name "' . $name . '" is already added.');
        }

        $this->parameters[$name] = $parameter;

        return $this;
    }