def METHOD_NAME(function):
    """Decorator to ensure the returned value is always a copy and never a direct reference
    "Everything is a Reference" is not nice when dealing with value-types like a Vector or Matrix.
    Since you hardly ever want to manipulate internal state of for example a SceneNode, most get methods
    should return a copy instead of the actual object. This decorator ensures that happens.
    """
    def copy_function(*args, **kwargs):
        return copy.deepcopy(function(*args, **kwargs))
    return copy_function