def infer_collection_type_from_name
      # the property name
      pname = @property_descriptor.name
      # The potential class name is the capitalized property name without a 'Collection' suffix.
      cname = pname.capitalize_first.sub(/Collection$/, '')
      jname = [@declarer.parent_module, cname].join('::')
      klass = eval jname rescue nil
      if klass then logger.debug { "Inferred #{declarer.qp} #{self} collection domain type #{klass.qp} from the property name." } end
      klass
    end
def infer_collection_type_from_name
      # the property name
      pname = @property_descriptor.name
      # The potential class name is the capitalized property name without a 'Collection' suffix.
      cname = pname.capitalize_first.sub(/Collection$/, '')
      jname = [@declarer.parent_module, cname].join('::')
      klass = eval jname rescue nil
      if klass then logger.debug { "Inferred #{declarer.qp} #{self} collection domain type #{klass.qp} from the property name." } end
      klass
    end
Returns the domain type for this property's collection Java property descriptor name.
 By convention, Jinx domain collection propertys often begin with a domain type
 name and end in 'Collection'. This method strips the Collection suffix and checks
 whether the prefix is a domain class.

 For example, the type of the property named +distributionProtocolCollection+
 is inferred as +DistributionProtocol+ by stripping the +Collection+ suffix,
 capitalizing the prefix and looking for a class of that name in this classifier's
 domain_module.

 @return [Class] the collection item type