'Create new instance or return current instance
Basically this method of construction allows us to
short-circuit creation of references to already-
referenced instance methods.  The key corresponding
to the target is calculated, and if there is already
an existing reference, that is returned, with its
deletionMethods attribute updated.  Otherwise the
new instance is created and registered in the table
of already-referenced methods.'

def __new__(cls, target, onDelete=None, *arguments, **named):

    key = cls.calculateKey(target)
    current = cls._allInstances.get(key)
    if (current is not None):
        current.deletionMethods.append(onDelete)
        return current
    else:
        base = super(BoundMethodWeakref, cls).__new__(cls)
        cls._allInstances[key] = base
        base.__init__(target, onDelete, *arguments, **named)
        return base
