protected void delegateAndroidClassBundle(@Nonnull WorkspaceResource resource, @Nonnull AndroidClassBundle bundle) {
		bundle.addBundleListener(new BundleListener<>() {
			@Override
			public void onNewItem(@Nonnull String key, @Nonnull AndroidClassInfo cls) {
				Unchecked.checkedForEach(androidClassListeners, listener -> listener.onNewClass(resource, bundle, cls),
						(listener, t) -> logger.error("Exception thrown when adding class", t));
			}

			@Override
			public void onUpdateItem(@Nonnull String key, @Nonnull AndroidClassInfo oldCls, @Nonnull AndroidClassInfo newCls) {
				Unchecked.checkedForEach(androidClassListeners, listener -> listener.onUpdateClass(resource, bundle, oldCls, newCls),
						(listener, t) -> logger.error("Exception thrown when updating class", t));
			}

			@Override
			public void onRemoveItem(@Nonnull String key, @Nonnull AndroidClassInfo cls) {
				Unchecked.checkedForEach(androidClassListeners, listener -> listener.onRemoveClass(resource, bundle, cls),
						(listener, t) -> logger.error("Exception thrown when removing class", t));
			}
		});
	}
Adds listeners to the given bundle to forward to the appropriate resource-level listener types.

@param resource
		Resource to delegate to.
@param bundle
		Bundle to delegate from.
recaf-core/src/main/java/software/coley/recaf/workspace/model/resource/BasicWorkspaceResource.java