anchor.diff:        @required DartType iterableType,
         DartType keyType,
         DartType valueType}) {
  -    if (element is ForElement) {
  +    if (element is Expression) {
  +      InferenceContext.setType(element, elementType);
  +    } else if (element is ForElement) {
         _pushCollectionTypesDown(element.body,
             elementType: elementType,
             iterableType: iterableType,
  
positive.code:           iterableType: iterableType,
            keyType: keyType,
            valueType: valueType);
      } else if (element is Expression) {
        InferenceContext.setType(element, elementType);
      } else if (element is MapLiteralEntry) {
        InferenceContext.setType(element.key, keyType);
        InferenceContext.setType(element.value, valueType);
  
negative.code:   }
  
    DartType _computeElementType(CollectionElement element) {
      if (element is Expression) {
        return element.staticType;
      } else if (element is ForElement) {
        return _computeElementType(element.body);
      } else if (element is IfElement) {
        var thenElement = element.thenElement;
        var elseElement = element.elseElement;
  
        var thenType = _computeElementType(thenElement);
        if (elseElement == null) {
          return thenType;
        }
  
        var elseType = _computeElementType(elseElement);
        return _typeSystem.leastUpperBound(thenType, elseType);
      } else if (element is MapLiteralEntry) {
        // This error will be reported elsewhere.
        return _typeProvider.dynamicType;
      } else if (element is SpreadElement) {
        var expressionType = element.expression.staticType;
        if (expressionType.isDynamic) {
          return expressionType;
        } else if (expressionType is InterfaceTypeImpl) {
          if (expressionType.isDartCoreNull) {
            if (element.isNullAware) {
              return expressionType;
            }
          } else {
            var iterableType = expressionType.asInstanceOf(
              _typeProvider.iterableElement,
            );
            if (iterableType != null) {
              return iterableType.typeArguments[0];
            }
          }
        }
        // TODO(brianwilkerson) Report this as an error.
        return _typeProvider.dynamicType;
  