public ValueExpressionEvaluator(ValueExpr expr, SQLBuilder parent, ValueType optype) {
    this.parent = parent;

    optypes.push(optype);

    if (log.isTraceEnabled()) {
      long start = System.currentTimeMillis();
      expr.visit(this);
      log.trace("expression evaluated in {} ms", (System.currentTimeMillis() - start));
    } else {
      expr.visit(this);
    }
  }
 @Override
 public void meet(BNodeGenerator gen) throws RuntimeException {
   if (gen.getNodeIdExpr() != null) {
     // get value of argument and express it as string
     optypes.push(ValueType.STRING);
     gen.getNodeIdExpr().visit(this);
     optypes.pop();
   } else {
     builder
         .append("'")
         .append(
             Long.toHexString(System.currentTimeMillis())
                 + Integer.toHexString(anonIdGenerator.nextInt(1000)))
         .append("'");
   }
 }