public override void TraverseChildren(IAssumeStatement assumeStatement)
 {
     Bpl.Expr conditionExpr = ExpressionFor(assumeStatement.Condition);
     Bpl.Type conditionType = this.sink.CciTypeToBoogie(assumeStatement.Condition.Type);
     if (conditionType == this.sink.Heap.RefType)
     {
         conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Ident(this.sink.Heap.NullRef));
     }
     else if (conditionType == Bpl.Type.Int)
     {
         conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Literal(0));
     }
     else
     {
         System.Diagnostics.Debug.Assert(conditionType == Bpl.Type.Bool);
     }
     StmtBuilder.Add(new Bpl.AssumeCmd(assumeStatement.Token(), conditionExpr));
 }
 public override void TraverseChildren(IAssumeStatement assumeStatement) {
   Bpl.Expr conditionExpr = ExpressionFor(assumeStatement.Condition);
   Bpl.Type conditionType = this.sink.CciTypeToBoogie(assumeStatement.Condition.Type);
   if (conditionType == this.sink.Heap.RefType) {
     conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Ident(this.sink.Heap.NullRef));
   }
   else if (conditionType == Bpl.Type.Int) {
     conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Literal(0));
   }
   else {
     System.Diagnostics.Debug.Assert(conditionType == Bpl.Type.Bool);
   }
   StmtBuilder.Add(new Bpl.AssumeCmd(assumeStatement.Token(), conditionExpr));
 }