anchor.diff:      }
   
       _recordStaticType(node, node.constructorName.type.type);
  -    ConstructorElement element = node.staticElement;
  -    if (element != null && "Element" == element.enclosingElement.name) {
  -      LibraryElement library = element.library;
  -      if (_isHtmlLibrary(library)) {
  -        String constructorName = element.name;
  -        if ("tag" == constructorName) {
  -          DartType returnType = _getFirstArgumentAsTypeWithMap(
  -              library, node.argumentList, _HTML_ELEMENT_TO_CLASS_MAP);
  -          _resolver.recordPropagatedTypeIfBetter(node, returnType);
  -        } else {
  -          DartType returnType = _getElementNameAsType(
  -              library, constructorName, _HTML_ELEMENT_TO_CLASS_MAP);
  -          _resolver.recordPropagatedTypeIfBetter(node, returnType);
  +    if (propagateTypes) {
  +      ConstructorElement element = node.staticElement;
  +      if (element != null && "Element" == element.enclosingElement.name) {
  +        LibraryElement library = element.library;
  +        if (_isHtmlLibrary(library)) {
  +          String constructorName = element.name;
  +          if ("tag" == constructorName) {
  +            DartType returnType = _getFirstArgumentAsTypeWithMap(
  +                library, node.argumentList, _HTML_ELEMENT_TO_CLASS_MAP);
  +            _resolver.recordPropagatedTypeIfBetter(node, returnType);
  +          } else {
  +            DartType returnType = _getElementNameAsType(
  +                library, constructorName, _HTML_ELEMENT_TO_CLASS_MAP);
  +            _resolver.recordPropagatedTypeIfBetter(node, returnType);
  +          }
           }
         }
       }
  
positive.code:     }
  
      _recordStaticType(node, awaitType(_getStaticType(node.expression)));
      DartType propagatedType = awaitType(node.expression.propagatedType);
      _resolver.recordPropagatedTypeIfBetter(node, propagatedType);
      return null;
    }
  
  
negative.code:             _dynamicType;
  
      _recordStaticType(node, staticType);
      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);
        }
      }
    }
  
  