anchor.diff:  
     _InferredCollectionElementTypeInformation _inferCollectionElementType(
         CollectionElement element) {
  -    if (element is ForElement) {
  +    if (element is Expression) {
  +      return _InferredCollectionElementTypeInformation(
  +          elementType: element.staticType, keyType: null, valueType: null);
  +    } else if (element is ForElement) {
         return _inferCollectionElementType(element.body);
       } else if (element is IfElement) {
         _InferredCollectionElementTypeInformation thenType =
  
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:           _inferCollectionElementType(element.elseElement);
        return _InferredCollectionElementTypeInformation.forIfElement(
            _typeSystem, thenType, elseType);
      } else if (element is MapLiteralEntry) {
        return _InferredCollectionElementTypeInformation(
            elementType: null,
  