code: func (ow *opWrapper) pushObject(vm *duktape.Context) {
  	obj := vm.PushObject()
  
  	vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushInt(int(ow.op)); return 1 })
  	vm.PutPropString(obj, "toNumber")
  
  	vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushString(ow.op.String()); return 1 })
  	vm.PutPropString(obj, "toString")
  
  	vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushBoolean(ow.op.IsPush()); return 1 })
  	vm.PutPropString(obj, "isPush")
  }
docs: // pushObject assembles a JSVM object wrapping a swappable opcode and pushes it
  // onto the VM stack.