user: Explain IDOverrideLibrary(bpy_struct) in complete detail according to the official Blender documentation.

assistant: # IDOverrideLibrary(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.IDOverrideLibrary(*bpy_struct*)
:   Struct gathering all data needed by overridden linked IDs

    hierarchy_root
    :   Library override ID used as root of the override hierarchy this ID is a member of

        Type:
        :   [`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID"), (readonly)

    is_in_hierarchy
    :   Whether this library override is defined as part of a library hierarchy, or as a single, isolated and autonomous override

        Type:
        :   boolean, default True

    is_system_override
    :   Whether this library override exists only for the override hierarchy, or if it is actually editable by the user

        Type:
        :   boolean, default False

    properties
    :   List of overridden properties

        Type:
        :   [`IDOverrideLibraryProperties`](bpy.types.IDOverrideLibraryProperties.html#bpy.types.IDOverrideLibraryProperties "bpy.types.IDOverrideLibraryProperties") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`IDOverrideLibraryProperty`](bpy.types.IDOverrideLibraryProperty.html#bpy.types.IDOverrideLibraryProperty "bpy.types.IDOverrideLibraryProperty"), (readonly)

    reference
    :   Linked ID used as reference by this override

        Type:
        :   [`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID"), (readonly)

    operations_update()
    :   Update the library override operations based on the differences between this override ID and its reference

    reset(*\**, *do_hierarchy=True*, *set_system_override=False*)
    :   Reset this override to match again its linked reference ID

        Parameters:
        :   - **do_hierarchy** (*boolean**,* *(**optional**)*) – Also reset all the dependencies of this override to match their reference linked IDs
            - **set_system_override** (*boolean**,* *(**optional**)*) – Reset all user-editable overrides as (non-editable) system overrides

    destroy(*\**, *do_hierarchy=True*)
    :   Delete this override ID and remap its usages to its linked reference ID instead

        Parameters:
        :   **do_hierarchy** (*boolean**,* *(**optional**)*) – Also delete all the dependencies of this override and remap their usages to their reference linked IDs

    resync(*scene*, *\**, *view_layer=None*, *residual_storage=None*, *do_hierarchy_enforce=False*, *do_whole_hierarchy=False*)
    :   Resync the data-block and its sub-hierarchy, or the whole hierarchy if requested

        Parameters:
        :   - **scene** ([`Scene`](bpy.types.Scene.html#bpy.types.Scene "bpy.types.Scene"), (never None)) – The scene to operate in (for contextual things like keeping active object active, ensuring all overridden objects remain instantiated, etc.)
            - **view_layer** ([`ViewLayer`](bpy.types.ViewLayer.html#bpy.types.ViewLayer "bpy.types.ViewLayer"), (optional)) – The view layer to operate in (same usage as the `scene` data, in case it is not provided the scene’s collection will be used instead)
            - **residual_storage** ([`Collection`](bpy.types.Collection.html#bpy.types.Collection "bpy.types.Collection"), (optional)) – Collection where to store objects that are instantiated in any other collection anymore (garbage collection, will be created if needed and none is provided)
            - **do_hierarchy_enforce** (*boolean**,* *(**optional**)*) – Enforce restoring the dependency hierarchy between data-blocks to match the one from the reference linked hierarchy (WARNING: if some ID pointers have been purposely overridden, these will be reset to their default value)
            - **do_whole_hierarchy** (*boolean**,* *(**optional**)*) – Resync the whole hierarchy this data-block belongs to, not only its own sub-hierarchy

        Returns:
        :   Success, Whether the resync process was successful or not

        Return type:
        :   boolean

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type