@Override
	public Address getMinAddress() {
		Address min = null;
		synchronized (sync) {
			for (AddressSetView addressSet : addressSetList) {
				Address setMin = addressSet.getMinAddress();
				if (setMin != null) {
					if (min == null || setMin.compareTo(min) < 0) {
						min = setMin;
					}
				}
			}
			return min;
		}
	}
Implementation of AddressSetCollection used by {@link ProgramChangeSet}.  It contains the
actual instances of the addressSets used by the {@link ProgramChangeSet} and protects access
to them by synchronizing on the ProgramChangeSet.

Because these objects use the actual addressSets within the programChangeSet for
efficiency reasons, any changes to those
underlying sets will be reflected in the set of addresses represented by this collection.  
But since it is synchronized, you will always get a stable set during any given call and
the AddressSetCollection interface is careful not to include iterator or other methods
that can't tolerate a underlying change.  This object is really only intended for use by
the GUI change bars and if it changes, it only results in possibly seeing the changes bars
a bit earlier than otherwise.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/SynchronizedAddressSetCollection.java