human
Complete the below
def add_type(type_, func=None):

    ''''Adds a custom type to L{TYPE_MAP}. A custom type allows fine grain control
    of what to encode to an AMF data stream.
    @raise TypeError: Unable to add as a custom type (expected a class or callable).
    @raise KeyError: Type already exists.
    @see: L{get_type} and L{remove_type}'
    '''

=====
Here to encode to an AMF data stream?
assistant
#Here to encode to an AMF data stream.
    def _check_type(type_):
        if (not (isinstance(type_, python.class_types) or hasattr(type_, '__call__'))):
            raise TypeError((('Unable    to    add    ' % '    as    a    custom    type    (expected    a    class    or    callable)') % (type_,)))
    if isinstance(type_, list):
        type_ = tuple(type_)
    if (type_ in TYPE_MAP):
        raise KeyError(('Type    %r    already    exists' % (type_,)))
    if isinstance(type_, types.TupleType):
        for x in type_:
            _check_type(x)
    else:
        _check_type(type_)
    TYPE_MAP[type_] = func