| Index: compiler/java/com/google/dart/compiler/type/Types.java | 
| diff --git a/compiler/java/com/google/dart/compiler/type/Types.java b/compiler/java/com/google/dart/compiler/type/Types.java | 
| index d882aee5c96147afe78158230544cb2ac78f60a0..54fc3a94076355983e67826fcb570726c824bd53 100644 | 
| --- a/compiler/java/com/google/dart/compiler/type/Types.java | 
| +++ b/compiler/java/com/google/dart/compiler/type/Types.java | 
| @@ -18,6 +18,7 @@ import com.google.dart.compiler.resolver.TypeVariableElement; | 
| import com.google.dart.compiler.resolver.VariableElement; | 
|  | 
| import java.util.ArrayList; | 
| +import java.util.Collections; | 
| import java.util.Iterator; | 
| import java.util.LinkedHashMap; | 
| import java.util.List; | 
| @@ -308,12 +309,12 @@ public class Types { | 
| if (type.isRaw()) { | 
| return supertype.asRawType(); | 
| } | 
| -    List<? extends Type> arguments = type.getArguments(); | 
| -    List<? extends Type> parameters = type.getElement().getTypeParameters(); | 
| +    List<Type> arguments = type.getArguments(); | 
| +    List<Type> parameters = type.getElement().getTypeParameters(); | 
| return supertype.subst(arguments, parameters); | 
| } | 
|  | 
| -  static void printTypesOn(StringBuilder sb, List<? extends Type> types, | 
| +  static void printTypesOn(StringBuilder sb, List<Type> types, | 
| String start, String end) { | 
| sb.append(start); | 
| boolean first = true; | 
| @@ -327,8 +328,8 @@ public class Types { | 
| sb.append(end); | 
| } | 
|  | 
| -  public static List<Type> subst(List<? extends Type> types, | 
| -                                 List<? extends Type> arguments, List<? extends Type> parameters) { | 
| +  public static List<Type> subst(List<Type> types, | 
| +                                 List<Type> arguments, List<Type> parameters) { | 
| ArrayList<Type> result = new ArrayList<Type>(types.size()); | 
| for (Type type : types) { | 
| result.add(type.subst(arguments, parameters)); | 
| @@ -362,13 +363,14 @@ public class Types { | 
| return new Types(typeProvider); | 
| } | 
|  | 
| -  public static InterfaceType interfaceType(ClassElement element, List<? extends Type> arguments) { | 
| +  public static InterfaceType interfaceType(ClassElement element, List<Type> arguments) { | 
| return new InterfaceTypeImplementation(element, arguments); | 
| } | 
|  | 
| public static FunctionAliasType functionAliasType(FunctionAliasElement element, | 
| -                                                    List<TypeVariable> typeVariables) { | 
| -    return new FunctionAliasTypeImplementation(element, typeVariables); | 
| +      List<TypeVariable> typeVariables) { | 
| +    return new FunctionAliasTypeImplementation(element, | 
| +        Collections.<Type>unmodifiableList(typeVariables)); | 
| } | 
|  | 
| public static TypeVariable typeVariable(TypeVariableElement element) { | 
|  |