anchor.diff:              _dynamicType;
   
       _recordStaticType(node, staticType);
  -    DartType propagatedType1 = expr1.propagatedType;
  -    DartType propagatedType2 = expr2.propagatedType;
  -    if (propagatedType1 != null || propagatedType2 != null) {
  -      if (propagatedType1 == null) {
  -        propagatedType1 = staticType1;
  -      }
  -      if (propagatedType2 == null) {
  -        propagatedType2 = staticType2;
  -      }
  -      DartType propagatedType =
  -          _typeSystem.getLeastUpperBound(propagatedType1, propagatedType2);
  -      _resolver.recordPropagatedTypeIfBetter(node, propagatedType);
  +    if (propagateTypes) {
  +      DartType propagatedType1 = expr1.propagatedType;
  +      DartType propagatedType2 = expr2.propagatedType;
  +      if (propagatedType1 != null || propagatedType2 != null) {
  +        if (propagatedType1 == null) {
  +          propagatedType1 = staticType1;
  +        }
  +        if (propagatedType2 == null) {
  +          propagatedType2 = staticType2;
  +        }
  +        DartType propagatedType =
  +            _typeSystem.getLeastUpperBound(propagatedType1, propagatedType2);
  +        _resolver.recordPropagatedTypeIfBetter(node, propagatedType);
  +      }
       }
     }
   
  
positive.code:         }
        }
        _recordStaticType(node, staticType);
        MethodElement propagatedMethodElement = node.propagatedElement;
        if (!identical(propagatedMethodElement, staticMethodElement)) {
          DartType propagatedType =
              _computeStaticReturnType(propagatedMethodElement);
          _resolver.recordPropagatedTypeIfBetter(node, propagatedType);
        }
      }
      return null;
  
negative.code:   Map<ExecutableElement, DartType> _propagatedReturnTypes =
        new HashMap<ExecutableElement, DartType>();
  
    /// Indicates whether type propagation should be performed.
    final bool propagateTypes;
  
    /**
     * Initialize a newly created type analyzer.
     *
     * @param resolver the resolver driving this participant
     */
    StaticTypeAnalyzer(this._resolver, {this.propagateTypes: true}) {
      _typeProvider = _resolver.typeProvider;
      _typeSystem = _resolver.typeSystem;
      _dynamicType = _typeProvider.dynamicType;
  