def empty_value(attribute)
      if abstract? then
        prop = property(attribute)
        # the Java attribute type
        jtype = prop.property_descriptor.attribute_type if JavaProperty === prop
        # A primitive is either a boolean or a number (String is not primitive).
        if jtype and jtype.primitive? then
          type.name == 'boolean' ? false : 0
        end
      else
        # Since this class is not abstract, create a prototype instance on demand and make
        # a copy of the initialized collection value from that instance.
        @prototype ||= new
        value = @prototype.send(attribute) || return
        value.class.new
      end
    end
def empty_value(attribute)
      if abstract? then
        prop = property(attribute)
        # the Java attribute type
        jtype = prop.property_descriptor.attribute_type if JavaProperty === prop
        # A primitive is either a boolean or a number (String is not primitive).
        if jtype and jtype.primitive? then
          type.name == 'boolean' ? false : 0
        end
      else
        # Since this class is not abstract, create a prototype instance on demand and make
        # a copy of the initialized collection value from that instance.
        @prototype ||= new
        value = @prototype.send(attribute) || return
        value.class.new
      end
    end
Returns an empty value for the given attribute.
 * If this class is not abstract, then the empty value is the initialized value.
 * Otherwise, if the attribute is a Java primitive number then zero.
 * Otherwise, if the attribute is a Java primitive boolean then +false+.
 * Otherwise, the empty value is nil.

 @param [Symbol] attribute the target attribute
 @return [Numeric, Boolean, Enumerable, nil] the empty attribute value