public static CoderProvider fromStaticMethods(Class<?> rawType, Class<?> coderClazz) {
    checkArgument(
        Coder.class.isAssignableFrom(coderClazz),
        "%s is not a subtype of %s",
        coderClazz.getName(),
        Coder.class.getSimpleName());
    return new CoderProviderFromStaticMethods(rawType, coderClazz);
  }
@Test
  public void testListCoderProvider() throws Exception {
    TypeDescriptor<List<Double>> type = TypeDescriptors.lists(TypeDescriptors.doubles());
    CoderProvider listCoderProvider = CoderProviders.fromStaticMethods(List.class, ListCoder.class);

    assertEquals(
        ListCoder.of(DoubleCoder.of()),
        listCoderProvider.coderFor(type, Arrays.asList(DoubleCoder.of())));
  }