### Question:
TransformedGenerator extends LoopGenerator<E> { @SuppressWarnings("unchecked") public void run(final Procedure<? super E> proc) { ((Generator<? extends I>) getWrappedGenerator()).run(new Procedure<I>() { public void run(I obj) { proc.run(func.evaluate(obj)); } }); } @SuppressWarnings("unchecked")  TransformedGenerator(Generator<? extends I> wrapped, Function<? super I, ? extends E> func); @SuppressWarnings("unchecked") void run(final Procedure<? super E> proc); @Override boolean equals(Object obj); @Override int hashCode();  }### Answer:
@Test public void testGenerate() { final List<Integer> doubledValues = new ArrayList<Integer>(); sumsTwoGenerator.run(new Procedure<Integer>() { public void run( Integer obj ) { doubledValues.add(obj); } }); final List<Integer> expected = Arrays.asList(3, 4, 5, 6, 7, 8, 9, 10 , 11); assertEquals(9, doubledValues.size()); assertEquals(expected, doubledValues); }