 		@_id = @constructor[CounterKey]
 
 		# Set the default values for this object
-		for name, descriptor of @constructor[DefinedPropertiesKey]
+		for name, descriptor of @_propertyList()
 			if descriptor.set
 				initialValue = Utils.valueOrDefault(options?[name], @_getPropertyDefaultValue(name));
 				if not (initialValue in [null, undefined])

			@_getPropertyDefaultValue k

	_getPropertyDefaultValue: (k) ->
		@constructor[DefinedPropertiesKey][k]["default"]

	_propertyList: ->
		@constructor[DefinedPropertiesKey]


		# See if we need to add this property to the internal properties class
		if @ isnt BaseClass
			descriptor.enumerable ?= not descriptor.hasOwnProperty('enumerable')
			descriptor.propertyName = propertyName

			if not descriptor.excludeFromProps
