// 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; } }