code: public static <K, V> HashMap<V, List<K>> reverse_map(Map<K, V> map) {
          HashMap<V, List<K>> rtn = new HashMap<V, List<K>>();
          if (map == null) {
              return rtn;
          }
          for (Entry<K, V> entry : map.entrySet()) {
              K key = entry.getKey();
              V val = entry.getValue();
              List<K> list = rtn.get(val);
              if (list == null) {
                  list = new ArrayList<K>();
                  rtn.put(entry.getValue(), list);
              }
              list.add(key);
  
          }
  
          return rtn;
      }
docs: "{:a 1 :b 1 :c 2} -> {1 [:a :b] 2 :c}"
  
  @param map
  @return