import java.util.*;
import java.util.List;
import java.lang.Integer;
import java.lang.Number;
public class Test{
public static void main (String [] args){
List<Number> listofNum = new ArrayList<Number>();
List<Integer> listofInt = new ArrayList<Integer>();
Integer f = new Integer(3);
listofInt.add(f);
System.out.println(addAll(listofInt, listofNum));
}
/*
public void addAll_NG(List src, List dest){
for (T o : src){
dest.add(o);
}
}
*/
public static <T> void addAll0(List<T> src, List<T> dest) {
for (T o : src){
dest.add(o);
}
}
public static <T> void addAll1(List<? extends T> src, List<T> dest) {
for (T o : src){
dest.add(o);
}
}
public static <T> void addAll2(List<T> src, List<? super T> dest) {
for (T o : src){
dest.add(o);
}
}
public static <T> T addAll(List<T> src, List<? super T> dest) {
T last = null;
for (T o : src){
dest.add(o);
last = o;
}
return last;
}
}