src/fn/PropertiesReadWriteTrait.php
private function property(string $name, bool $assert, ...$value)
    {
        $has = hasKey($name, $this->properties);
        if ($assert) {
            $has || fail\domain('missing magic-property %s in %s', $name, static::class);
            if ($value) {
                $this->properties[$name] = $value[0];
                return $this;
            }
            return $this->properties[$name];
        }
        return $has;
    }
private function property(string $name, bool $assert, ...$value)
    {
        $has = hasKey($name, $this->properties);
        if ($assert) {
            $has || fail\domain('missing magic-property %s in %s', $name, static::class);
            if ($value) {
                $this->properties[$name] = $value[0];
                return $this;
            }
            return $this->properties[$name];
        }
        return $has;
    }
@param string $name
@param bool   $assert
@param mixed  ...$value

@return $this|mixed