public static <K, V> TypeRef<Map<K, V>> mapOf(Class<K> keyType, Class<V> valueType) {
    return mapOf(TypeRef.of(keyType), TypeRef.of(valueType));
  }
@Test
  public void testMapOf() {
    TypeRef<Map<String, Integer>> mapTypeRef = TypeUtils.mapOf(String.class, Integer.class);
    Assert.assertEquals(mapTypeRef, new TypeRef<Map<String, Integer>>() {});
    Assert.assertEquals(
        TypeUtils.mapOf(HashMap.class, String.class, Integer.class),
        new TypeRef<HashMap<String, Integer>>() {});
    Assert.assertEquals(
        TypeUtils.hashMapOf(String.class, Integer.class),
        new TypeRef<HashMap<String, Integer>>() {});
    Assert.assertEquals(
        TypeUtils.mapOf(LinkedHashMap.class, String.class, Integer.class),
        new TypeRef<LinkedHashMap<String, Integer>>() {});
  }