'Take in another type (either flat string or another
CollectionTypeDescription) and determine if this collection contains
subcollections matching that type.
The way this is used in map/reduce it seems to make the most sense
for this to return True if these subtypes are proper (i.e. a type
is not considered to have subcollections of its own type).'

def has_subcollections_of_type(self, other_collection_type):

    if hasattr(other_collection_type, 'collection_type'):
        other_collection_type = other_collection_type.collection_type
    collection_type = self.collection_type
    return (collection_type.endswith(other_collection_type) and (collection_type != other_collection_type))
