 
 public final class CopyAddressOp: PrimOp {
   public init(_ value: Value, to address: Value) {
-    super.init(opcode: .copyAddress, category: value.type.category)
+    super.init(opcode: .copyAddress,
+               type: address.type, category: value.type.category)
     self.addOperands([Operand(owner: self, value: value)])
     self.addOperands([Operand(owner: self, value: address)])
   }


public final class LoadBoxOp: PrimOp {
  public init(_ value: Value) {
    super.init(opcode: .loadBox, category: .object)
    self.addOperands([ Operand(owner: self, value: value) ])
  }



public final class CopyValueOp: PrimOp {
  public init(_ value: Value) {
    super.init(opcode: .copyValue,
               type: value.type, category: value.type.category)
    self.addOperands([Operand(owner: self, value: value)])
  }

