'Return the name of this type as it would be expressed by Cassandra,
optionally fully qualified. If subtypes is not None, it is expected
to be a list of other CassandraType subclasses, and the output
string includes the Cassandra names for those subclasses as well,
as parameters to this one.
Example:
>>> LongType.cass_parameterized_type_with(())
\'LongType\'
>>> LongType.cass_parameterized_type_with((), full=True)
\'org.apache.cassandra.db.marshal.LongType\'
>>> SetType.cass_parameterized_type_with([DecimalType], full=True)
\'org.apache.cassandra.db.marshal.SetType(org.apache.cassandra.db.marshal.DecimalType)\''

@classmethod
def cass_parameterized_type_with(cls, subtypes, full=False):

    cname = cls.cassname
    if (full and ('.' not in cname)):
        cname = (apache_cassandra_type_prefix + cname)
    if (not subtypes):
        return cname
    sublist = ',    '.join((styp.cass_parameterized_type(full=full) for styp in subtypes))
    return ('%s(%s)' % (cname, sublist))
