protected function setMetadata($metadata)
    {
        if ($metadata !== null && !($metadata instanceof Metadata)) {
            throw new \InvalidArgumentException('$metadata must be instance of Metadata');
        }

        $this->metadata = $metadata;
    }