public function pathElement($kind, $identifier = null, array $options = [])
    {
        $options += [
            'identifierType' => null
        ];

        if (!empty($this->path) && $this->state() !== Key::STATE_NAMED) {
            throw new InvalidArgumentException(
                'Cannot add pathElement because the previous element is missing an id or name'
            );
        }

        $pathElement = $this->normalizeElement($kind, $identifier, $options['identifierType']);

        $this->path[] = $pathElement;

        return $this;
    }