| Index: pkg/compiler/lib/src/dart_types.dart | 
| diff --git a/pkg/compiler/lib/src/dart_types.dart b/pkg/compiler/lib/src/dart_types.dart | 
| index 52621387adf97e00dfe993db4103cdecc56fe05d..41ce1e548b7ad659bd26a6e11651d39323e56bae 100644 | 
| --- a/pkg/compiler/lib/src/dart_types.dart | 
| +++ b/pkg/compiler/lib/src/dart_types.dart | 
| @@ -7,18 +7,13 @@ library dart_types; | 
| import 'dart:math' show min; | 
|  | 
| import 'common.dart'; | 
| -import 'common/resolution.dart' show | 
| -    Resolution; | 
| +import 'common/resolution.dart' show Resolution; | 
| import 'core_types.dart'; | 
| -import 'elements/modelx.dart' show | 
| -    LibraryElementX, | 
| -    TypeDeclarationElementX, | 
| -    TypedefElementX; | 
| +import 'elements/modelx.dart' | 
| +    show LibraryElementX, TypeDeclarationElementX, TypedefElementX; | 
| import 'elements/elements.dart'; | 
| -import 'ordered_typeset.dart' show | 
| -    OrderedTypeSet; | 
| -import 'util/util.dart' show | 
| -    equalElements; | 
| +import 'ordered_typeset.dart' show OrderedTypeSet; | 
| +import 'util/util.dart' show equalElements; | 
|  | 
| enum TypeKind { | 
| FUNCTION, | 
| @@ -79,7 +74,6 @@ abstract class DartType { | 
| // TODO(johnniwinther): Maybe move this to [TypedefType]. | 
| void computeUnaliased(Resolution resolution) {} | 
|  | 
| - | 
| /// Returns the unaliased type of this type. | 
| /// | 
| /// The unaliased type of a typedef'd type is the unaliased type to which its | 
| @@ -165,8 +159,8 @@ abstract class DartType { | 
|  | 
| void visitChildren(DartTypeVisitor visitor, var argument) {} | 
|  | 
| -  static void visitList(List<DartType> types, | 
| -                        DartTypeVisitor visitor, var argument) { | 
| +  static void visitList( | 
| +      List<DartType> types, DartTypeVisitor visitor, var argument) { | 
| for (DartType type in types) { | 
| type.accept(visitor, argument); | 
| } | 
| @@ -234,7 +228,7 @@ class TypeVariableType extends DartType { | 
| int get hashCode => 17 * element.hashCode; | 
|  | 
| bool operator ==(other) { | 
| -    if (other is !TypeVariableType) return false; | 
| +    if (other is! TypeVariableType) return false; | 
| return identical(other.element, element); | 
| } | 
|  | 
| @@ -306,7 +300,7 @@ class MalformedType extends DartType { | 
| static int nextHash = 43765; | 
|  | 
| MalformedType(this.element, this.userProvidedBadType, | 
| -                [this.typeArguments = null]); | 
| +      [this.typeArguments = null]); | 
|  | 
| TypeKind get kind => TypeKind.MALFORMED_TYPE; | 
|  | 
| @@ -348,21 +342,21 @@ abstract class GenericType extends DartType { | 
| final TypeDeclarationElement element; | 
| final List<DartType> typeArguments; | 
|  | 
| -  GenericType(TypeDeclarationElement element, | 
| -              this.typeArguments, | 
| -              {bool checkTypeArgumentCount: true}) | 
| +  GenericType(TypeDeclarationElement element, this.typeArguments, | 
| +      {bool checkTypeArgumentCount: true}) | 
| : this.element = element { | 
| assert(invariant(CURRENT_ELEMENT_SPANNABLE, element != null, | 
| message: "Missing element for generic type.")); | 
| assert(invariant(element, () { | 
| -        if (!checkTypeArgumentCount) return true; | 
| -        if (element is TypeDeclarationElementX) { | 
| -          return element.thisTypeCache == null || | 
| -                 typeArguments.length == element.typeVariables.length; | 
| -        } | 
| -        return true; | 
| -    }, message: () => 'Invalid type argument count on ${element.thisType}. ' | 
| -                      'Provided type arguments: $typeArguments.')); | 
| +      if (!checkTypeArgumentCount) return true; | 
| +      if (element is TypeDeclarationElementX) { | 
| +        return element.thisTypeCache == null || | 
| +            typeArguments.length == element.typeVariables.length; | 
| +      } | 
| +      return true; | 
| +    }, | 
| +        message: () => 'Invalid type argument count on ${element.thisType}. ' | 
| +            'Provided type arguments: $typeArguments.')); | 
| } | 
|  | 
| /// Creates a new instance of this type using the provided type arguments. | 
| @@ -422,10 +416,10 @@ abstract class GenericType extends DartType { | 
| } | 
|  | 
| bool operator ==(other) { | 
| -    if (other is !GenericType) return false; | 
| -    return kind == other.kind | 
| -        && element == other.element | 
| -        && equalElements(typeArguments, other.typeArguments); | 
| +    if (other is! GenericType) return false; | 
| +    return kind == other.kind && | 
| +        element == other.element && | 
| +        equalElements(typeArguments, other.typeArguments); | 
| } | 
|  | 
| /// Returns `true` if the declaration of this type has type variables. | 
| @@ -448,13 +442,12 @@ class InterfaceType extends GenericType { | 
| int _hashCode; | 
|  | 
| InterfaceType(ClassElement element, | 
| -                [List<DartType> typeArguments = const <DartType>[]]) | 
| +      [List<DartType> typeArguments = const <DartType>[]]) | 
| : super(element, typeArguments) { | 
| assert(invariant(element, element.isDeclaration)); | 
| } | 
|  | 
| -  InterfaceType.forUserProvidedBadType( | 
| -      ClassElement element, | 
| +  InterfaceType.forUserProvidedBadType(ClassElement element, | 
| [List<DartType> typeArguments = const <DartType>[]]) | 
| : super(element, typeArguments, checkTypeArgumentCount: false); | 
|  | 
| @@ -481,9 +474,8 @@ class InterfaceType extends GenericType { | 
| if (element == other) return this; | 
| InterfaceType supertype = element.asInstanceOf(other); | 
| if (supertype != null) { | 
| -      List<DartType> arguments = Types.substTypes(supertype.typeArguments, | 
| -                                                  typeArguments, | 
| -                                                  element.typeVariables); | 
| +      List<DartType> arguments = Types.substTypes( | 
| +          supertype.typeArguments, typeArguments, element.typeVariables); | 
| return new InterfaceType(supertype.element, arguments); | 
| } | 
| return null; | 
| @@ -530,8 +522,7 @@ class InterfaceType extends GenericType { | 
| class BadInterfaceType extends InterfaceType { | 
| final InterfaceType userProvidedBadType; | 
|  | 
| -  BadInterfaceType(ClassElement element, | 
| -                   InterfaceType this.userProvidedBadType) | 
| +  BadInterfaceType(ClassElement element, InterfaceType this.userProvidedBadType) | 
| : super(element, element.rawType.typeArguments); | 
|  | 
| String toString() { | 
| @@ -539,7 +530,6 @@ class BadInterfaceType extends InterfaceType { | 
| } | 
| } | 
|  | 
| - | 
| /** | 
| * Special subclass of [TypedefType] used for generic typedef types created | 
| * with the wrong number of type arguments. | 
| @@ -549,8 +539,7 @@ class BadInterfaceType extends InterfaceType { | 
| class BadTypedefType extends TypedefType { | 
| final TypedefType userProvidedBadType; | 
|  | 
| -  BadTypedefType(TypedefElement element, | 
| -                 TypedefType this.userProvidedBadType) | 
| +  BadTypedefType(TypedefElement element, TypedefType this.userProvidedBadType) | 
| : super(element, element.rawType.typeArguments); | 
|  | 
| String toString() { | 
| @@ -575,39 +564,36 @@ class FunctionType extends DartType { | 
| */ | 
| final List<DartType> namedParameterTypes; | 
|  | 
| -  factory FunctionType( | 
| -      FunctionTypedElement element, | 
| +  factory FunctionType(FunctionTypedElement element, | 
| [DartType returnType = const DynamicType(), | 
| -       List<DartType> parameterTypes = const <DartType>[], | 
| -       List<DartType> optionalParameterTypes = const <DartType>[], | 
| -       List<String> namedParameters = const <String>[], | 
| -       List<DartType> namedParameterTypes = const <DartType>[]]) { | 
| +      List<DartType> parameterTypes = const <DartType>[], | 
| +      List<DartType> optionalParameterTypes = const <DartType>[], | 
| +      List<String> namedParameters = const <String>[], | 
| +      List<DartType> namedParameterTypes = const <DartType>[]]) { | 
| assert(invariant(CURRENT_ELEMENT_SPANNABLE, element != null)); | 
| assert(invariant(element, element.isDeclaration)); | 
| -    return new FunctionType.internal(element, | 
| -        returnType, parameterTypes, optionalParameterTypes, | 
| -        namedParameters, namedParameterTypes); | 
| +    return new FunctionType.internal(element, returnType, parameterTypes, | 
| +        optionalParameterTypes, namedParameters, namedParameterTypes); | 
| } | 
|  | 
| factory FunctionType.synthesized( | 
| [DartType returnType = const DynamicType(), | 
| -       List<DartType> parameterTypes = const <DartType>[], | 
| -       List<DartType> optionalParameterTypes = const <DartType>[], | 
| -       List<String> namedParameters = const <String>[], | 
| -       List<DartType> namedParameterTypes = const <DartType>[]]) { | 
| -    return new FunctionType.internal(null, | 
| -        returnType, parameterTypes, optionalParameterTypes, | 
| -        namedParameters, namedParameterTypes); | 
| +      List<DartType> parameterTypes = const <DartType>[], | 
| +      List<DartType> optionalParameterTypes = const <DartType>[], | 
| +      List<String> namedParameters = const <String>[], | 
| +      List<DartType> namedParameterTypes = const <DartType>[]]) { | 
| +    return new FunctionType.internal(null, returnType, parameterTypes, | 
| +        optionalParameterTypes, namedParameters, namedParameterTypes); | 
| } | 
|  | 
| FunctionType.internal(FunctionTypedElement this.element, | 
| -                        [DartType this.returnType = const DynamicType(), | 
| -                         this.parameterTypes = const <DartType>[], | 
| -                         this.optionalParameterTypes = const <DartType>[], | 
| -                         this.namedParameters = const <String>[], | 
| -                         this.namedParameterTypes = const <DartType>[]]) { | 
| -    assert(invariant(CURRENT_ELEMENT_SPANNABLE, | 
| -        element == null || element.isDeclaration)); | 
| +      [DartType this.returnType = const DynamicType(), | 
| +      this.parameterTypes = const <DartType>[], | 
| +      this.optionalParameterTypes = const <DartType>[], | 
| +      this.namedParameters = const <String>[], | 
| +      this.namedParameterTypes = const <DartType>[]]) { | 
| +    assert(invariant( | 
| +        CURRENT_ELEMENT_SPANNABLE, element == null || element.isDeclaration)); | 
| // Assert that optional and named parameters are not used at the same time. | 
| assert(optionalParameterTypes.isEmpty || namedParameterTypes.isEmpty); | 
| assert(namedParameters.length == namedParameterTypes.length); | 
| @@ -640,18 +626,19 @@ class FunctionType extends DartType { | 
| Types.substTypes(namedParameterTypes, arguments, parameters); | 
| if (!changed && | 
| (!identical(parameterTypes, newParameterTypes) || | 
| -         !identical(optionalParameterTypes, newOptionalParameterTypes) || | 
| -         !identical(namedParameterTypes, newNamedParameterTypes))) { | 
| +            !identical(optionalParameterTypes, newOptionalParameterTypes) || | 
| +            !identical(namedParameterTypes, newNamedParameterTypes))) { | 
| changed = true; | 
| } | 
| if (changed) { | 
| // Create a new type only if necessary. | 
| -      return new FunctionType.internal(element, | 
| -                                       newReturnType, | 
| -                                       newParameterTypes, | 
| -                                       newOptionalParameterTypes, | 
| -                                       namedParameters, | 
| -                                       newNamedParameterTypes); | 
| +      return new FunctionType.internal( | 
| +          element, | 
| +          newReturnType, | 
| +          newParameterTypes, | 
| +          newOptionalParameterTypes, | 
| +          namedParameters, | 
| +          newNamedParameterTypes); | 
| } | 
| return this; | 
| } | 
| @@ -687,10 +674,10 @@ class FunctionType extends DartType { | 
| } | 
|  | 
| void visitChildren(DartTypeVisitor visitor, var argument) { | 
| -   returnType.accept(visitor, argument); | 
| -   DartType.visitList(parameterTypes, visitor, argument); | 
| -   DartType.visitList(optionalParameterTypes, visitor, argument); | 
| -   DartType.visitList(namedParameterTypes, visitor, argument); | 
| +    returnType.accept(visitor, argument); | 
| +    DartType.visitList(parameterTypes, visitor, argument); | 
| +    DartType.visitList(optionalParameterTypes, visitor, argument); | 
| +    DartType.visitList(namedParameterTypes, visitor, argument); | 
| } | 
|  | 
| String toString() { | 
| @@ -719,7 +706,7 @@ class FunctionType extends DartType { | 
| } | 
| sb.write(namedParameterTypes[i]); | 
| sb.write(' '); | 
| -          sb.write(namedParameters[i]); | 
| +        sb.write(namedParameters[i]); | 
| first = false; | 
| } | 
| sb.write('}'); | 
| @@ -734,23 +721,23 @@ class FunctionType extends DartType { | 
|  | 
| int get hashCode { | 
| int hash = 3 * returnType.hashCode; | 
| -    for (DartType parameter  in parameterTypes) { | 
| +    for (DartType parameter in parameterTypes) { | 
| hash = 17 * hash + 5 * parameter.hashCode; | 
| } | 
| -    for (DartType parameter  in optionalParameterTypes) { | 
| +    for (DartType parameter in optionalParameterTypes) { | 
| hash = 19 * hash + 7 * parameter.hashCode; | 
| } | 
| -    for (String name  in namedParameters) { | 
| +    for (String name in namedParameters) { | 
| hash = 23 * hash + 11 * name.hashCode; | 
| } | 
| -    for (DartType parameter  in namedParameterTypes) { | 
| +    for (DartType parameter in namedParameterTypes) { | 
| hash = 29 * hash + 13 * parameter.hashCode; | 
| } | 
| return hash; | 
| } | 
|  | 
| bool operator ==(other) { | 
| -    if (other is !FunctionType) return false; | 
| +    if (other is! FunctionType) return false; | 
| return returnType == other.returnType && | 
| equalElements(parameterTypes, other.parameterTypes) && | 
| equalElements(optionalParameterTypes, other.optionalParameterTypes) && | 
| @@ -763,12 +750,11 @@ class TypedefType extends GenericType { | 
| DartType _unaliased; | 
|  | 
| TypedefType(TypedefElement element, | 
| -              [List<DartType> typeArguments = const <DartType>[]]) | 
| +      [List<DartType> typeArguments = const <DartType>[]]) | 
| : super(element, typeArguments); | 
|  | 
| TypedefType.forUserProvidedBadType(TypedefElement element, | 
| -                                     [List<DartType> typeArguments = | 
| -                                         const <DartType>[]]) | 
| +      [List<DartType> typeArguments = const <DartType>[]]) | 
| : super(element, typeArguments, checkTypeArgumentCount: false); | 
|  | 
| TypedefElement get element => super.element; | 
| @@ -900,8 +886,7 @@ abstract class BaseDartTypeVisitor<R, A> extends DartTypeVisitor<R, A> { | 
| R visitType(DartType type, A argument); | 
|  | 
| @override | 
| -  R visitVoidType(VoidType type, A argument) => | 
| -      visitType(type, argument); | 
| +  R visitVoidType(VoidType type, A argument) => visitType(type, argument); | 
|  | 
| @override | 
| R visitTypeVariableType(TypeVariableType type, A argument) => | 
| @@ -919,8 +904,7 @@ abstract class BaseDartTypeVisitor<R, A> extends DartTypeVisitor<R, A> { | 
| R visitStatementType(StatementType type, A argument) => | 
| visitType(type, argument); | 
|  | 
| -  R visitGenericType(GenericType type, A argument) => | 
| -      visitType(type, argument); | 
| +  R visitGenericType(GenericType type, A argument) => visitType(type, argument); | 
|  | 
| @override | 
| R visitInterfaceType(InterfaceType type, A argument) => | 
| @@ -931,8 +915,7 @@ abstract class BaseDartTypeVisitor<R, A> extends DartTypeVisitor<R, A> { | 
| visitGenericType(type, argument); | 
|  | 
| @override | 
| -  R visitDynamicType(DynamicType type, A argument) => | 
| -      visitType(type, argument); | 
| +  R visitDynamicType(DynamicType type, A argument) => visitType(type, argument); | 
| } | 
|  | 
| /** | 
| @@ -968,7 +951,6 @@ abstract class AbstractTypeRelation | 
| bool visitMalformedType(MalformedType t, DartType s) => true; | 
|  | 
| bool visitInterfaceType(InterfaceType t, DartType s) { | 
| - | 
| // TODO(johnniwinther): Currently needed since literal types like int, | 
| // double, bool etc. might not have been resolved yet. | 
| t.element.ensureResolved(resolution); | 
| @@ -997,7 +979,7 @@ abstract class AbstractTypeRelation | 
| if (s == coreTypes.functionType) { | 
| return true; | 
| } | 
| -    if (s is !FunctionType) return false; | 
| +    if (s is! FunctionType) return false; | 
| FunctionType tf = t; | 
| FunctionType sf = s; | 
| if (invalidFunctionReturnTypes(tf.returnType, sf.returnType)) { | 
| @@ -1036,7 +1018,7 @@ abstract class AbstractTypeRelation | 
| return false; | 
| } | 
| if (!sf.namedParameters.isEmpty) { | 
| -        // We must have [: len(t.p) == len(s.p) :]. | 
| +      // We must have [: len(t.p) == len(s.p) :]. | 
| if (sNotEmpty) { | 
| return false; | 
| } | 
| @@ -1166,7 +1148,6 @@ class MoreSpecificVisitor extends AbstractTypeRelation { | 
| * Type visitor that determines the subtype relation two types. | 
| */ | 
| class SubtypeVisitor extends MoreSpecificVisitor { | 
| - | 
| SubtypeVisitor(Resolution resolution) : super(resolution); | 
|  | 
| bool isSubtype(DartType t, DartType s) { | 
| @@ -1211,10 +1192,8 @@ class SubtypeVisitor extends MoreSpecificVisitor { | 
| * substitute for the bound of [typeVariable]. [bound] holds the bound against | 
| * which [typeArgument] should be checked. | 
| */ | 
| -typedef void CheckTypeVariableBound(GenericType type, | 
| -                                    DartType typeArgument, | 
| -                                    TypeVariableType typeVariable, | 
| -                                    DartType bound); | 
| +typedef void CheckTypeVariableBound(GenericType type, DartType typeArgument, | 
| +    TypeVariableType typeVariable, DartType bound); | 
|  | 
| /// Basic interface for the Dart type system. | 
| abstract class DartTypes { | 
| @@ -1327,8 +1306,8 @@ class Types implements DartTypes { | 
| * declared on [element]. Calls [checkTypeVariableBound] on each type | 
| * argument and bound. | 
| */ | 
| -  void checkTypeVariableBounds(GenericType type, | 
| -                               CheckTypeVariableBound checkTypeVariableBound) { | 
| +  void checkTypeVariableBounds( | 
| +      GenericType type, CheckTypeVariableBound checkTypeVariableBound) { | 
| TypeDeclarationElement element = type.element; | 
| List<DartType> typeArguments = type.typeArguments; | 
| List<DartType> typeVariables = element.typeVariables; | 
| @@ -1348,8 +1327,7 @@ class Types implements DartTypes { | 
| * instead of a newly created list. | 
| */ | 
| static List<DartType> substTypes(List<DartType> types, | 
| -                                   List<DartType> arguments, | 
| -                                   List<DartType> parameters) { | 
| +      List<DartType> arguments, List<DartType> parameters) { | 
| bool changed = false; | 
| List<DartType> result = new List<DartType>.generate(types.length, (index) { | 
| DartType type = types[index]; | 
| @@ -1409,9 +1387,7 @@ class Types implements DartTypes { | 
| return 1; | 
| } | 
| bool isDefinedByDeclaration(DartType type) { | 
| -      return type.isInterfaceType || | 
| -             type.isTypedef || | 
| -             type.isTypeVariable; | 
| +      return type.isInterfaceType || type.isTypedef || type.isTypeVariable; | 
| } | 
|  | 
| if (isDefinedByDeclaration(a)) { | 
| @@ -1428,7 +1404,7 @@ class Types implements DartTypes { | 
| return -1; | 
| } else { | 
| return compareList((a as GenericType).typeArguments, | 
| -                               (b as GenericType).typeArguments); | 
| +                (b as GenericType).typeArguments); | 
| } | 
| } | 
| } else { | 
| @@ -1449,8 +1425,8 @@ class Types implements DartTypes { | 
| if (result != 0) return result; | 
| result = compareList(aFunc.parameterTypes, bFunc.parameterTypes); | 
| if (result != 0) return result; | 
| -        result = compareList(aFunc.optionalParameterTypes, | 
| -                             bFunc.optionalParameterTypes); | 
| +        result = compareList( | 
| +            aFunc.optionalParameterTypes, bFunc.optionalParameterTypes); | 
| if (result != 0) return result; | 
| // TODO(karlklose): reuse [compareList]. | 
| Iterator<String> aNames = aFunc.namedParameters.iterator; | 
| @@ -1466,8 +1442,8 @@ class Types implements DartTypes { | 
| // [bNames] is longer that [aNames] => a < b. | 
| return -1; | 
| } | 
| -        return compareList(aFunc.namedParameterTypes, | 
| -                           bFunc.namedParameterTypes); | 
| +        return compareList( | 
| +            aFunc.namedParameterTypes, bFunc.namedParameterTypes); | 
| } else { | 
| // [b] is a malformed or statement type => a < b. | 
| return -1; | 
| @@ -1487,8 +1463,8 @@ class Types implements DartTypes { | 
| // [a] is a malformed type => a < b. | 
| return -1; | 
| } | 
| -    assert (a.isMalformed); | 
| -    assert (b.isMalformed); | 
| +    assert(a.isMalformed); | 
| +    assert(b.isMalformed); | 
| // TODO(johnniwinther): Can we do this better? | 
| return Elements.compareByPosition(a.element, b.element); | 
| } | 
| @@ -1511,9 +1487,8 @@ class Types implements DartTypes { | 
| } | 
|  | 
| /// Computes the least upper bound of two interface types [a] and [b]. | 
| -  InterfaceType computeLeastUpperBoundInterfaces(InterfaceType a, | 
| -                                                 InterfaceType b) { | 
| - | 
| +  InterfaceType computeLeastUpperBoundInterfaces( | 
| +      InterfaceType a, InterfaceType b) { | 
| /// Returns the set of supertypes of [type] at depth [depth]. | 
| Set<DartType> getSupertypesAtDepth(InterfaceType type, int depth) { | 
| OrderedTypeSet types = type.element.allSupertypesAndSelf; | 
| @@ -1543,8 +1518,8 @@ class Types implements DartTypes { | 
|  | 
| /// Computes the least upper bound of the types in the longest prefix of [a] | 
| /// and [b]. | 
| -  List<DartType> computeLeastUpperBoundsTypes(List<DartType> a, | 
| -                                              List<DartType> b) { | 
| +  List<DartType> computeLeastUpperBoundsTypes( | 
| +      List<DartType> a, List<DartType> b) { | 
| if (a.isEmpty || b.isEmpty) return const <DartType>[]; | 
| int prefixLength = min(a.length, b.length); | 
| List<DartType> types = new List<DartType>(prefixLength); | 
| @@ -1565,17 +1540,15 @@ class Types implements DartTypes { | 
| /// bound of the longest common prefix of the optional parameters of [a] and | 
| /// [b], and the named parameters are the least upper bound of those common to | 
| /// [a] and [b]. | 
| -  DartType computeLeastUpperBoundFunctionTypes(FunctionType a, | 
| -                                               FunctionType b) { | 
| +  DartType computeLeastUpperBoundFunctionTypes(FunctionType a, FunctionType b) { | 
| if (a.parameterTypes.length != b.parameterTypes.length) { | 
| return coreTypes.functionType; | 
| } | 
| DartType returnType = computeLeastUpperBound(a.returnType, b.returnType); | 
| List<DartType> parameterTypes = | 
| computeLeastUpperBoundsTypes(a.parameterTypes, b.parameterTypes); | 
| -    List<DartType> optionalParameterTypes = | 
| -        computeLeastUpperBoundsTypes(a.optionalParameterTypes, | 
| -                                     b.optionalParameterTypes); | 
| +    List<DartType> optionalParameterTypes = computeLeastUpperBoundsTypes( | 
| +        a.optionalParameterTypes, b.optionalParameterTypes); | 
| List<String> namedParameters = <String>[]; | 
| List<String> aNamedParameters = a.namedParameters; | 
| List<String> bNamedParameters = b.namedParameters; | 
| @@ -1584,8 +1557,8 @@ class Types implements DartTypes { | 
| List<DartType> bNamedParameterTypes = b.namedParameterTypes; | 
| int aIndex = 0; | 
| int bIndex = 0; | 
| -    while (aIndex < aNamedParameters.length && | 
| -           bIndex < bNamedParameters.length) { | 
| +    while ( | 
| +        aIndex < aNamedParameters.length && bIndex < bNamedParameters.length) { | 
| String aNamedParameter = aNamedParameters[aIndex]; | 
| String bNamedParameter = bNamedParameters[bIndex]; | 
| int result = aNamedParameter.compareTo(bNamedParameter); | 
| @@ -1601,18 +1574,15 @@ class Types implements DartTypes { | 
| bIndex++; | 
| } | 
| } | 
| -    return new FunctionType.synthesized( | 
| -        returnType, | 
| -        parameterTypes, optionalParameterTypes, | 
| -        namedParameters, namedParameterTypes); | 
| +    return new FunctionType.synthesized(returnType, parameterTypes, | 
| +        optionalParameterTypes, namedParameters, namedParameterTypes); | 
| } | 
|  | 
| /// Computes the least upper bound of two types of which at least one is a | 
| /// type variable. The least upper bound of a type variable is defined in | 
| /// terms of its bound, but to ensure reflexivity we need to check for common | 
| /// bounds transitively. | 
| -  DartType computeLeastUpperBoundTypeVariableTypes(DartType a, | 
| -                                                   DartType b) { | 
| +  DartType computeLeastUpperBoundTypeVariableTypes(DartType a, DartType b) { | 
| Set<DartType> typeVariableBounds = new Set<DartType>(); | 
| while (a.isTypeVariable) { | 
| if (a == b) return a; | 
| @@ -1688,9 +1658,7 @@ class Types implements DartTypes { | 
| ///     unaliasedBound(U) = unaliasedBound(Baz) = ()->dynamic | 
| ///     unaliasedBound(X) = unaliasedBound(Y) = `Object` | 
| /// | 
| -  static DartType computeUnaliasedBound( | 
| -      Resolution resolution, | 
| -      DartType type) { | 
| +  static DartType computeUnaliasedBound(Resolution resolution, DartType type) { | 
| DartType originalType = type; | 
| while (type.isTypeVariable) { | 
| TypeVariableType variable = type; | 
| @@ -1734,8 +1702,7 @@ class Types implements DartTypes { | 
| /// used to lookup the existence and type of `foo`. | 
| /// | 
| static InterfaceType computeInterfaceType( | 
| -      Resolution resolution, | 
| -      DartType type) { | 
| +      Resolution resolution, DartType type) { | 
| type = computeUnaliasedBound(resolution, type); | 
| if (type.treatAsDynamic) { | 
| return null; | 
| @@ -1783,8 +1750,8 @@ class MoreSpecificSubtypeVisitor extends BaseDartTypeVisitor<bool, DartType> { | 
| /// | 
| /// Note that this computation is a heuristic. It does not find a suggestion | 
| /// in all possible cases. | 
| -  InterfaceType computeMoreSpecific(ClassElement element, | 
| -                                    InterfaceType supertype) { | 
| +  InterfaceType computeMoreSpecific( | 
| +      ClassElement element, InterfaceType supertype) { | 
| InterfaceType supertypeInstance = | 
| element.thisType.asInstanceOf(supertype.element); | 
| if (supertypeInstance == null) return null; | 
| @@ -1815,16 +1782,14 @@ class MoreSpecificSubtypeVisitor extends BaseDartTypeVisitor<bool, DartType> { | 
| } | 
|  | 
| bool visitTypeVariableType(TypeVariableType type, DartType argument) { | 
| -    DartType constraint = | 
| -        types.getMostSpecific(constraintMap[type], argument); | 
| +    DartType constraint = types.getMostSpecific(constraintMap[type], argument); | 
| constraintMap[type] = constraint; | 
| return constraint != null; | 
| } | 
|  | 
| bool visitFunctionType(FunctionType type, DartType argument) { | 
| if (argument is FunctionType) { | 
| -      if (type.parameterTypes.length != | 
| -          argument.parameterTypes.length) { | 
| +      if (type.parameterTypes.length != argument.parameterTypes.length) { | 
| return false; | 
| } | 
| if (type.optionalParameterTypes.length != | 
| @@ -1839,8 +1804,8 @@ class MoreSpecificSubtypeVisitor extends BaseDartTypeVisitor<bool, DartType> { | 
| if (visitTypes(type.parameterTypes, argument.parameterTypes)) { | 
| return false; | 
| } | 
| -      if (visitTypes(type.optionalParameterTypes, | 
| -                     argument.optionalParameterTypes)) { | 
| +      if (visitTypes( | 
| +          type.optionalParameterTypes, argument.optionalParameterTypes)) { | 
| return false; | 
| } | 
| return visitTypes(type.namedParameterTypes, argument.namedParameterTypes); | 
| @@ -1964,4 +1929,3 @@ class TypeDeclarationFormatter extends BaseDartTypeVisitor<dynamic, String> { | 
| sb.write(')'); | 
| } | 
| } | 
| - | 
|  |