/**
  * @param $data
  * @return null|static
  */
 static function deserialize($data)
 {
     $result = null;
     $arr = null;
     if (is_string($data)) {
         $arr = json_decode($data, true);
     } else {
         if (is_array($data)) {
             $arr = $data;
         } else {
             if (is_object($data)) {
                 $arr = get_object_vars($data);
             }
         }
     }
     if ($arr) {
         /** @var $result DeserializeTrait */
         $result = new static();
         ObjectHelper::copyExistingProperties($arr, $result);
         $result->deserializeExtra($arr);
     }
     return $result;
 }