Complete a TODO to write a proper ImmutableSet view for ImmutableSetMultimap.entries() rather than doing a full ImmutableSet copy of the entries.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42243829
Make ImmutableMultimap.values().contains() redirect to ImmutableMultimap.containsValue, which for e.g. ImmutableSetMultimap takes O(#keys) time, instead of the old implementation, which takes O(#entries) time.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42243991
Rewrite ImmutableMultimap.values().iterator() not to go via the entries, so as to avoid allocating entries that promptly get discarded for the corresponding values.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42275929
Promote EvictingQueue from labs.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42276397
Rewrite the ImmutableCollection.toArray() methods in terms of a package-private "copyIntoArray" method, which also lets e.g. ImmutableMultimap.values().toArray() use arraycopies, etc.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42276632
Don't rewrite Multisets.equalsImpl in ImmutableMultiset
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42277117
A rewrite of Monitor internals.
- use a linked list of active guards instead of an ArrayList
- never signal next waiter while this thread still counted in active guards
- optimize away excess signals
- other stuff rewritten to Martin's taste

Like lukes, I got bitten by the Improve Monitor bug, in part
also as a learning experience.

This class really needs more tests.

I got carried away, and now have a new appreciation for how
hard it is to get this kind of code correct.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42348803
Fix typo in MoreExecutors#listeningDecorator
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42369458
Optimize AbstractMapBasedMultimap.values().iterator() to avoid going via entryIterator() and allocating entries which get immediately discarded.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42383138
Simplify implementation of Multimaps.unmodifiableMultimap
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42395522
Simplify Multimaps.transform logic by sharing more implementation with Maps.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42445381
Factor out more common code in Maps.filter and Multimaps.filter implementations
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42449971
listenInPoolThread didn't use to support a custom executor, but it has for a while.
Unfortunately, I never updated it to acknowledge that an InterruptedException is now possible.
We don't really have any good options, so we'll go with "keep blocking."
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42487946
Add a test that ensures any new HashFunctions must have an entry in
KNOWN_HASHES.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42508143
Hashing.consistentHash: Add more tests to test that the C++ and Java implementations are equivalent.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42533999
Open-source known hashes for crc32, triggered by our new automated test that expects to find them.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42547175
Fix flaky test: Wait for the Future listeners to execute and not just for the Future to complete.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42581734
Move Byte/CharStreams.concat into Byte/CharSource.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42657113
Open source some more benchmarks.
The Monitor benchmarks were left as internal when the class was migrated from Labs.
My guess is that that was nothing more than "Caliper benchmarks can't be open-sourced yet."
I notice that earlier CLs didn't open-source them, either.
My guess is that that's just because they were excluded from the BUILD rule entirely and not merely marked with @GoogleInternal.
My guess is that the same is true of the EventBus benchmark.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42749026
Replace "Throwables.propagate(alreadyTriedToPropagate)" with equivalent "throw new RuntimeException(alreadyTriedToPropagate)."
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=42782638