@Override
	public synchronized void undo() {
		ChangeDiff diff = undoList.removeLast();
		changedAddrsSinceSave.delete(diff.set);
		changedRegAddrsSinceSave.delete(diff.regSet);
		changedDataTypeIds.removeAll(diff.changedDts);
		changedCategoryIds.removeAll(diff.changedCats);
		changedProgramTreeIds.removeAll(diff.changedPts);
		changedSymbolIds.removeAll(diff.changedSyms);
		changedSourceArchiveIds.removeAll(diff.changedArchives);
		changedTagIds.removeAll(diff.changedTags);
		addedDataTypeIds.removeAll(diff.addedDts);
		addedCategoryIds.removeAll(diff.addedCats);
		addedProgramTreeIds.removeAll(diff.addedPts);
		addedSymbolIds.removeAll(diff.addedSyms);
		addedSourceArchiveIds.removeAll(diff.addedArchives);
		addedTagIds.removeAll(diff.addedTags);
		redoList.addLast(diff);
	}
Construct a new ProgramChangeSet.
@param addrMap the address map.
@param numUndos the number of undo change sets to track.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramDBChangeSet.java