private void setupListenerDelegation() {
		WorkspaceResource resource = this;
		jvmClassBundleStream().forEach(bundle -> delegateJvmClassBundle(resource, bundle));
		androidClassBundleStream().forEach(bundle -> delegateAndroidClassBundle(resource, bundle));
		fileBundleStream().forEach(bundle -> delegateFileBundle(resource, bundle));

		// Embedded resources will notify listeners of their containing resource when they are updated.
		embeddedResources.values().forEach(embeddedResource -> {
			embeddedResource.jvmClassBundleStream().forEach(bundle -> delegateJvmClassBundle(embeddedResource, bundle));
			embeddedResource.androidClassBundleStream().forEach(bundle -> delegateAndroidClassBundle(embeddedResource, bundle));
			embeddedResource.fileBundleStream().forEach(bundle -> delegateFileBundle(embeddedResource, bundle));
		});
	}
Add listeners to all bundles contained in the resource,
which forward to the appropriate resource-level listener types.
recaf-core/src/main/java/software/coley/recaf/workspace/model/resource/BasicWorkspaceResource.java