// Technically this violates the one-synced-object-per-thread
// principle (syncing on data and on an individual). Don't think
// it's a problem.
sclass SyncListMultiMap extends MultiMap {
*() {}
*(bool useTreeMap) { super(useTreeMap); }
*(Map> *data) {}
L _makeEmptyList() {
ret new SynchronizedArrayList;
}
}