package test.signatures; import java.io.InputStream; import java.io.Serializable; import java.util.Collection; class X<A> {} interface Y<B> {} public class Z<C> extends X<String> implements Y<Integer> { public class V<D> { public <E> void fooLCO(@SuppressWarnings("unused") E e, @SuppressWarnings("unused") C c, @SuppressWarnings("unused") D d) {} } public abstract class U extends Z<String> implements Cloneable, Serializable { private static final long serialVersionUID = 1L; } // Constructors public Z() {} public Z(@SuppressWarnings("unused") C c) {} // Fields public X<Y<C>> field; public Z<Long>.V<Integer> referenceToNestedClass; public V<C> vc = new V<C>(); // Methods public <T> void method() {} // Test all possible declarations public <E> void foo(@SuppressWarnings("unused") E e) {} public <E extends InputStream & Cloneable> void fooCI(@SuppressWarnings("unused") E e) {} public <E extends InputStream & Cloneable & Serializable> void fooCII(@SuppressWarnings("unused") E e) {} public <E extends Serializable & Cloneable> void fooII(@SuppressWarnings("unused") E e) {} public <E extends Cloneable> void fooI(@SuppressWarnings("unused") E e) {} public <E extends InputStream> void fooC(@SuppressWarnings("unused") E e) {} public <E extends C> void fooP(@SuppressWarnings("unused") E e) {} public <E, F> void foo(@SuppressWarnings("unused") E e, @SuppressWarnings("unused") F f) {} // test with variable in signature public <E> void fooLC(@SuppressWarnings("unused") E e, @SuppressWarnings("unused") C f) {} // test wildcards public Collection< ? > wildcard_001; public Collection< ? extends Cloneable> wildcard_002; public Collection< ? super Cloneable> wildcard_003; public Collection< ? extends C> wildcard_004; public Collection< ? super C> wildcard_005; public Collection< ? extends Z<C>.V<Integer>> wildcard_006; public Collection< ? super Z<C>.V<Integer>> wildcard_007; // test compatibility public static <E extends Cloneable> Collection<E> compatibility_001() { return null; } public static <F extends Cloneable> Collection<F> compatibility_002() { return null; } public static <F extends InputStream> Collection<F> compatibility_003() { return null; } public C[] typevarArray; }