anchor.diff:      // [exp] \subseteq [exp op]
       TypeIdentifier expIdent = new ExpressionTypeIdentifier(node.operand);
       TypeIdentifier nodeIdent = new ExpressionTypeIdentifier(node);
  -    _subsetConstraint(expIdent, nodeIdent);
  +    subsetConstraint(expIdent, nodeIdent);
     }
     
     // op v
  
positive.code:     
      // exp1 ? exp2 : exp3
      // [exp2] \union [exp3] \subseteq [exp1 ? exp2 : exp3]
      _subsetConstraint(new ExpressionTypeIdentifier(node.thenExpression), nodeIdent);
      _subsetConstraint(new ExpressionTypeIdentifier(node.elseExpression), nodeIdent);
  
      types.put(node.condition, _getAbstractType(new Name("bool"), constraintAnalysis.dartCore, source));
    }
  
negative.code:       return source.resolvedIdentifiers[exp].identifier;
      } else
        return exp;
    }
    
    AbstractType _getAbstractType(Name className, LibraryElement library, SourceElement source){
  