'Return a new copy of ``self``.  The new copy will not be frozen.
:param deep: If true, create a deep copy; if false, create
a shallow copy.'

def copy(self, deep=True):

    if deep:
        return copy.deepcopy(self)
    else:
        return self.__class__(self)
