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