public function defineProperty(string $property, $constraints = [], $defaultValue = null)
    {
        $this->validProperties[$property] = $constraints;

        if (!is_null($defaultValue)) {
            $this->defaultValues[$property] = $defaultValue;
        }
    }