def METHOD_NAME(type_, *trans):
    """Return a new type transformed according to the given rules.
    Applies each of the transformation rules in trans in order.
    If an element of trans is a string, return it.
    If an element of trans is a function, call it with type_ as its only
    argument.
    If an element of trans is a dict, search type_ in its keys. If type_ is
    a key, use the value as a transformation rule for type_. Otherwise, if
    None is a key use the value as a transformation rule for type_.
    Otherwise, return type_.
    Parameters
    ----------
    type_ : str
        Type to transform.
    trans : list of function or dict
        Type transformation rules.
    """
    if len(trans) == 0:
        raise ValueError
    res = type_
    for t in trans:
        res = _transform_type(res, t)
    return res