ListCoder extends IterableLikeCoder<T, List<T>> { @Override public TypeDescriptor<List<T>> getEncodedTypeDescriptor() { return new TypeDescriptor<List<T>>(getClass()) {}.where( new TypeParameter<T>() {}, getElemCoder().getEncodedTypeDescriptor()); } protected  ListCoder(Coder<T> elemCoder); static ListCoder<T> of(Coder<T> elemCoder); @Override boolean consistentWithEquals(); @Override Object structuralValue(List<T> values); @Override void verifyDeterministic(); @Override TypeDescriptor<List<T>> getEncodedTypeDescriptor();  }
@Test public void testEncodedTypeDescriptor() throws Exception { TypeDescriptor<List<Integer>> typeDescriptor = new TypeDescriptor<List<Integer>>() {}; assertThat(TEST_CODER.getEncodedTypeDescriptor(), equalTo(typeDescriptor)); }