When we use a `NavigableSet<JournalRecord>`, this is implemented in MapDB as a `BTree<JournalRecord,Object>`), and thus the JournalRecord's `equals` and `hashCode` methods are used to determine uniqueness _and_ ordering. We actually want to separate those characteristics, so we should instead use a `NavigableMap<Long,JournalRecord>` that would be implemented in MapDB as a `BTreeMap<Long,JournalRecord>`. Here, the sorting is accomplished via the natural ordering of `long`, and we can have JournalRecord's `equals` and `hashCode` methods based solely upon the ChangeSet's UUID so that it is a semantically-correct comparison.

Adding a JournalRecord into the map would be done with 'map.put(record.getCreatedTimeMillisUTC(),record)` and we should check that this method either returns null or returns a previous record that is equal (using only the UUID) to the new record. If not, then there is a mistake somewhere.

When we change to use the `TimeBasedCounter` class to generate time-based keys, we should consider renaming `JournalRecord.getCreatedTimeMillisUTC()` to `getTimeBasedKey()`.