class WrongType(BASE):
     prop = declarative.PropertyDefinition(
         allowed_values=['foo', 'bar'], default='baz')
 class TestType(BASE):
     simple_prop = declarative.PropertyDefinition()
     immutable_internal = declarative.PropertyDefinition(mutable=False,
                                                         internal=True)
     prop_with_allowed = declarative.PropertyDefinition(
         allowed_values=["Foo", True, 42])
 class DerivedType(TestType):
     prop_with_allowed = declarative.PropertyDefinition(
         allowed_values=["Foo", True, 42], required=True, default=42)
 class TestType(BASE):
     defaulted = declarative.PropertyDefinition(default=42)
     read_only = declarative.PropertyDefinition(readonly=True)
     required_attr = declarative.PropertyDefinition(required=True)