anchor.diff:    
     visitParenthesizedExpression(ParenthesizedExpression node){
       super.visitParenthesizedExpression(node);
  -//(exp)
  -  // [exp] \subseteq [(exp)]
  -  
  -  TypeIdentifier expIdent = new ExpressionTypeIdentifier(node.expression);
  -  TypeIdentifier nodeIdent = new ExpressionTypeIdentifier(node);
  -  _subsetConstraint(expIdent, nodeIdent);
  +    //(exp)
  +    // [exp] \subseteq [(exp)]
  +    
  +    TypeIdentifier expIdent = new ExpressionTypeIdentifier(node.expression);
  +    TypeIdentifier nodeIdent = new ExpressionTypeIdentifier(node);
  +    subsetConstraint(expIdent, nodeIdent);
     }
     
     visitAssignmentExpression(AssignmentExpression node){
  
positive.code:         engine.errors.addError(new EngineError("A ReturnStatement was visited, but didn't have a associated ReturnElement.", source.source, node.offset, node.length ), true);
      
        ReturnElement returnElement = elementAnalysis.elements[node];
        _subsetConstraint(new ExpressionTypeIdentifier(node.expression), new ReturnTypeIdentifier(returnElement.function));
      }
    }
    
  
negative.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));
    }
  