 
   constructor: ->
     @properties = {}
-    @properties[name] = @buildProperty definition for own name, definition of @definitions
+    @properties[name] = @buildProperty definition for own name, definition of @_definitions
 
   buildProperty: (definition) ->
     name: definition.name

  @extend: (statics) ->
    class Result extends this
    Result.mixin(statics) if statics
    Result.definitions = {}
    Result

  @mixin: (obj) ->
    for own name, prop of obj.definitions
      @definitions[name] = prop
      @_mapDefinitionAliases prop
    this


      defaultValue = new type

    # We don't want to re-create aliases if it already exists
    if @_definitions[name] then mapAliases = false

    definition = @_definitions[name] =
      name: name
      type: type
      defaultValue: defaultValue
