protected function getObjectInStage($stage)
    {
        if (!class_exists($this->ObjectClass)) {
            throw new UnexpectedDataException("Invalid Class '{$this->ObjectClass}' in ChangeSetItem #{$this->ID}");
        }

        // Ignore stage for unversioned objects
        if (!$this->isVersioned()) {
            return DataObject::get_by_id($this->ObjectClass, $this->ObjectID);
        }

        // Get versioned object
        return Versioned::get_by_stage($this->ObjectClass, $stage)->byID($this->ObjectID);
    }