public function property($name)
    {
        $this->typeCheck->property(func_get_args());

        foreach ($this->properties() as $property) {
            if ($property->name() === $name) {
                return $property;
            }
        }

        throw new Exception\UndefinedPropertyException($this->className(), $name);
    }
public function property($name)
    {
        $this->typeCheck->property(func_get_args());

        foreach ($this->properties() as $property) {
            if ($property->name() === $name) {
                return $property;
            }
        }

        throw new Exception\UndefinedPropertyException($this->className(), $name);
    }
@param string $name

@return PropertyDefinition