def determine_type_from_primitive(primitive)
      type = nil
      descendants.select(&:primitive).reverse_each do |descendant|
        descendant_primitive = descendant.primitive
        next unless primitive <= descendant_primitive
        type = descendant if type.nil? or type.primitive > descendant_primitive
      end
      type
    end
def determine_type_from_primitive(primitive)
      type = nil
      descendants.select(&:primitive).reverse_each do |descendant|
        descendant_primitive = descendant.primitive
        next unless primitive <= descendant_primitive
        type = descendant if type.nil? or type.primitive > descendant_primitive
      end
      type
    end
Return the class given a primitive

 @param [Class] primitive

 @return [Class]

 @return [nil]
   nil if the type cannot be determined by the primitive

 @api private