code: public static <K, V, M extends Map<K, V>> UnmodifiableMutableMap<K, V> of(M map)
      {
          if (map == null)
          {
              throw new IllegalArgumentException("cannot create a UnmodifiableMutableMap for null");
          }
          return new UnmodifiableMutableMap<K, V>(MapAdapter.adapt(map));
      }
docs: This method will take a MutableMap and wrap it directly in a UnmodifiableMutableMap.  It will
  take any other non-GS-map and first adapt it will a MapAdapter, and then return a
  UnmodifiableMutableMap that wraps the adapter.