src/vs/workbench/services/extensions/common/extensionsRegistry.ts/ExtensionPointUserDelta/compute
class ExtensionPointUserDelta:	public static compute<T>(previous: readonly IExtensionPointUser<T>[] | null, current: readonly IExtensionPointUser<T>[]): ExtensionPointUserDelta<T> {
		if (!previous || !previous.length) {
			return new ExtensionPointUserDelta<T>(current, []);
		}
		if (!current || !current.length) {
			return new ExtensionPointUserDelta<T>([], previous);
		}

		const previousSet = this._toSet(previous);
		const currentSet = this._toSet(current);

		let added = current.filter(user => !previousSet.has(ExtensionIdentifier.toKey(user.description.identifier)));
		let removed = previous.filter(user => !currentSet.has(ExtensionIdentifier.toKey(user.description.identifier)));

		return new ExtensionPointUserDelta<T>(added, removed);
	}