     @levels = attrs.values.split(" ")
     super(attrs, options)
 
-  validate: (value) ->
+  validate: (value, attr) ->
     if value not in @levels
       throw new Error("enum property '#{attr}' given invalid value: #{value},
                        valid values are: #{@levels}")

  array: (source) ->
    data = source.get('data')
    if @field? and (@field of data)
      result = source.get_column(@field)
    else
      length = source.get_length()
      length = 1 if not length?
      value = @value()
      result = (value for i in [0...length])
    return @transform(result)

  transform: (values) -> values

  validate: (value) -> true

#
# Numeric Properties

      throw new Error("field value for property '#{attr}' is not a string")

    if @fixed_value?
      @validate(@fixed_value, attr)

  value: () ->
    result = if @fixed_value? then @fixed_value else NaN
