public function getMetadata($key = null)
    {
        if (is_null($this->metadataCache))
        {
            $this->metadataCache = json_decode($this->metadata, true);
        }

        if (is_null($key))
        {
            return $this->metadataCache;
        }

        if (isset($this->metadataCache[$key]))
        {
            return $this->metadataCache[$key];
        }

        return null;
    }