public function parameters(): MapInterface
    {
        if ($this->parameters) {
            return $this->parameters;
        }

        return $this->parameters = $this->elements->reduce(
            new Map('string', Parameter::class),
            function(Map $carry, $element): Map {
                return $carry->merge($element->parameters());
            }
        );
    }