def copy(self, empty=False):
        """returns an independent copy of the current object."""
        
        # Create an empty object
        newobject = self.__new__(self.__class__)
        if empty:
            return
        
        # And fill it !
        for prop in ["_properties","_side_properties",
                     "_derived_properties","_build_properties"
                     ]:
            if prop not in dir(self):
                continue
            try: # Try to deep copy because but some time it does not work (e.g. wcs) 
                newobject.__dict__[prop] = copy.deepcopy(self.__dict__[prop])
            except:
                newobject.__dict__[prop] = copy.copy(self.__dict__[prop])
                
        # This be sure things are correct
        newobject._update_()
        # and return it
        return newobject
returns an independent copy of the current object.