code: public function saveItem($objItem, $timestamp = null)
      {
          if (null === $timestamp) {
              // @codingStandardsIgnoreStart
              @\trigger_error(
                  'Not passing a timestamp has been deprecated and will cause an error in MetaModels 3',
                  E_USER_DEPRECATED
              );
              // @codingStandardsIgnoreEnd
          }
  
          $baseAttributes = $this->saveBaseColumns($objItem, $timestamp ?: \time());
          if ($this->isTranslated()) {
              $strActiveLanguage = $this->getActiveLanguage();
          } else {
              $strActiveLanguage = null;
          }
  
          $arrAllIds = array();
          if ($objItem->isVariantBase()) {
              $objVariants = $this->findVariantsWithBase(array($objItem->get('id')), null);
              foreach ($objVariants as $objVariant) {
                  /** @var IItem $objVariant */
                  $arrAllIds[] = $objVariant->get('id');
              }
          }
  
          $this->updateVariants($objItem, $strActiveLanguage, $arrAllIds, $baseAttributes);
  
          // Tell all attributes that the model has been saved. Useful for alias fields, edit counters etc.
          foreach ($this->getAttributes() as $objAttribute) {
              if ($objItem->isAttributeSet($objAttribute->getColName())) {
                  $objAttribute->modelSaved($objItem);
              }
          }
      }
docs: {@inheritdoc}