Code review!

- Use a ListMultimap<K, V> instead of a Map<K, List<V>>.
  - Bonus: null is not returned from get.
- Comments would be useful on these new public static methods.
- The method names were too specific. Who fucking cares if it's
  adding the data to a map or putting it in its gruvvulous glove?
  You're just providing info on the modifier keys. Everything else
  is an implementation detail.
- Same with the variable name. Don't do that.
- Fixed obvious bug.
- One of two things needs to change. You're storing the keys in a List
  but manually checking for duplicates. Does order really matter?
  I guess it does because you mentioned something about that yesterday.
  If it didn't, then just use a SetMultimap.
  But if it does: why do you ensure that the same mapping's not in there
  twice? What does it matter? What caller would do that?
  I say: GIGO. You're already depending on callers to map the keys in
  the right order, so callers have to not fuck up, but you're worried
  about them telling you about the same key twice which they wouldn't
  do, and would cause no problems.
  I'll change that next.

What about:
- Enum constants for the modifier keys? It's super awkward.
  "int modKey, int key"  ...Riiiight.
  The modkey one can be an enum. Right now it's just an
  int value that is opaque to callers, right?
  Also, addModifierKey(key, modKey) then maps modKey as the key and key as
  the value, for extra confusion. Making those both not be ints will
  allow the compiler to folks not fuck up.
- Making a small data structure class that contains the mapping
  and then you can pass that same value to the Unifiers? Did that not end
  up making sense?
As mentioned, omit the duplicate check.

Callers are already expected to provide keys in the right order,
but somehow we're worried about them telling us about the same
one twice?

And there were no actual problem with storing dupes, it would behave
exactly the same.