'print complex using the specified indent (n) and newline (nl).'

def print_object(self, d, h, n, nl=False):

    s = []
    cls = d.__class__
    md = d.__metadata__
    if (d in h):
        s.append('(')
        s.append(cls.__name__)
        s.append(')')
        s.append('...')
        return ''.join(s)
    h.append(d)
    if nl:
        s.append('\n')
        s.append(self.indent(n))
    if (cls != Object):
        s.append('(')
        if isinstance(d, Facade):
            s.append(md.facade)
        else:
            s.append(cls.__name__)
        s.append(')')
    s.append('{')
    for item in d:
        if self.exclude(d, item):
            continue
        item = self.unwrap(d, item)
        s.append('\n')
        s.append(self.indent((n + 1)))
        if isinstance(item[1], (list, tuple)):
            s.append(item[0])
            s.append('[]')
        else:
            s.append(item[0])
        s.append('    =    ')
        s.append(self.process(item[1], h, n, True))
    s.append('\n')
    s.append(self.indent(n))
    s.append('}')
    h.pop()
    return ''.join(s)
