src/AbstractMessage.php
final public function validate()
    {
        foreach (static::schema()->getRequiredFields() as $field) {
            if (!$this->has($field->getName())) {
                throw new RequiredFieldNotSet($this, $field);
            }
        }

        return $this;
    }
final public function validate()
    {
        foreach (static::schema()->getRequiredFields() as $field) {
            if (!$this->has($field->getName())) {
                throw new RequiredFieldNotSet($this, $field);
            }
        }

        return $this;
    }
todo: recursively validate nested messages?
{@inheritdoc}
@return static