code: private static <K,V> void combineMaps(Map<K,V> m1, Map<K,V> m2)
      {
      	for (Map.Entry<K,V> me : m2.entrySet()) {
              K key = me.getKey();
              /* Int. subset has precedence, but let's guess most of
               * the time there are no collisions:
               */
              V old = m1.put(key, me.getValue());
              // Oops, got value! Let's put it back
              if (old != null) {
                  m1.put(key, old);
              }
          }
      }
docs: <p>
  Note: The first Map argument WILL be modified; second one
  not. Caller needs to ensure this is acceptable.