/** Returns a copy of the current operand. */
 public Operand copy() {
   RegisterOperand newBase = (base != null) ? (RegisterOperand) base.copy() : null;
   RegisterOperand newIndex = (index != null) ? (RegisterOperand) index.copy() : null;
   LocationOperand newLoc = (loc != null) ? (LocationOperand) loc.copy() : null;
   Operand newGuard = (guard != null) ? guard.copy() : null;
   return new MemoryOperand(newBase, newIndex, scale, disp, size, newLoc, newGuard);
 }
 public MemoryOperand(
     RegisterOperand base,
     RegisterOperand index,
     byte scale,
     Offset disp,
     byte size,
     LocationOperand loc,
     Operand guard) {
   this.loc = loc;
   this.guard = guard;
   this.base = base;
   this.index = index;
   this.scale = scale;
   this.disp = disp;
   this.size = size;
   if (loc != null) loc.instruction = null;
   if (guard != null) guard.instruction = null;
   if (base != null) base.instruction = null;
   if (index != null) index.instruction = null;
 }