final protected function makePropertyStatic($property_name)
    {
        $reflector = new ReflectionObject($this);
        if ($reflector->hasProperty($property_name)) {
            $property = $reflector->getProperty($property_name);
            if ($property->isPublic() && !$property->isStatic()) {
                $this->static_properties[] = $property_name;
            } else {
                throw new SwatInvalidPropertyException(
                    "Property {$property_name} is not a non-static public " .
                        "property and cannot be made static.",
                    0,
                    $this,
                    $property_name
                );
            }
        } else {
            throw new SwatInvalidPropertyException(
                "Can not make non-existant property {$property_name} static.",
                0,
                $this,
                $property_name
            );
        }
    }