private ValueNode op(ValueNode b, ValueNode o) {
   if (value instanceof AddNode) {
     return add(graph(), b, o);
   }
   if (value instanceof SubNode) {
     if (base.valueNode() == value.getX()) {
       return sub(graph(), b, o);
     } else {
       assert base.valueNode() == value.getY();
       return sub(graph(), o, b);
     }
   }
   throw JVMCIError.shouldNotReachHere();
 }
 private long op(long b, long o) {
   if (value instanceof AddNode) {
     return b + o;
   }
   if (value instanceof SubNode) {
     if (base.valueNode() == value.getX()) {
       return b - o;
     } else {
       assert base.valueNode() == value.getY();
       return o - b;
     }
   }
   throw JVMCIError.shouldNotReachHere();
 }