'Make a shallow copy of this instances attributes, excluding methods.
This is usually used when an RPC has been specified with some configuration
options and is being used as a template for multiple RPCs outside of a
developer\'s easy control.'

def Clone(self):

    if (self.state != RPC.IDLE):
        raise AssertionError('Cannot    clone    a    call    already    in    progress')
    clone = self.__class__()
    for (k, v) in self.__dict__.iteritems():
        setattr(clone, k, v)
    return clone
