@Override
	public I remove(@Nonnull Object key) {
		I info = backing.remove(key);
		if (info != null) {
			String keyStr = (String) key;

			// Mark the entry key as being removed, but only if it was in the initial key-set.
			// Adding a file and removing it should not be tracked as a net-removal.
			if (initialKeys.contains(keyStr))
				removed.add(keyStr);

			// Notify listeners
			Unchecked.checkedForEach(listeners, listener -> listener.onRemoveItem(keyStr, info),
					(listener, t) -> logger.error("Exception thrown when removing bundle item", t));

			// Update history
			history.remove(key);
		}
		return info;
	}
History contains a stack of prior states of items.
If an item has not been modified there is no entry in this map.

@return Map of historical states of items within this bundle.
recaf-core/src/main/java/software/coley/recaf/workspace/model/bundle/BasicBundle.java