public function handleBeforeFieldUpdate(array $fieldData)
    {
        static $running = array();

        // Process any events
        $trackEngine = $this->getTrackEngine();

        if (! $trackEngine) {
            return array();
        }

        $event = $trackEngine->getFieldBeforeUpdateEvent();

        if (! $event) {
            return array();
        }

        if (isset($running[$this->_respTrackId])) {
            throw new \Gems_Exception(sprintf(
                    "Nested calls to '%s' track before field update event are not allowed.",
                    $trackEngine->getName()
                    ));
        }
        $running[$this->_respTrackId] = true;

        $output = $event->prepareFieldUpdate($fieldData, $this);

        unset($running[$this->_respTrackId]);

        return $output;
    }