public function getCaption()
    {
        if ($this->_caption === null) {
            // if its a none json value, it has been observed by bind()
            if (!Json::isJson($this->getKey('caption', false))) {
                $this->_caption = $this->getKey('caption');
            } else {
                $this->_caption = I18n::findActive($this->getCaptionArray());
            }
        }
    
        return $this->_caption;
    }