private function unFreeze()
    {
        $this->isFrozen = false;
        $this->isReplay = null;

        foreach (static::schema()->getFields() as $field) {
            if ($field->getType()->isMessage()) {
                /** @var self $value */
                $value = $this->get($field->getName());
                if (empty($value)) {
                    continue;
                }

                if ($value instanceof Message) {
                    $value->unFreeze();
                    continue;
                }

                /** @var self $v */
                foreach ($value as $v) {
                    $v->unFreeze();
                }
            }
        }
    }