<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def observable_copy(value, name, instance):
 """Return an observable container for HasProperties notifications This method creates a new container class to allow HasProperties instances to :code:`observe_mutations`. It returns a copy of the input value as this new class. The output class behaves identically to the input value's original class, except when it is used as a property on a HasProperties instance. In that case, it notifies the HasProperties instance of any mutations or operations. """


    container_class = value.__class__
    if container_class in OBSERVABLE_REGISTRY:
        observable_class = OBSERVABLE_REGISTRY[container_class]
    elif container_class in OBSERVABLE_REGISTRY.values():
        observable_class = container_class
    else:
        observable_class = add_properties_callbacks(
            type(container_class)(
                str('Observable{}'.format(container_class.__name__)),
                (container_class,),
                MUTATOR_CATEGORIES,
            )
        )
        OBSERVABLE_REGISTRY[container_class] = observable_class
    value = observable_class(value)
    value._name = name
    value._instance = instance
    return value