// Copyright 2026 The OPA Authors.  All rights reserved.
// Use of this source code is governed by an Apache2
// license that can be found in the LICENSE file.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v7.35.1
// source: v1/ir/plan.proto

package v1pb

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Policy mirrors `ir.Policy` in v1/ir/ir.go.
type Policy struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Static        *Static                `protobuf:"bytes,1,opt,name=static" json:"static,omitempty"`
	Plans         *Plans                 `protobuf:"bytes,2,opt,name=plans" json:"plans,omitempty"`
	Funcs         *Funcs                 `protobuf:"bytes,3,opt,name=funcs" json:"funcs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Policy) Reset() {
	*x = Policy{}
	mi := &file_v1_ir_plan_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Policy) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Policy) ProtoMessage() {}

func (x *Policy) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
func (*Policy) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{0}
}

func (x *Policy) GetStatic() *Static {
	if x != nil {
		return x.Static
	}
	return nil
}

func (x *Policy) GetPlans() *Plans {
	if x != nil {
		return x.Plans
	}
	return nil
}

func (x *Policy) GetFuncs() *Funcs {
	if x != nil {
		return x.Funcs
	}
	return nil
}

// Static mirrors `ir.Static` in v1/ir/ir.go.
type Static struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Strings       []*StringConst         `protobuf:"bytes,1,rep,name=strings" json:"strings,omitempty"`
	BuiltinFuncs  []*BuiltinFunc         `protobuf:"bytes,2,rep,name=builtin_funcs,json=builtinFuncs" json:"builtin_funcs,omitempty"`
	Files         []*StringConst         `protobuf:"bytes,3,rep,name=files" json:"files,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Static) Reset() {
	*x = Static{}
	mi := &file_v1_ir_plan_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Static) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Static) ProtoMessage() {}

func (x *Static) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Static.ProtoReflect.Descriptor instead.
func (*Static) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{1}
}

func (x *Static) GetStrings() []*StringConst {
	if x != nil {
		return x.Strings
	}
	return nil
}

func (x *Static) GetBuiltinFuncs() []*BuiltinFunc {
	if x != nil {
		return x.BuiltinFuncs
	}
	return nil
}

func (x *Static) GetFiles() []*StringConst {
	if x != nil {
		return x.Files
	}
	return nil
}

// BuiltinFunc mirrors `ir.BuiltinFunc` in v1/ir/ir.go.
//
// `ir.BuiltinFunc.Decl` (the function's `types.Function` signature) is
// intentionally not modeled. Consumers that execute plans need their
// own builtin registry to dispatch host-language implementations, and
// that registry is the source of truth for signatures — bundling
// `Decl` here would be redundant and prone to drift.
type BuiltinFunc struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BuiltinFunc) Reset() {
	*x = BuiltinFunc{}
	mi := &file_v1_ir_plan_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BuiltinFunc) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BuiltinFunc) ProtoMessage() {}

func (x *BuiltinFunc) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BuiltinFunc.ProtoReflect.Descriptor instead.
func (*BuiltinFunc) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{2}
}

func (x *BuiltinFunc) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

// Plans mirrors `ir.Plans` in v1/ir/ir.go.
type Plans struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Plans         []*Plan                `protobuf:"bytes,1,rep,name=plans" json:"plans,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Plans) Reset() {
	*x = Plans{}
	mi := &file_v1_ir_plan_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Plans) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Plans) ProtoMessage() {}

func (x *Plans) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Plans.ProtoReflect.Descriptor instead.
func (*Plans) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{3}
}

func (x *Plans) GetPlans() []*Plan {
	if x != nil {
		return x.Plans
	}
	return nil
}

// Funcs mirrors `ir.Funcs` in v1/ir/ir.go.
type Funcs struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Funcs         []*Func                `protobuf:"bytes,1,rep,name=funcs" json:"funcs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Funcs) Reset() {
	*x = Funcs{}
	mi := &file_v1_ir_plan_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Funcs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Funcs) ProtoMessage() {}

func (x *Funcs) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Funcs.ProtoReflect.Descriptor instead.
func (*Funcs) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{4}
}

func (x *Funcs) GetFuncs() []*Func {
	if x != nil {
		return x.Funcs
	}
	return nil
}

// Func mirrors `ir.Func` in v1/ir/ir.go.
//
// Each parameter and the return slot are local-variable indices; see
// `ir.Local` in v1/ir/ir.go.
type Func struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Name   *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Params []int32                `protobuf:"varint,2,rep,packed,name=params" json:"params,omitempty"`
	// The local that holds the function's return value. Renamed from
	// `return` (the Go field is `Func.Return Local`, JSON-tagged `return`)
	// to avoid colliding with a reserved keyword in many target languages
	// when this proto is fed to protoc plugins. The JSON wire form
	// continues to use `return`; only the proto-side identifier differs.
	Result        *int32   `protobuf:"varint,3,opt,name=result" json:"result,omitempty"`
	Blocks        []*Block `protobuf:"bytes,4,rep,name=blocks" json:"blocks,omitempty"`
	Path          []string `protobuf:"bytes,5,rep,name=path" json:"path,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Func) Reset() {
	*x = Func{}
	mi := &file_v1_ir_plan_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Func) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Func) ProtoMessage() {}

func (x *Func) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Func.ProtoReflect.Descriptor instead.
func (*Func) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{5}
}

func (x *Func) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Func) GetParams() []int32 {
	if x != nil {
		return x.Params
	}
	return nil
}

func (x *Func) GetResult() int32 {
	if x != nil && x.Result != nil {
		return *x.Result
	}
	return 0
}

func (x *Func) GetBlocks() []*Block {
	if x != nil {
		return x.Blocks
	}
	return nil
}

func (x *Func) GetPath() []string {
	if x != nil {
		return x.Path
	}
	return nil
}

// Plan mirrors `ir.Plan` in v1/ir/ir.go.
type Plan struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Blocks        []*Block               `protobuf:"bytes,2,rep,name=blocks" json:"blocks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Plan) Reset() {
	*x = Plan{}
	mi := &file_v1_ir_plan_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Plan) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Plan) ProtoMessage() {}

func (x *Plan) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Plan.ProtoReflect.Descriptor instead.
func (*Plan) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{6}
}

func (x *Plan) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Plan) GetBlocks() []*Block {
	if x != nil {
		return x.Blocks
	}
	return nil
}

// Block mirrors `ir.Block` in v1/ir/ir.go.
type Block struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Stmts         []*Stmt                `protobuf:"bytes,1,rep,name=stmts" json:"stmts,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Block) Reset() {
	*x = Block{}
	mi := &file_v1_ir_plan_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Block) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Block) ProtoMessage() {}

func (x *Block) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Block.ProtoReflect.Descriptor instead.
func (*Block) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{7}
}

func (x *Block) GetStmts() []*Stmt {
	if x != nil {
		return x.Stmts
	}
	return nil
}

// StringConst mirrors `ir.StringConst` in v1/ir/ir.go.
type StringConst struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *string                `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StringConst) Reset() {
	*x = StringConst{}
	mi := &file_v1_ir_plan_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StringConst) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringConst) ProtoMessage() {}

func (x *StringConst) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StringConst.ProtoReflect.Descriptor instead.
func (*StringConst) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{8}
}

func (x *StringConst) GetValue() string {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return ""
}

// Operand mirrors `ir.Operand` in v1/ir/ir.go. The `value` field is a
// polymorphic `Val` union; see the `Val` message below.
type Operand struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *Val                   `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Operand) Reset() {
	*x = Operand{}
	mi := &file_v1_ir_plan_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Operand) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Operand) ProtoMessage() {}

func (x *Operand) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Operand.ProtoReflect.Descriptor instead.
func (*Operand) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{9}
}

func (x *Operand) GetValue() *Val {
	if x != nil {
		return x.Value
	}
	return nil
}

// Val mirrors the `ir.Val` interface in v1/ir/ir.go. Each oneof case
// corresponds to a concrete `Val` implementation; the case names match
// the JSON discriminator strings emitted by `*Operand.MarshalJSON`.
//
// Case-number assignments are a stability commitment. New cases must
// be added with the next unused number; existing numbers must never
// be repurposed.
type Val struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*Val_Bool
	//	*Val_Local
	//	*Val_StringIndex
	Kind          isVal_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Val) Reset() {
	*x = Val{}
	mi := &file_v1_ir_plan_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Val) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Val) ProtoMessage() {}

func (x *Val) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Val.ProtoReflect.Descriptor instead.
func (*Val) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{10}
}

func (x *Val) GetKind() isVal_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *Val) GetBool() bool {
	if x != nil {
		if x, ok := x.Kind.(*Val_Bool); ok {
			return x.Bool
		}
	}
	return false
}

func (x *Val) GetLocal() int32 {
	if x != nil {
		if x, ok := x.Kind.(*Val_Local); ok {
			return x.Local
		}
	}
	return 0
}

func (x *Val) GetStringIndex() int32 {
	if x != nil {
		if x, ok := x.Kind.(*Val_StringIndex); ok {
			return x.StringIndex
		}
	}
	return 0
}

type isVal_Kind interface {
	isVal_Kind()
}

type Val_Bool struct {
	Bool bool `protobuf:"varint,1,opt,name=bool,oneof"`
}

type Val_Local struct {
	Local int32 `protobuf:"varint,2,opt,name=local,oneof"`
}

type Val_StringIndex struct {
	StringIndex int32 `protobuf:"varint,3,opt,name=string_index,json=stringIndex,oneof"`
}

func (*Val_Bool) isVal_Kind() {}

func (*Val_Local) isVal_Kind() {}

func (*Val_StringIndex) isVal_Kind() {}

// Stmt mirrors the `ir.Stmt` interface in v1/ir/ir.go. Every Stmt carries
// the source-location quintuple (file, col, row, end_col, end_row) on this
// envelope; the body messages below describe only the kind-specific
// payload.
//
// On the Go side, `ir.Location` is embedded into every concrete Stmt
// implementation, so `encoding/json` flattens File/Col/Row/EndCol/EndRow
// into the emitted JSON body. The proto promotes those fields to the
// envelope because that's both more idiomatic protobuf and lets every body
// message start its own field numbering at 1.
//
// Case-number assignments (4–37) are a stability commitment. Field
// numbers 1–3 and 38–39 are reserved for the location fields. New cases
// must be added with the next unused number; existing numbers must never
// be repurposed.
type Stmt struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	File   *int32                 `protobuf:"varint,1,opt,name=file" json:"file,omitempty"`
	Col    *int32                 `protobuf:"varint,2,opt,name=col" json:"col,omitempty"`
	Row    *int32                 `protobuf:"varint,3,opt,name=row" json:"row,omitempty"`
	EndCol *int32                 `protobuf:"varint,38,opt,name=end_col,json=endCol" json:"end_col,omitempty"`
	EndRow *int32                 `protobuf:"varint,39,opt,name=end_row,json=endRow" json:"end_row,omitempty"`
	// Types that are valid to be assigned to Kind:
	//
	//	*Stmt_ArrayAppendStmt
	//	*Stmt_AssignIntStmt
	//	*Stmt_AssignVarOnceStmt
	//	*Stmt_AssignVarStmt
	//	*Stmt_BlockStmt
	//	*Stmt_BreakStmt
	//	*Stmt_CallDynamicStmt
	//	*Stmt_CallStmt
	//	*Stmt_DotStmt
	//	*Stmt_EqualStmt
	//	*Stmt_IsArrayStmt
	//	*Stmt_IsDefinedStmt
	//	*Stmt_IsObjectStmt
	//	*Stmt_IsSetStmt
	//	*Stmt_IsUndefinedStmt
	//	*Stmt_LenStmt
	//	*Stmt_MakeArrayStmt
	//	*Stmt_MakeNullStmt
	//	*Stmt_MakeNumberIntStmt
	//	*Stmt_MakeNumberRefStmt
	//	*Stmt_MakeObjectStmt
	//	*Stmt_MakeSetStmt
	//	*Stmt_NopStmt
	//	*Stmt_NotEqualStmt
	//	*Stmt_NotStmt
	//	*Stmt_ObjectInsertOnceStmt
	//	*Stmt_ObjectInsertStmt
	//	*Stmt_ObjectMergeStmt
	//	*Stmt_ResetLocalStmt
	//	*Stmt_ResultSetAddStmt
	//	*Stmt_ReturnLocalStmt
	//	*Stmt_ScanStmt
	//	*Stmt_SetAddStmt
	//	*Stmt_WithStmt
	Kind          isStmt_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Stmt) Reset() {
	*x = Stmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Stmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Stmt) ProtoMessage() {}

func (x *Stmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Stmt.ProtoReflect.Descriptor instead.
func (*Stmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{11}
}

func (x *Stmt) GetFile() int32 {
	if x != nil && x.File != nil {
		return *x.File
	}
	return 0
}

func (x *Stmt) GetCol() int32 {
	if x != nil && x.Col != nil {
		return *x.Col
	}
	return 0
}

func (x *Stmt) GetRow() int32 {
	if x != nil && x.Row != nil {
		return *x.Row
	}
	return 0
}

func (x *Stmt) GetEndCol() int32 {
	if x != nil && x.EndCol != nil {
		return *x.EndCol
	}
	return 0
}

func (x *Stmt) GetEndRow() int32 {
	if x != nil && x.EndRow != nil {
		return *x.EndRow
	}
	return 0
}

func (x *Stmt) GetKind() isStmt_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *Stmt) GetArrayAppendStmt() *ArrayAppendStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ArrayAppendStmt); ok {
			return x.ArrayAppendStmt
		}
	}
	return nil
}

func (x *Stmt) GetAssignIntStmt() *AssignIntStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_AssignIntStmt); ok {
			return x.AssignIntStmt
		}
	}
	return nil
}

func (x *Stmt) GetAssignVarOnceStmt() *AssignVarOnceStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_AssignVarOnceStmt); ok {
			return x.AssignVarOnceStmt
		}
	}
	return nil
}

func (x *Stmt) GetAssignVarStmt() *AssignVarStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_AssignVarStmt); ok {
			return x.AssignVarStmt
		}
	}
	return nil
}

func (x *Stmt) GetBlockStmt() *BlockStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_BlockStmt); ok {
			return x.BlockStmt
		}
	}
	return nil
}

func (x *Stmt) GetBreakStmt() *BreakStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_BreakStmt); ok {
			return x.BreakStmt
		}
	}
	return nil
}

func (x *Stmt) GetCallDynamicStmt() *CallDynamicStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_CallDynamicStmt); ok {
			return x.CallDynamicStmt
		}
	}
	return nil
}

func (x *Stmt) GetCallStmt() *CallStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_CallStmt); ok {
			return x.CallStmt
		}
	}
	return nil
}

func (x *Stmt) GetDotStmt() *DotStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_DotStmt); ok {
			return x.DotStmt
		}
	}
	return nil
}

func (x *Stmt) GetEqualStmt() *EqualStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_EqualStmt); ok {
			return x.EqualStmt
		}
	}
	return nil
}

func (x *Stmt) GetIsArrayStmt() *IsArrayStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_IsArrayStmt); ok {
			return x.IsArrayStmt
		}
	}
	return nil
}

func (x *Stmt) GetIsDefinedStmt() *IsDefinedStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_IsDefinedStmt); ok {
			return x.IsDefinedStmt
		}
	}
	return nil
}

func (x *Stmt) GetIsObjectStmt() *IsObjectStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_IsObjectStmt); ok {
			return x.IsObjectStmt
		}
	}
	return nil
}

func (x *Stmt) GetIsSetStmt() *IsSetStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_IsSetStmt); ok {
			return x.IsSetStmt
		}
	}
	return nil
}

func (x *Stmt) GetIsUndefinedStmt() *IsUndefinedStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_IsUndefinedStmt); ok {
			return x.IsUndefinedStmt
		}
	}
	return nil
}

func (x *Stmt) GetLenStmt() *LenStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_LenStmt); ok {
			return x.LenStmt
		}
	}
	return nil
}

func (x *Stmt) GetMakeArrayStmt() *MakeArrayStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_MakeArrayStmt); ok {
			return x.MakeArrayStmt
		}
	}
	return nil
}

func (x *Stmt) GetMakeNullStmt() *MakeNullStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_MakeNullStmt); ok {
			return x.MakeNullStmt
		}
	}
	return nil
}

func (x *Stmt) GetMakeNumberIntStmt() *MakeNumberIntStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_MakeNumberIntStmt); ok {
			return x.MakeNumberIntStmt
		}
	}
	return nil
}

func (x *Stmt) GetMakeNumberRefStmt() *MakeNumberRefStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_MakeNumberRefStmt); ok {
			return x.MakeNumberRefStmt
		}
	}
	return nil
}

func (x *Stmt) GetMakeObjectStmt() *MakeObjectStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_MakeObjectStmt); ok {
			return x.MakeObjectStmt
		}
	}
	return nil
}

func (x *Stmt) GetMakeSetStmt() *MakeSetStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_MakeSetStmt); ok {
			return x.MakeSetStmt
		}
	}
	return nil
}

func (x *Stmt) GetNopStmt() *NopStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_NopStmt); ok {
			return x.NopStmt
		}
	}
	return nil
}

func (x *Stmt) GetNotEqualStmt() *NotEqualStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_NotEqualStmt); ok {
			return x.NotEqualStmt
		}
	}
	return nil
}

func (x *Stmt) GetNotStmt() *NotStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_NotStmt); ok {
			return x.NotStmt
		}
	}
	return nil
}

func (x *Stmt) GetObjectInsertOnceStmt() *ObjectInsertOnceStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ObjectInsertOnceStmt); ok {
			return x.ObjectInsertOnceStmt
		}
	}
	return nil
}

func (x *Stmt) GetObjectInsertStmt() *ObjectInsertStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ObjectInsertStmt); ok {
			return x.ObjectInsertStmt
		}
	}
	return nil
}

func (x *Stmt) GetObjectMergeStmt() *ObjectMergeStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ObjectMergeStmt); ok {
			return x.ObjectMergeStmt
		}
	}
	return nil
}

func (x *Stmt) GetResetLocalStmt() *ResetLocalStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ResetLocalStmt); ok {
			return x.ResetLocalStmt
		}
	}
	return nil
}

func (x *Stmt) GetResultSetAddStmt() *ResultSetAddStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ResultSetAddStmt); ok {
			return x.ResultSetAddStmt
		}
	}
	return nil
}

func (x *Stmt) GetReturnLocalStmt() *ReturnLocalStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ReturnLocalStmt); ok {
			return x.ReturnLocalStmt
		}
	}
	return nil
}

func (x *Stmt) GetScanStmt() *ScanStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_ScanStmt); ok {
			return x.ScanStmt
		}
	}
	return nil
}

func (x *Stmt) GetSetAddStmt() *SetAddStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_SetAddStmt); ok {
			return x.SetAddStmt
		}
	}
	return nil
}

func (x *Stmt) GetWithStmt() *WithStmt {
	if x != nil {
		if x, ok := x.Kind.(*Stmt_WithStmt); ok {
			return x.WithStmt
		}
	}
	return nil
}

type isStmt_Kind interface {
	isStmt_Kind()
}

type Stmt_ArrayAppendStmt struct {
	ArrayAppendStmt *ArrayAppendStmt `protobuf:"bytes,4,opt,name=array_append_stmt,json=arrayAppendStmt,oneof"`
}

type Stmt_AssignIntStmt struct {
	AssignIntStmt *AssignIntStmt `protobuf:"bytes,5,opt,name=assign_int_stmt,json=assignIntStmt,oneof"`
}

type Stmt_AssignVarOnceStmt struct {
	AssignVarOnceStmt *AssignVarOnceStmt `protobuf:"bytes,6,opt,name=assign_var_once_stmt,json=assignVarOnceStmt,oneof"`
}

type Stmt_AssignVarStmt struct {
	AssignVarStmt *AssignVarStmt `protobuf:"bytes,7,opt,name=assign_var_stmt,json=assignVarStmt,oneof"`
}

type Stmt_BlockStmt struct {
	BlockStmt *BlockStmt `protobuf:"bytes,8,opt,name=block_stmt,json=blockStmt,oneof"`
}

type Stmt_BreakStmt struct {
	BreakStmt *BreakStmt `protobuf:"bytes,9,opt,name=break_stmt,json=breakStmt,oneof"`
}

type Stmt_CallDynamicStmt struct {
	CallDynamicStmt *CallDynamicStmt `protobuf:"bytes,10,opt,name=call_dynamic_stmt,json=callDynamicStmt,oneof"`
}

type Stmt_CallStmt struct {
	CallStmt *CallStmt `protobuf:"bytes,11,opt,name=call_stmt,json=callStmt,oneof"`
}

type Stmt_DotStmt struct {
	DotStmt *DotStmt `protobuf:"bytes,12,opt,name=dot_stmt,json=dotStmt,oneof"`
}

type Stmt_EqualStmt struct {
	EqualStmt *EqualStmt `protobuf:"bytes,13,opt,name=equal_stmt,json=equalStmt,oneof"`
}

type Stmt_IsArrayStmt struct {
	IsArrayStmt *IsArrayStmt `protobuf:"bytes,14,opt,name=is_array_stmt,json=isArrayStmt,oneof"`
}

type Stmt_IsDefinedStmt struct {
	IsDefinedStmt *IsDefinedStmt `protobuf:"bytes,15,opt,name=is_defined_stmt,json=isDefinedStmt,oneof"`
}

type Stmt_IsObjectStmt struct {
	IsObjectStmt *IsObjectStmt `protobuf:"bytes,16,opt,name=is_object_stmt,json=isObjectStmt,oneof"`
}

type Stmt_IsSetStmt struct {
	IsSetStmt *IsSetStmt `protobuf:"bytes,17,opt,name=is_set_stmt,json=isSetStmt,oneof"`
}

type Stmt_IsUndefinedStmt struct {
	IsUndefinedStmt *IsUndefinedStmt `protobuf:"bytes,18,opt,name=is_undefined_stmt,json=isUndefinedStmt,oneof"`
}

type Stmt_LenStmt struct {
	LenStmt *LenStmt `protobuf:"bytes,19,opt,name=len_stmt,json=lenStmt,oneof"`
}

type Stmt_MakeArrayStmt struct {
	MakeArrayStmt *MakeArrayStmt `protobuf:"bytes,20,opt,name=make_array_stmt,json=makeArrayStmt,oneof"`
}

type Stmt_MakeNullStmt struct {
	MakeNullStmt *MakeNullStmt `protobuf:"bytes,21,opt,name=make_null_stmt,json=makeNullStmt,oneof"`
}

type Stmt_MakeNumberIntStmt struct {
	MakeNumberIntStmt *MakeNumberIntStmt `protobuf:"bytes,22,opt,name=make_number_int_stmt,json=makeNumberIntStmt,oneof"`
}

type Stmt_MakeNumberRefStmt struct {
	MakeNumberRefStmt *MakeNumberRefStmt `protobuf:"bytes,23,opt,name=make_number_ref_stmt,json=makeNumberRefStmt,oneof"`
}

type Stmt_MakeObjectStmt struct {
	MakeObjectStmt *MakeObjectStmt `protobuf:"bytes,24,opt,name=make_object_stmt,json=makeObjectStmt,oneof"`
}

type Stmt_MakeSetStmt struct {
	MakeSetStmt *MakeSetStmt `protobuf:"bytes,25,opt,name=make_set_stmt,json=makeSetStmt,oneof"`
}

type Stmt_NopStmt struct {
	NopStmt *NopStmt `protobuf:"bytes,26,opt,name=nop_stmt,json=nopStmt,oneof"`
}

type Stmt_NotEqualStmt struct {
	NotEqualStmt *NotEqualStmt `protobuf:"bytes,27,opt,name=not_equal_stmt,json=notEqualStmt,oneof"`
}

type Stmt_NotStmt struct {
	NotStmt *NotStmt `protobuf:"bytes,28,opt,name=not_stmt,json=notStmt,oneof"`
}

type Stmt_ObjectInsertOnceStmt struct {
	ObjectInsertOnceStmt *ObjectInsertOnceStmt `protobuf:"bytes,29,opt,name=object_insert_once_stmt,json=objectInsertOnceStmt,oneof"`
}

type Stmt_ObjectInsertStmt struct {
	ObjectInsertStmt *ObjectInsertStmt `protobuf:"bytes,30,opt,name=object_insert_stmt,json=objectInsertStmt,oneof"`
}

type Stmt_ObjectMergeStmt struct {
	ObjectMergeStmt *ObjectMergeStmt `protobuf:"bytes,31,opt,name=object_merge_stmt,json=objectMergeStmt,oneof"`
}

type Stmt_ResetLocalStmt struct {
	ResetLocalStmt *ResetLocalStmt `protobuf:"bytes,32,opt,name=reset_local_stmt,json=resetLocalStmt,oneof"`
}

type Stmt_ResultSetAddStmt struct {
	ResultSetAddStmt *ResultSetAddStmt `protobuf:"bytes,33,opt,name=result_set_add_stmt,json=resultSetAddStmt,oneof"`
}

type Stmt_ReturnLocalStmt struct {
	ReturnLocalStmt *ReturnLocalStmt `protobuf:"bytes,34,opt,name=return_local_stmt,json=returnLocalStmt,oneof"`
}

type Stmt_ScanStmt struct {
	ScanStmt *ScanStmt `protobuf:"bytes,35,opt,name=scan_stmt,json=scanStmt,oneof"`
}

type Stmt_SetAddStmt struct {
	SetAddStmt *SetAddStmt `protobuf:"bytes,36,opt,name=set_add_stmt,json=setAddStmt,oneof"`
}

type Stmt_WithStmt struct {
	WithStmt *WithStmt `protobuf:"bytes,37,opt,name=with_stmt,json=withStmt,oneof"`
}

func (*Stmt_ArrayAppendStmt) isStmt_Kind() {}

func (*Stmt_AssignIntStmt) isStmt_Kind() {}

func (*Stmt_AssignVarOnceStmt) isStmt_Kind() {}

func (*Stmt_AssignVarStmt) isStmt_Kind() {}

func (*Stmt_BlockStmt) isStmt_Kind() {}

func (*Stmt_BreakStmt) isStmt_Kind() {}

func (*Stmt_CallDynamicStmt) isStmt_Kind() {}

func (*Stmt_CallStmt) isStmt_Kind() {}

func (*Stmt_DotStmt) isStmt_Kind() {}

func (*Stmt_EqualStmt) isStmt_Kind() {}

func (*Stmt_IsArrayStmt) isStmt_Kind() {}

func (*Stmt_IsDefinedStmt) isStmt_Kind() {}

func (*Stmt_IsObjectStmt) isStmt_Kind() {}

func (*Stmt_IsSetStmt) isStmt_Kind() {}

func (*Stmt_IsUndefinedStmt) isStmt_Kind() {}

func (*Stmt_LenStmt) isStmt_Kind() {}

func (*Stmt_MakeArrayStmt) isStmt_Kind() {}

func (*Stmt_MakeNullStmt) isStmt_Kind() {}

func (*Stmt_MakeNumberIntStmt) isStmt_Kind() {}

func (*Stmt_MakeNumberRefStmt) isStmt_Kind() {}

func (*Stmt_MakeObjectStmt) isStmt_Kind() {}

func (*Stmt_MakeSetStmt) isStmt_Kind() {}

func (*Stmt_NopStmt) isStmt_Kind() {}

func (*Stmt_NotEqualStmt) isStmt_Kind() {}

func (*Stmt_NotStmt) isStmt_Kind() {}

func (*Stmt_ObjectInsertOnceStmt) isStmt_Kind() {}

func (*Stmt_ObjectInsertStmt) isStmt_Kind() {}

func (*Stmt_ObjectMergeStmt) isStmt_Kind() {}

func (*Stmt_ResetLocalStmt) isStmt_Kind() {}

func (*Stmt_ResultSetAddStmt) isStmt_Kind() {}

func (*Stmt_ReturnLocalStmt) isStmt_Kind() {}

func (*Stmt_ScanStmt) isStmt_Kind() {}

func (*Stmt_SetAddStmt) isStmt_Kind() {}

func (*Stmt_WithStmt) isStmt_Kind() {}

// ArrayAppendStmt mirrors `ir.ArrayAppendStmt` in v1/ir/ir.go.
type ArrayAppendStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *Operand               `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
	Array         *int32                 `protobuf:"varint,2,opt,name=array" json:"array,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ArrayAppendStmt) Reset() {
	*x = ArrayAppendStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ArrayAppendStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ArrayAppendStmt) ProtoMessage() {}

func (x *ArrayAppendStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ArrayAppendStmt.ProtoReflect.Descriptor instead.
func (*ArrayAppendStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{12}
}

func (x *ArrayAppendStmt) GetValue() *Operand {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *ArrayAppendStmt) GetArray() int32 {
	if x != nil && x.Array != nil {
		return *x.Array
	}
	return 0
}

// AssignIntStmt mirrors `ir.AssignIntStmt` in v1/ir/ir.go.
type AssignIntStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *int64                 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AssignIntStmt) Reset() {
	*x = AssignIntStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AssignIntStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AssignIntStmt) ProtoMessage() {}

func (x *AssignIntStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AssignIntStmt.ProtoReflect.Descriptor instead.
func (*AssignIntStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{13}
}

func (x *AssignIntStmt) GetValue() int64 {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return 0
}

func (x *AssignIntStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// AssignVarOnceStmt mirrors `ir.AssignVarOnceStmt` in v1/ir/ir.go.
type AssignVarOnceStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AssignVarOnceStmt) Reset() {
	*x = AssignVarOnceStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AssignVarOnceStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AssignVarOnceStmt) ProtoMessage() {}

func (x *AssignVarOnceStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AssignVarOnceStmt.ProtoReflect.Descriptor instead.
func (*AssignVarOnceStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{14}
}

func (x *AssignVarOnceStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *AssignVarOnceStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// AssignVarStmt mirrors `ir.AssignVarStmt` in v1/ir/ir.go.
type AssignVarStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AssignVarStmt) Reset() {
	*x = AssignVarStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AssignVarStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AssignVarStmt) ProtoMessage() {}

func (x *AssignVarStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AssignVarStmt.ProtoReflect.Descriptor instead.
func (*AssignVarStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{15}
}

func (x *AssignVarStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *AssignVarStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// BlockStmt mirrors `ir.BlockStmt` in v1/ir/ir.go.
type BlockStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Blocks        []*Block               `protobuf:"bytes,1,rep,name=blocks" json:"blocks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BlockStmt) Reset() {
	*x = BlockStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BlockStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockStmt) ProtoMessage() {}

func (x *BlockStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BlockStmt.ProtoReflect.Descriptor instead.
func (*BlockStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{16}
}

func (x *BlockStmt) GetBlocks() []*Block {
	if x != nil {
		return x.Blocks
	}
	return nil
}

// BreakStmt mirrors `ir.BreakStmt` in v1/ir/ir.go.
type BreakStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Index         *uint32                `protobuf:"varint,1,opt,name=index" json:"index,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BreakStmt) Reset() {
	*x = BreakStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BreakStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BreakStmt) ProtoMessage() {}

func (x *BreakStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BreakStmt.ProtoReflect.Descriptor instead.
func (*BreakStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{17}
}

func (x *BreakStmt) GetIndex() uint32 {
	if x != nil && x.Index != nil {
		return *x.Index
	}
	return 0
}

// CallDynamicStmt mirrors `ir.CallDynamicStmt` in v1/ir/ir.go.
type CallDynamicStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Args          []int32                `protobuf:"varint,1,rep,packed,name=args" json:"args,omitempty"`
	Result        *int32                 `protobuf:"varint,2,opt,name=result" json:"result,omitempty"`
	Path          []*Operand             `protobuf:"bytes,3,rep,name=path" json:"path,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CallDynamicStmt) Reset() {
	*x = CallDynamicStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CallDynamicStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CallDynamicStmt) ProtoMessage() {}

func (x *CallDynamicStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CallDynamicStmt.ProtoReflect.Descriptor instead.
func (*CallDynamicStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{18}
}

func (x *CallDynamicStmt) GetArgs() []int32 {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *CallDynamicStmt) GetResult() int32 {
	if x != nil && x.Result != nil {
		return *x.Result
	}
	return 0
}

func (x *CallDynamicStmt) GetPath() []*Operand {
	if x != nil {
		return x.Path
	}
	return nil
}

// CallStmt mirrors `ir.CallStmt` in v1/ir/ir.go.
type CallStmt struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Renamed from `func` (Go field `CallStmt.Func`, JSON-tagged `func`)
	// to avoid colliding with reserved keywords in target languages,
	// mirroring the Func.return → result rename above.
	Function      *string    `protobuf:"bytes,1,opt,name=function" json:"function,omitempty"`
	Args          []*Operand `protobuf:"bytes,2,rep,name=args" json:"args,omitempty"`
	Result        *int32     `protobuf:"varint,3,opt,name=result" json:"result,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CallStmt) Reset() {
	*x = CallStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CallStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CallStmt) ProtoMessage() {}

func (x *CallStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CallStmt.ProtoReflect.Descriptor instead.
func (*CallStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{19}
}

func (x *CallStmt) GetFunction() string {
	if x != nil && x.Function != nil {
		return *x.Function
	}
	return ""
}

func (x *CallStmt) GetArgs() []*Operand {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *CallStmt) GetResult() int32 {
	if x != nil && x.Result != nil {
		return *x.Result
	}
	return 0
}

// DotStmt mirrors `ir.DotStmt` in v1/ir/ir.go.
type DotStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	Key           *Operand               `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
	Target        *int32                 `protobuf:"varint,3,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DotStmt) Reset() {
	*x = DotStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DotStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DotStmt) ProtoMessage() {}

func (x *DotStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DotStmt.ProtoReflect.Descriptor instead.
func (*DotStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{20}
}

func (x *DotStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *DotStmt) GetKey() *Operand {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *DotStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// EqualStmt mirrors `ir.EqualStmt` in v1/ir/ir.go.
type EqualStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *Operand               `protobuf:"bytes,1,opt,name=a" json:"a,omitempty"`
	B             *Operand               `protobuf:"bytes,2,opt,name=b" json:"b,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EqualStmt) Reset() {
	*x = EqualStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EqualStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EqualStmt) ProtoMessage() {}

func (x *EqualStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EqualStmt.ProtoReflect.Descriptor instead.
func (*EqualStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{21}
}

func (x *EqualStmt) GetA() *Operand {
	if x != nil {
		return x.A
	}
	return nil
}

func (x *EqualStmt) GetB() *Operand {
	if x != nil {
		return x.B
	}
	return nil
}

// IsArrayStmt mirrors `ir.IsArrayStmt` in v1/ir/ir.go.
type IsArrayStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IsArrayStmt) Reset() {
	*x = IsArrayStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IsArrayStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsArrayStmt) ProtoMessage() {}

func (x *IsArrayStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IsArrayStmt.ProtoReflect.Descriptor instead.
func (*IsArrayStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{22}
}

func (x *IsArrayStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

// IsDefinedStmt mirrors `ir.IsDefinedStmt` in v1/ir/ir.go.
type IsDefinedStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *int32                 `protobuf:"varint,1,opt,name=source" json:"source,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IsDefinedStmt) Reset() {
	*x = IsDefinedStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IsDefinedStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsDefinedStmt) ProtoMessage() {}

func (x *IsDefinedStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IsDefinedStmt.ProtoReflect.Descriptor instead.
func (*IsDefinedStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{23}
}

func (x *IsDefinedStmt) GetSource() int32 {
	if x != nil && x.Source != nil {
		return *x.Source
	}
	return 0
}

// IsObjectStmt mirrors `ir.IsObjectStmt` in v1/ir/ir.go.
type IsObjectStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IsObjectStmt) Reset() {
	*x = IsObjectStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IsObjectStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsObjectStmt) ProtoMessage() {}

func (x *IsObjectStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IsObjectStmt.ProtoReflect.Descriptor instead.
func (*IsObjectStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{24}
}

func (x *IsObjectStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

// IsSetStmt mirrors `ir.IsSetStmt` in v1/ir/ir.go.
type IsSetStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IsSetStmt) Reset() {
	*x = IsSetStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IsSetStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsSetStmt) ProtoMessage() {}

func (x *IsSetStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IsSetStmt.ProtoReflect.Descriptor instead.
func (*IsSetStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{25}
}

func (x *IsSetStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

// IsUndefinedStmt mirrors `ir.IsUndefinedStmt` in v1/ir/ir.go.
type IsUndefinedStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *int32                 `protobuf:"varint,1,opt,name=source" json:"source,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IsUndefinedStmt) Reset() {
	*x = IsUndefinedStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IsUndefinedStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsUndefinedStmt) ProtoMessage() {}

func (x *IsUndefinedStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IsUndefinedStmt.ProtoReflect.Descriptor instead.
func (*IsUndefinedStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{26}
}

func (x *IsUndefinedStmt) GetSource() int32 {
	if x != nil && x.Source != nil {
		return *x.Source
	}
	return 0
}

// LenStmt mirrors `ir.LenStmt` in v1/ir/ir.go.
type LenStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *Operand               `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LenStmt) Reset() {
	*x = LenStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LenStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LenStmt) ProtoMessage() {}

func (x *LenStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LenStmt.ProtoReflect.Descriptor instead.
func (*LenStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{27}
}

func (x *LenStmt) GetSource() *Operand {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *LenStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// MakeArrayStmt mirrors `ir.MakeArrayStmt` in v1/ir/ir.go.
type MakeArrayStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Capacity      *int32                 `protobuf:"varint,1,opt,name=capacity" json:"capacity,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MakeArrayStmt) Reset() {
	*x = MakeArrayStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MakeArrayStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MakeArrayStmt) ProtoMessage() {}

func (x *MakeArrayStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MakeArrayStmt.ProtoReflect.Descriptor instead.
func (*MakeArrayStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{28}
}

func (x *MakeArrayStmt) GetCapacity() int32 {
	if x != nil && x.Capacity != nil {
		return *x.Capacity
	}
	return 0
}

func (x *MakeArrayStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// MakeNullStmt mirrors `ir.MakeNullStmt` in v1/ir/ir.go.
type MakeNullStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Target        *int32                 `protobuf:"varint,1,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MakeNullStmt) Reset() {
	*x = MakeNullStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MakeNullStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MakeNullStmt) ProtoMessage() {}

func (x *MakeNullStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MakeNullStmt.ProtoReflect.Descriptor instead.
func (*MakeNullStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{29}
}

func (x *MakeNullStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// MakeNumberIntStmt mirrors `ir.MakeNumberIntStmt` in v1/ir/ir.go.
type MakeNumberIntStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *int64                 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MakeNumberIntStmt) Reset() {
	*x = MakeNumberIntStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MakeNumberIntStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MakeNumberIntStmt) ProtoMessage() {}

func (x *MakeNumberIntStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MakeNumberIntStmt.ProtoReflect.Descriptor instead.
func (*MakeNumberIntStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{30}
}

func (x *MakeNumberIntStmt) GetValue() int64 {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return 0
}

func (x *MakeNumberIntStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// MakeNumberRefStmt mirrors `ir.MakeNumberRefStmt` in v1/ir/ir.go.
//
// The Go field is named `Index` (no `json` tag). The historical JSON
// shape emitted both `index` and `Index`; the canonical key going
// forward is `index` and the deprecated `Index` alias will be removed
// in a future major release. This proto models only the canonical
// `index` field.
type MakeNumberRefStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Index         *int32                 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"`
	Target        *int32                 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MakeNumberRefStmt) Reset() {
	*x = MakeNumberRefStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MakeNumberRefStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MakeNumberRefStmt) ProtoMessage() {}

func (x *MakeNumberRefStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MakeNumberRefStmt.ProtoReflect.Descriptor instead.
func (*MakeNumberRefStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{31}
}

func (x *MakeNumberRefStmt) GetIndex() int32 {
	if x != nil && x.Index != nil {
		return *x.Index
	}
	return 0
}

func (x *MakeNumberRefStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// MakeObjectStmt mirrors `ir.MakeObjectStmt` in v1/ir/ir.go.
type MakeObjectStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Target        *int32                 `protobuf:"varint,1,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MakeObjectStmt) Reset() {
	*x = MakeObjectStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MakeObjectStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MakeObjectStmt) ProtoMessage() {}

func (x *MakeObjectStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MakeObjectStmt.ProtoReflect.Descriptor instead.
func (*MakeObjectStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{32}
}

func (x *MakeObjectStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// MakeSetStmt mirrors `ir.MakeSetStmt` in v1/ir/ir.go.
type MakeSetStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Target        *int32                 `protobuf:"varint,1,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MakeSetStmt) Reset() {
	*x = MakeSetStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MakeSetStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MakeSetStmt) ProtoMessage() {}

func (x *MakeSetStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MakeSetStmt.ProtoReflect.Descriptor instead.
func (*MakeSetStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{33}
}

func (x *MakeSetStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// NopStmt mirrors `ir.NopStmt` in v1/ir/ir.go.
type NopStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NopStmt) Reset() {
	*x = NopStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NopStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NopStmt) ProtoMessage() {}

func (x *NopStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NopStmt.ProtoReflect.Descriptor instead.
func (*NopStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{34}
}

// NotEqualStmt mirrors `ir.NotEqualStmt` in v1/ir/ir.go.
type NotEqualStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *Operand               `protobuf:"bytes,1,opt,name=a" json:"a,omitempty"`
	B             *Operand               `protobuf:"bytes,2,opt,name=b" json:"b,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NotEqualStmt) Reset() {
	*x = NotEqualStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotEqualStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotEqualStmt) ProtoMessage() {}

func (x *NotEqualStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotEqualStmt.ProtoReflect.Descriptor instead.
func (*NotEqualStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{35}
}

func (x *NotEqualStmt) GetA() *Operand {
	if x != nil {
		return x.A
	}
	return nil
}

func (x *NotEqualStmt) GetB() *Operand {
	if x != nil {
		return x.B
	}
	return nil
}

// NotStmt mirrors `ir.NotStmt` in v1/ir/ir.go.
type NotStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Block         *Block                 `protobuf:"bytes,1,opt,name=block" json:"block,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NotStmt) Reset() {
	*x = NotStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotStmt) ProtoMessage() {}

func (x *NotStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotStmt.ProtoReflect.Descriptor instead.
func (*NotStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{36}
}

func (x *NotStmt) GetBlock() *Block {
	if x != nil {
		return x.Block
	}
	return nil
}

// ObjectInsertOnceStmt mirrors `ir.ObjectInsertOnceStmt` in v1/ir/ir.go.
type ObjectInsertOnceStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           *Operand               `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
	Value         *Operand               `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
	Object        *int32                 `protobuf:"varint,3,opt,name=object" json:"object,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ObjectInsertOnceStmt) Reset() {
	*x = ObjectInsertOnceStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ObjectInsertOnceStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ObjectInsertOnceStmt) ProtoMessage() {}

func (x *ObjectInsertOnceStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ObjectInsertOnceStmt.ProtoReflect.Descriptor instead.
func (*ObjectInsertOnceStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{37}
}

func (x *ObjectInsertOnceStmt) GetKey() *Operand {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *ObjectInsertOnceStmt) GetValue() *Operand {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *ObjectInsertOnceStmt) GetObject() int32 {
	if x != nil && x.Object != nil {
		return *x.Object
	}
	return 0
}

// ObjectInsertStmt mirrors `ir.ObjectInsertStmt` in v1/ir/ir.go.
type ObjectInsertStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           *Operand               `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
	Value         *Operand               `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
	Object        *int32                 `protobuf:"varint,3,opt,name=object" json:"object,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ObjectInsertStmt) Reset() {
	*x = ObjectInsertStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ObjectInsertStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ObjectInsertStmt) ProtoMessage() {}

func (x *ObjectInsertStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ObjectInsertStmt.ProtoReflect.Descriptor instead.
func (*ObjectInsertStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{38}
}

func (x *ObjectInsertStmt) GetKey() *Operand {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *ObjectInsertStmt) GetValue() *Operand {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *ObjectInsertStmt) GetObject() int32 {
	if x != nil && x.Object != nil {
		return *x.Object
	}
	return 0
}

// ObjectMergeStmt mirrors `ir.ObjectMergeStmt` in v1/ir/ir.go.
type ObjectMergeStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
	Target        *int32                 `protobuf:"varint,3,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ObjectMergeStmt) Reset() {
	*x = ObjectMergeStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ObjectMergeStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ObjectMergeStmt) ProtoMessage() {}

func (x *ObjectMergeStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ObjectMergeStmt.ProtoReflect.Descriptor instead.
func (*ObjectMergeStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{39}
}

func (x *ObjectMergeStmt) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *ObjectMergeStmt) GetB() int32 {
	if x != nil && x.B != nil {
		return *x.B
	}
	return 0
}

func (x *ObjectMergeStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// ResetLocalStmt mirrors `ir.ResetLocalStmt` in v1/ir/ir.go.
type ResetLocalStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Target        *int32                 `protobuf:"varint,1,opt,name=target" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResetLocalStmt) Reset() {
	*x = ResetLocalStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ResetLocalStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResetLocalStmt) ProtoMessage() {}

func (x *ResetLocalStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ResetLocalStmt.ProtoReflect.Descriptor instead.
func (*ResetLocalStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{40}
}

func (x *ResetLocalStmt) GetTarget() int32 {
	if x != nil && x.Target != nil {
		return *x.Target
	}
	return 0
}

// ResultSetAddStmt mirrors `ir.ResultSetAddStmt` in v1/ir/ir.go.
type ResultSetAddStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *int32                 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResultSetAddStmt) Reset() {
	*x = ResultSetAddStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ResultSetAddStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResultSetAddStmt) ProtoMessage() {}

func (x *ResultSetAddStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ResultSetAddStmt.ProtoReflect.Descriptor instead.
func (*ResultSetAddStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{41}
}

func (x *ResultSetAddStmt) GetValue() int32 {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return 0
}

// ReturnLocalStmt mirrors `ir.ReturnLocalStmt` in v1/ir/ir.go.
type ReturnLocalStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *int32                 `protobuf:"varint,1,opt,name=source" json:"source,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReturnLocalStmt) Reset() {
	*x = ReturnLocalStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ReturnLocalStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReturnLocalStmt) ProtoMessage() {}

func (x *ReturnLocalStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReturnLocalStmt.ProtoReflect.Descriptor instead.
func (*ReturnLocalStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{42}
}

func (x *ReturnLocalStmt) GetSource() int32 {
	if x != nil && x.Source != nil {
		return *x.Source
	}
	return 0
}

// ScanStmt mirrors `ir.ScanStmt` in v1/ir/ir.go.
type ScanStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        *int32                 `protobuf:"varint,1,opt,name=source" json:"source,omitempty"`
	Key           *int32                 `protobuf:"varint,2,opt,name=key" json:"key,omitempty"`
	Value         *int32                 `protobuf:"varint,3,opt,name=value" json:"value,omitempty"`
	Block         *Block                 `protobuf:"bytes,4,opt,name=block" json:"block,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ScanStmt) Reset() {
	*x = ScanStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ScanStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ScanStmt) ProtoMessage() {}

func (x *ScanStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ScanStmt.ProtoReflect.Descriptor instead.
func (*ScanStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{43}
}

func (x *ScanStmt) GetSource() int32 {
	if x != nil && x.Source != nil {
		return *x.Source
	}
	return 0
}

func (x *ScanStmt) GetKey() int32 {
	if x != nil && x.Key != nil {
		return *x.Key
	}
	return 0
}

func (x *ScanStmt) GetValue() int32 {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return 0
}

func (x *ScanStmt) GetBlock() *Block {
	if x != nil {
		return x.Block
	}
	return nil
}

// SetAddStmt mirrors `ir.SetAddStmt` in v1/ir/ir.go.
type SetAddStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         *Operand               `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
	Set           *int32                 `protobuf:"varint,2,opt,name=set" json:"set,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetAddStmt) Reset() {
	*x = SetAddStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetAddStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetAddStmt) ProtoMessage() {}

func (x *SetAddStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetAddStmt.ProtoReflect.Descriptor instead.
func (*SetAddStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{44}
}

func (x *SetAddStmt) GetValue() *Operand {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *SetAddStmt) GetSet() int32 {
	if x != nil && x.Set != nil {
		return *x.Set
	}
	return 0
}

// WithStmt mirrors `ir.WithStmt` in v1/ir/ir.go.
type WithStmt struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Local         *int32                 `protobuf:"varint,1,opt,name=local" json:"local,omitempty"`
	Path          []int32                `protobuf:"varint,2,rep,packed,name=path" json:"path,omitempty"`
	Value         *Operand               `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
	Block         *Block                 `protobuf:"bytes,4,opt,name=block" json:"block,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WithStmt) Reset() {
	*x = WithStmt{}
	mi := &file_v1_ir_plan_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WithStmt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WithStmt) ProtoMessage() {}

func (x *WithStmt) ProtoReflect() protoreflect.Message {
	mi := &file_v1_ir_plan_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WithStmt.ProtoReflect.Descriptor instead.
func (*WithStmt) Descriptor() ([]byte, []int) {
	return file_v1_ir_plan_proto_rawDescGZIP(), []int{45}
}

func (x *WithStmt) GetLocal() int32 {
	if x != nil && x.Local != nil {
		return *x.Local
	}
	return 0
}

func (x *WithStmt) GetPath() []int32 {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *WithStmt) GetValue() *Operand {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *WithStmt) GetBlock() *Block {
	if x != nil {
		return x.Block
	}
	return nil
}

var File_v1_ir_plan_proto protoreflect.FileDescriptor

const file_v1_ir_plan_proto_rawDesc = "" +
	"\n" +
	"\x10v1/ir/plan.proto\x12\topa.ir.v1\"\x83\x01\n" +
	"\x06Policy\x12)\n" +
	"\x06static\x18\x01 \x01(\v2\x11.opa.ir.v1.StaticR\x06static\x12&\n" +
	"\x05plans\x18\x02 \x01(\v2\x10.opa.ir.v1.PlansR\x05plans\x12&\n" +
	"\x05funcs\x18\x03 \x01(\v2\x10.opa.ir.v1.FuncsR\x05funcs\"\xa5\x01\n" +
	"\x06Static\x120\n" +
	"\astrings\x18\x01 \x03(\v2\x16.opa.ir.v1.StringConstR\astrings\x12;\n" +
	"\rbuiltin_funcs\x18\x02 \x03(\v2\x16.opa.ir.v1.BuiltinFuncR\fbuiltinFuncs\x12,\n" +
	"\x05files\x18\x03 \x03(\v2\x16.opa.ir.v1.StringConstR\x05files\"!\n" +
	"\vBuiltinFunc\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\".\n" +
	"\x05Plans\x12%\n" +
	"\x05plans\x18\x01 \x03(\v2\x0f.opa.ir.v1.PlanR\x05plans\".\n" +
	"\x05Funcs\x12%\n" +
	"\x05funcs\x18\x01 \x03(\v2\x0f.opa.ir.v1.FuncR\x05funcs\"\x88\x01\n" +
	"\x04Func\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
	"\x06params\x18\x02 \x03(\x05R\x06params\x12\x16\n" +
	"\x06result\x18\x03 \x01(\x05R\x06result\x12(\n" +
	"\x06blocks\x18\x04 \x03(\v2\x10.opa.ir.v1.BlockR\x06blocks\x12\x12\n" +
	"\x04path\x18\x05 \x03(\tR\x04path\"D\n" +
	"\x04Plan\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12(\n" +
	"\x06blocks\x18\x02 \x03(\v2\x10.opa.ir.v1.BlockR\x06blocks\".\n" +
	"\x05Block\x12%\n" +
	"\x05stmts\x18\x01 \x03(\v2\x0f.opa.ir.v1.StmtR\x05stmts\"#\n" +
	"\vStringConst\x12\x14\n" +
	"\x05value\x18\x01 \x01(\tR\x05value\"/\n" +
	"\aOperand\x12$\n" +
	"\x05value\x18\x01 \x01(\v2\x0e.opa.ir.v1.ValR\x05value\"`\n" +
	"\x03Val\x12\x14\n" +
	"\x04bool\x18\x01 \x01(\bH\x00R\x04bool\x12\x16\n" +
	"\x05local\x18\x02 \x01(\x05H\x00R\x05local\x12#\n" +
	"\fstring_index\x18\x03 \x01(\x05H\x00R\vstringIndexB\x06\n" +
	"\x04kind\"\xa7\x12\n" +
	"\x04Stmt\x12\x12\n" +
	"\x04file\x18\x01 \x01(\x05R\x04file\x12\x10\n" +
	"\x03col\x18\x02 \x01(\x05R\x03col\x12\x10\n" +
	"\x03row\x18\x03 \x01(\x05R\x03row\x12\x17\n" +
	"\aend_col\x18& \x01(\x05R\x06endCol\x12\x17\n" +
	"\aend_row\x18' \x01(\x05R\x06endRow\x12H\n" +
	"\x11array_append_stmt\x18\x04 \x01(\v2\x1a.opa.ir.v1.ArrayAppendStmtH\x00R\x0farrayAppendStmt\x12B\n" +
	"\x0fassign_int_stmt\x18\x05 \x01(\v2\x18.opa.ir.v1.AssignIntStmtH\x00R\rassignIntStmt\x12O\n" +
	"\x14assign_var_once_stmt\x18\x06 \x01(\v2\x1c.opa.ir.v1.AssignVarOnceStmtH\x00R\x11assignVarOnceStmt\x12B\n" +
	"\x0fassign_var_stmt\x18\a \x01(\v2\x18.opa.ir.v1.AssignVarStmtH\x00R\rassignVarStmt\x125\n" +
	"\n" +
	"block_stmt\x18\b \x01(\v2\x14.opa.ir.v1.BlockStmtH\x00R\tblockStmt\x125\n" +
	"\n" +
	"break_stmt\x18\t \x01(\v2\x14.opa.ir.v1.BreakStmtH\x00R\tbreakStmt\x12H\n" +
	"\x11call_dynamic_stmt\x18\n" +
	" \x01(\v2\x1a.opa.ir.v1.CallDynamicStmtH\x00R\x0fcallDynamicStmt\x122\n" +
	"\tcall_stmt\x18\v \x01(\v2\x13.opa.ir.v1.CallStmtH\x00R\bcallStmt\x12/\n" +
	"\bdot_stmt\x18\f \x01(\v2\x12.opa.ir.v1.DotStmtH\x00R\adotStmt\x125\n" +
	"\n" +
	"equal_stmt\x18\r \x01(\v2\x14.opa.ir.v1.EqualStmtH\x00R\tequalStmt\x12<\n" +
	"\ris_array_stmt\x18\x0e \x01(\v2\x16.opa.ir.v1.IsArrayStmtH\x00R\visArrayStmt\x12B\n" +
	"\x0fis_defined_stmt\x18\x0f \x01(\v2\x18.opa.ir.v1.IsDefinedStmtH\x00R\risDefinedStmt\x12?\n" +
	"\x0eis_object_stmt\x18\x10 \x01(\v2\x17.opa.ir.v1.IsObjectStmtH\x00R\fisObjectStmt\x126\n" +
	"\vis_set_stmt\x18\x11 \x01(\v2\x14.opa.ir.v1.IsSetStmtH\x00R\tisSetStmt\x12H\n" +
	"\x11is_undefined_stmt\x18\x12 \x01(\v2\x1a.opa.ir.v1.IsUndefinedStmtH\x00R\x0fisUndefinedStmt\x12/\n" +
	"\blen_stmt\x18\x13 \x01(\v2\x12.opa.ir.v1.LenStmtH\x00R\alenStmt\x12B\n" +
	"\x0fmake_array_stmt\x18\x14 \x01(\v2\x18.opa.ir.v1.MakeArrayStmtH\x00R\rmakeArrayStmt\x12?\n" +
	"\x0emake_null_stmt\x18\x15 \x01(\v2\x17.opa.ir.v1.MakeNullStmtH\x00R\fmakeNullStmt\x12O\n" +
	"\x14make_number_int_stmt\x18\x16 \x01(\v2\x1c.opa.ir.v1.MakeNumberIntStmtH\x00R\x11makeNumberIntStmt\x12O\n" +
	"\x14make_number_ref_stmt\x18\x17 \x01(\v2\x1c.opa.ir.v1.MakeNumberRefStmtH\x00R\x11makeNumberRefStmt\x12E\n" +
	"\x10make_object_stmt\x18\x18 \x01(\v2\x19.opa.ir.v1.MakeObjectStmtH\x00R\x0emakeObjectStmt\x12<\n" +
	"\rmake_set_stmt\x18\x19 \x01(\v2\x16.opa.ir.v1.MakeSetStmtH\x00R\vmakeSetStmt\x12/\n" +
	"\bnop_stmt\x18\x1a \x01(\v2\x12.opa.ir.v1.NopStmtH\x00R\anopStmt\x12?\n" +
	"\x0enot_equal_stmt\x18\x1b \x01(\v2\x17.opa.ir.v1.NotEqualStmtH\x00R\fnotEqualStmt\x12/\n" +
	"\bnot_stmt\x18\x1c \x01(\v2\x12.opa.ir.v1.NotStmtH\x00R\anotStmt\x12X\n" +
	"\x17object_insert_once_stmt\x18\x1d \x01(\v2\x1f.opa.ir.v1.ObjectInsertOnceStmtH\x00R\x14objectInsertOnceStmt\x12K\n" +
	"\x12object_insert_stmt\x18\x1e \x01(\v2\x1b.opa.ir.v1.ObjectInsertStmtH\x00R\x10objectInsertStmt\x12H\n" +
	"\x11object_merge_stmt\x18\x1f \x01(\v2\x1a.opa.ir.v1.ObjectMergeStmtH\x00R\x0fobjectMergeStmt\x12E\n" +
	"\x10reset_local_stmt\x18  \x01(\v2\x19.opa.ir.v1.ResetLocalStmtH\x00R\x0eresetLocalStmt\x12L\n" +
	"\x13result_set_add_stmt\x18! \x01(\v2\x1b.opa.ir.v1.ResultSetAddStmtH\x00R\x10resultSetAddStmt\x12H\n" +
	"\x11return_local_stmt\x18\" \x01(\v2\x1a.opa.ir.v1.ReturnLocalStmtH\x00R\x0freturnLocalStmt\x122\n" +
	"\tscan_stmt\x18# \x01(\v2\x13.opa.ir.v1.ScanStmtH\x00R\bscanStmt\x129\n" +
	"\fset_add_stmt\x18$ \x01(\v2\x15.opa.ir.v1.SetAddStmtH\x00R\n" +
	"setAddStmt\x122\n" +
	"\twith_stmt\x18% \x01(\v2\x13.opa.ir.v1.WithStmtH\x00R\bwithStmtB\x06\n" +
	"\x04kind\"Q\n" +
	"\x0fArrayAppendStmt\x12(\n" +
	"\x05value\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x05value\x12\x14\n" +
	"\x05array\x18\x02 \x01(\x05R\x05array\"=\n" +
	"\rAssignIntStmt\x12\x14\n" +
	"\x05value\x18\x01 \x01(\x03R\x05value\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"W\n" +
	"\x11AssignVarOnceStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"S\n" +
	"\rAssignVarStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"5\n" +
	"\tBlockStmt\x12(\n" +
	"\x06blocks\x18\x01 \x03(\v2\x10.opa.ir.v1.BlockR\x06blocks\"!\n" +
	"\tBreakStmt\x12\x14\n" +
	"\x05index\x18\x01 \x01(\rR\x05index\"e\n" +
	"\x0fCallDynamicStmt\x12\x12\n" +
	"\x04args\x18\x01 \x03(\x05R\x04args\x12\x16\n" +
	"\x06result\x18\x02 \x01(\x05R\x06result\x12&\n" +
	"\x04path\x18\x03 \x03(\v2\x12.opa.ir.v1.OperandR\x04path\"f\n" +
	"\bCallStmt\x12\x1a\n" +
	"\bfunction\x18\x01 \x01(\tR\bfunction\x12&\n" +
	"\x04args\x18\x02 \x03(\v2\x12.opa.ir.v1.OperandR\x04args\x12\x16\n" +
	"\x06result\x18\x03 \x01(\x05R\x06result\"s\n" +
	"\aDotStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\x12$\n" +
	"\x03key\x18\x02 \x01(\v2\x12.opa.ir.v1.OperandR\x03key\x12\x16\n" +
	"\x06target\x18\x03 \x01(\x05R\x06target\"O\n" +
	"\tEqualStmt\x12 \n" +
	"\x01a\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x01a\x12 \n" +
	"\x01b\x18\x02 \x01(\v2\x12.opa.ir.v1.OperandR\x01b\"9\n" +
	"\vIsArrayStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\"'\n" +
	"\rIsDefinedStmt\x12\x16\n" +
	"\x06source\x18\x01 \x01(\x05R\x06source\":\n" +
	"\fIsObjectStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\"7\n" +
	"\tIsSetStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\")\n" +
	"\x0fIsUndefinedStmt\x12\x16\n" +
	"\x06source\x18\x01 \x01(\x05R\x06source\"M\n" +
	"\aLenStmt\x12*\n" +
	"\x06source\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x06source\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"C\n" +
	"\rMakeArrayStmt\x12\x1a\n" +
	"\bcapacity\x18\x01 \x01(\x05R\bcapacity\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"&\n" +
	"\fMakeNullStmt\x12\x16\n" +
	"\x06target\x18\x01 \x01(\x05R\x06target\"A\n" +
	"\x11MakeNumberIntStmt\x12\x14\n" +
	"\x05value\x18\x01 \x01(\x03R\x05value\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"A\n" +
	"\x11MakeNumberRefStmt\x12\x14\n" +
	"\x05index\x18\x01 \x01(\x05R\x05index\x12\x16\n" +
	"\x06target\x18\x02 \x01(\x05R\x06target\"(\n" +
	"\x0eMakeObjectStmt\x12\x16\n" +
	"\x06target\x18\x01 \x01(\x05R\x06target\"%\n" +
	"\vMakeSetStmt\x12\x16\n" +
	"\x06target\x18\x01 \x01(\x05R\x06target\"\t\n" +
	"\aNopStmt\"R\n" +
	"\fNotEqualStmt\x12 \n" +
	"\x01a\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x01a\x12 \n" +
	"\x01b\x18\x02 \x01(\v2\x12.opa.ir.v1.OperandR\x01b\"1\n" +
	"\aNotStmt\x12&\n" +
	"\x05block\x18\x01 \x01(\v2\x10.opa.ir.v1.BlockR\x05block\"~\n" +
	"\x14ObjectInsertOnceStmt\x12$\n" +
	"\x03key\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x03key\x12(\n" +
	"\x05value\x18\x02 \x01(\v2\x12.opa.ir.v1.OperandR\x05value\x12\x16\n" +
	"\x06object\x18\x03 \x01(\x05R\x06object\"z\n" +
	"\x10ObjectInsertStmt\x12$\n" +
	"\x03key\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x03key\x12(\n" +
	"\x05value\x18\x02 \x01(\v2\x12.opa.ir.v1.OperandR\x05value\x12\x16\n" +
	"\x06object\x18\x03 \x01(\x05R\x06object\"E\n" +
	"\x0fObjectMergeStmt\x12\f\n" +
	"\x01a\x18\x01 \x01(\x05R\x01a\x12\f\n" +
	"\x01b\x18\x02 \x01(\x05R\x01b\x12\x16\n" +
	"\x06target\x18\x03 \x01(\x05R\x06target\"(\n" +
	"\x0eResetLocalStmt\x12\x16\n" +
	"\x06target\x18\x01 \x01(\x05R\x06target\"(\n" +
	"\x10ResultSetAddStmt\x12\x14\n" +
	"\x05value\x18\x01 \x01(\x05R\x05value\")\n" +
	"\x0fReturnLocalStmt\x12\x16\n" +
	"\x06source\x18\x01 \x01(\x05R\x06source\"r\n" +
	"\bScanStmt\x12\x16\n" +
	"\x06source\x18\x01 \x01(\x05R\x06source\x12\x10\n" +
	"\x03key\x18\x02 \x01(\x05R\x03key\x12\x14\n" +
	"\x05value\x18\x03 \x01(\x05R\x05value\x12&\n" +
	"\x05block\x18\x04 \x01(\v2\x10.opa.ir.v1.BlockR\x05block\"H\n" +
	"\n" +
	"SetAddStmt\x12(\n" +
	"\x05value\x18\x01 \x01(\v2\x12.opa.ir.v1.OperandR\x05value\x12\x10\n" +
	"\x03set\x18\x02 \x01(\x05R\x03set\"\x86\x01\n" +
	"\bWithStmt\x12\x14\n" +
	"\x05local\x18\x01 \x01(\x05R\x05local\x12\x12\n" +
	"\x04path\x18\x02 \x03(\x05R\x04path\x12(\n" +
	"\x05value\x18\x03 \x01(\v2\x12.opa.ir.v1.OperandR\x05value\x12&\n" +
	"\x05block\x18\x04 \x01(\v2\x10.opa.ir.v1.BlockR\x05blockB/P\x01Z+github.com/open-policy-agent/opa/v1/ir/v1pbb\beditionsp\xe8\a"

var (
	file_v1_ir_plan_proto_rawDescOnce sync.Once
	file_v1_ir_plan_proto_rawDescData []byte
)

func file_v1_ir_plan_proto_rawDescGZIP() []byte {
	file_v1_ir_plan_proto_rawDescOnce.Do(func() {
		file_v1_ir_plan_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_ir_plan_proto_rawDesc), len(file_v1_ir_plan_proto_rawDesc)))
	})
	return file_v1_ir_plan_proto_rawDescData
}

var file_v1_ir_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
var file_v1_ir_plan_proto_goTypes = []any{
	(*Policy)(nil),               // 0: opa.ir.v1.Policy
	(*Static)(nil),               // 1: opa.ir.v1.Static
	(*BuiltinFunc)(nil),          // 2: opa.ir.v1.BuiltinFunc
	(*Plans)(nil),                // 3: opa.ir.v1.Plans
	(*Funcs)(nil),                // 4: opa.ir.v1.Funcs
	(*Func)(nil),                 // 5: opa.ir.v1.Func
	(*Plan)(nil),                 // 6: opa.ir.v1.Plan
	(*Block)(nil),                // 7: opa.ir.v1.Block
	(*StringConst)(nil),          // 8: opa.ir.v1.StringConst
	(*Operand)(nil),              // 9: opa.ir.v1.Operand
	(*Val)(nil),                  // 10: opa.ir.v1.Val
	(*Stmt)(nil),                 // 11: opa.ir.v1.Stmt
	(*ArrayAppendStmt)(nil),      // 12: opa.ir.v1.ArrayAppendStmt
	(*AssignIntStmt)(nil),        // 13: opa.ir.v1.AssignIntStmt
	(*AssignVarOnceStmt)(nil),    // 14: opa.ir.v1.AssignVarOnceStmt
	(*AssignVarStmt)(nil),        // 15: opa.ir.v1.AssignVarStmt
	(*BlockStmt)(nil),            // 16: opa.ir.v1.BlockStmt
	(*BreakStmt)(nil),            // 17: opa.ir.v1.BreakStmt
	(*CallDynamicStmt)(nil),      // 18: opa.ir.v1.CallDynamicStmt
	(*CallStmt)(nil),             // 19: opa.ir.v1.CallStmt
	(*DotStmt)(nil),              // 20: opa.ir.v1.DotStmt
	(*EqualStmt)(nil),            // 21: opa.ir.v1.EqualStmt
	(*IsArrayStmt)(nil),          // 22: opa.ir.v1.IsArrayStmt
	(*IsDefinedStmt)(nil),        // 23: opa.ir.v1.IsDefinedStmt
	(*IsObjectStmt)(nil),         // 24: opa.ir.v1.IsObjectStmt
	(*IsSetStmt)(nil),            // 25: opa.ir.v1.IsSetStmt
	(*IsUndefinedStmt)(nil),      // 26: opa.ir.v1.IsUndefinedStmt
	(*LenStmt)(nil),              // 27: opa.ir.v1.LenStmt
	(*MakeArrayStmt)(nil),        // 28: opa.ir.v1.MakeArrayStmt
	(*MakeNullStmt)(nil),         // 29: opa.ir.v1.MakeNullStmt
	(*MakeNumberIntStmt)(nil),    // 30: opa.ir.v1.MakeNumberIntStmt
	(*MakeNumberRefStmt)(nil),    // 31: opa.ir.v1.MakeNumberRefStmt
	(*MakeObjectStmt)(nil),       // 32: opa.ir.v1.MakeObjectStmt
	(*MakeSetStmt)(nil),          // 33: opa.ir.v1.MakeSetStmt
	(*NopStmt)(nil),              // 34: opa.ir.v1.NopStmt
	(*NotEqualStmt)(nil),         // 35: opa.ir.v1.NotEqualStmt
	(*NotStmt)(nil),              // 36: opa.ir.v1.NotStmt
	(*ObjectInsertOnceStmt)(nil), // 37: opa.ir.v1.ObjectInsertOnceStmt
	(*ObjectInsertStmt)(nil),     // 38: opa.ir.v1.ObjectInsertStmt
	(*ObjectMergeStmt)(nil),      // 39: opa.ir.v1.ObjectMergeStmt
	(*ResetLocalStmt)(nil),       // 40: opa.ir.v1.ResetLocalStmt
	(*ResultSetAddStmt)(nil),     // 41: opa.ir.v1.ResultSetAddStmt
	(*ReturnLocalStmt)(nil),      // 42: opa.ir.v1.ReturnLocalStmt
	(*ScanStmt)(nil),             // 43: opa.ir.v1.ScanStmt
	(*SetAddStmt)(nil),           // 44: opa.ir.v1.SetAddStmt
	(*WithStmt)(nil),             // 45: opa.ir.v1.WithStmt
}
var file_v1_ir_plan_proto_depIdxs = []int32{
	1,  // 0: opa.ir.v1.Policy.static:type_name -> opa.ir.v1.Static
	3,  // 1: opa.ir.v1.Policy.plans:type_name -> opa.ir.v1.Plans
	4,  // 2: opa.ir.v1.Policy.funcs:type_name -> opa.ir.v1.Funcs
	8,  // 3: opa.ir.v1.Static.strings:type_name -> opa.ir.v1.StringConst
	2,  // 4: opa.ir.v1.Static.builtin_funcs:type_name -> opa.ir.v1.BuiltinFunc
	8,  // 5: opa.ir.v1.Static.files:type_name -> opa.ir.v1.StringConst
	6,  // 6: opa.ir.v1.Plans.plans:type_name -> opa.ir.v1.Plan
	5,  // 7: opa.ir.v1.Funcs.funcs:type_name -> opa.ir.v1.Func
	7,  // 8: opa.ir.v1.Func.blocks:type_name -> opa.ir.v1.Block
	7,  // 9: opa.ir.v1.Plan.blocks:type_name -> opa.ir.v1.Block
	11, // 10: opa.ir.v1.Block.stmts:type_name -> opa.ir.v1.Stmt
	10, // 11: opa.ir.v1.Operand.value:type_name -> opa.ir.v1.Val
	12, // 12: opa.ir.v1.Stmt.array_append_stmt:type_name -> opa.ir.v1.ArrayAppendStmt
	13, // 13: opa.ir.v1.Stmt.assign_int_stmt:type_name -> opa.ir.v1.AssignIntStmt
	14, // 14: opa.ir.v1.Stmt.assign_var_once_stmt:type_name -> opa.ir.v1.AssignVarOnceStmt
	15, // 15: opa.ir.v1.Stmt.assign_var_stmt:type_name -> opa.ir.v1.AssignVarStmt
	16, // 16: opa.ir.v1.Stmt.block_stmt:type_name -> opa.ir.v1.BlockStmt
	17, // 17: opa.ir.v1.Stmt.break_stmt:type_name -> opa.ir.v1.BreakStmt
	18, // 18: opa.ir.v1.Stmt.call_dynamic_stmt:type_name -> opa.ir.v1.CallDynamicStmt
	19, // 19: opa.ir.v1.Stmt.call_stmt:type_name -> opa.ir.v1.CallStmt
	20, // 20: opa.ir.v1.Stmt.dot_stmt:type_name -> opa.ir.v1.DotStmt
	21, // 21: opa.ir.v1.Stmt.equal_stmt:type_name -> opa.ir.v1.EqualStmt
	22, // 22: opa.ir.v1.Stmt.is_array_stmt:type_name -> opa.ir.v1.IsArrayStmt
	23, // 23: opa.ir.v1.Stmt.is_defined_stmt:type_name -> opa.ir.v1.IsDefinedStmt
	24, // 24: opa.ir.v1.Stmt.is_object_stmt:type_name -> opa.ir.v1.IsObjectStmt
	25, // 25: opa.ir.v1.Stmt.is_set_stmt:type_name -> opa.ir.v1.IsSetStmt
	26, // 26: opa.ir.v1.Stmt.is_undefined_stmt:type_name -> opa.ir.v1.IsUndefinedStmt
	27, // 27: opa.ir.v1.Stmt.len_stmt:type_name -> opa.ir.v1.LenStmt
	28, // 28: opa.ir.v1.Stmt.make_array_stmt:type_name -> opa.ir.v1.MakeArrayStmt
	29, // 29: opa.ir.v1.Stmt.make_null_stmt:type_name -> opa.ir.v1.MakeNullStmt
	30, // 30: opa.ir.v1.Stmt.make_number_int_stmt:type_name -> opa.ir.v1.MakeNumberIntStmt
	31, // 31: opa.ir.v1.Stmt.make_number_ref_stmt:type_name -> opa.ir.v1.MakeNumberRefStmt
	32, // 32: opa.ir.v1.Stmt.make_object_stmt:type_name -> opa.ir.v1.MakeObjectStmt
	33, // 33: opa.ir.v1.Stmt.make_set_stmt:type_name -> opa.ir.v1.MakeSetStmt
	34, // 34: opa.ir.v1.Stmt.nop_stmt:type_name -> opa.ir.v1.NopStmt
	35, // 35: opa.ir.v1.Stmt.not_equal_stmt:type_name -> opa.ir.v1.NotEqualStmt
	36, // 36: opa.ir.v1.Stmt.not_stmt:type_name -> opa.ir.v1.NotStmt
	37, // 37: opa.ir.v1.Stmt.object_insert_once_stmt:type_name -> opa.ir.v1.ObjectInsertOnceStmt
	38, // 38: opa.ir.v1.Stmt.object_insert_stmt:type_name -> opa.ir.v1.ObjectInsertStmt
	39, // 39: opa.ir.v1.Stmt.object_merge_stmt:type_name -> opa.ir.v1.ObjectMergeStmt
	40, // 40: opa.ir.v1.Stmt.reset_local_stmt:type_name -> opa.ir.v1.ResetLocalStmt
	41, // 41: opa.ir.v1.Stmt.result_set_add_stmt:type_name -> opa.ir.v1.ResultSetAddStmt
	42, // 42: opa.ir.v1.Stmt.return_local_stmt:type_name -> opa.ir.v1.ReturnLocalStmt
	43, // 43: opa.ir.v1.Stmt.scan_stmt:type_name -> opa.ir.v1.ScanStmt
	44, // 44: opa.ir.v1.Stmt.set_add_stmt:type_name -> opa.ir.v1.SetAddStmt
	45, // 45: opa.ir.v1.Stmt.with_stmt:type_name -> opa.ir.v1.WithStmt
	9,  // 46: opa.ir.v1.ArrayAppendStmt.value:type_name -> opa.ir.v1.Operand
	9,  // 47: opa.ir.v1.AssignVarOnceStmt.source:type_name -> opa.ir.v1.Operand
	9,  // 48: opa.ir.v1.AssignVarStmt.source:type_name -> opa.ir.v1.Operand
	7,  // 49: opa.ir.v1.BlockStmt.blocks:type_name -> opa.ir.v1.Block
	9,  // 50: opa.ir.v1.CallDynamicStmt.path:type_name -> opa.ir.v1.Operand
	9,  // 51: opa.ir.v1.CallStmt.args:type_name -> opa.ir.v1.Operand
	9,  // 52: opa.ir.v1.DotStmt.source:type_name -> opa.ir.v1.Operand
	9,  // 53: opa.ir.v1.DotStmt.key:type_name -> opa.ir.v1.Operand
	9,  // 54: opa.ir.v1.EqualStmt.a:type_name -> opa.ir.v1.Operand
	9,  // 55: opa.ir.v1.EqualStmt.b:type_name -> opa.ir.v1.Operand
	9,  // 56: opa.ir.v1.IsArrayStmt.source:type_name -> opa.ir.v1.Operand
	9,  // 57: opa.ir.v1.IsObjectStmt.source:type_name -> opa.ir.v1.Operand
	9,  // 58: opa.ir.v1.IsSetStmt.source:type_name -> opa.ir.v1.Operand
	9,  // 59: opa.ir.v1.LenStmt.source:type_name -> opa.ir.v1.Operand
	9,  // 60: opa.ir.v1.NotEqualStmt.a:type_name -> opa.ir.v1.Operand
	9,  // 61: opa.ir.v1.NotEqualStmt.b:type_name -> opa.ir.v1.Operand
	7,  // 62: opa.ir.v1.NotStmt.block:type_name -> opa.ir.v1.Block
	9,  // 63: opa.ir.v1.ObjectInsertOnceStmt.key:type_name -> opa.ir.v1.Operand
	9,  // 64: opa.ir.v1.ObjectInsertOnceStmt.value:type_name -> opa.ir.v1.Operand
	9,  // 65: opa.ir.v1.ObjectInsertStmt.key:type_name -> opa.ir.v1.Operand
	9,  // 66: opa.ir.v1.ObjectInsertStmt.value:type_name -> opa.ir.v1.Operand
	7,  // 67: opa.ir.v1.ScanStmt.block:type_name -> opa.ir.v1.Block
	9,  // 68: opa.ir.v1.SetAddStmt.value:type_name -> opa.ir.v1.Operand
	9,  // 69: opa.ir.v1.WithStmt.value:type_name -> opa.ir.v1.Operand
	7,  // 70: opa.ir.v1.WithStmt.block:type_name -> opa.ir.v1.Block
	71, // [71:71] is the sub-list for method output_type
	71, // [71:71] is the sub-list for method input_type
	71, // [71:71] is the sub-list for extension type_name
	71, // [71:71] is the sub-list for extension extendee
	0,  // [0:71] is the sub-list for field type_name
}

func init() { file_v1_ir_plan_proto_init() }
func file_v1_ir_plan_proto_init() {
	if File_v1_ir_plan_proto != nil {
		return
	}
	file_v1_ir_plan_proto_msgTypes[10].OneofWrappers = []any{
		(*Val_Bool)(nil),
		(*Val_Local)(nil),
		(*Val_StringIndex)(nil),
	}
	file_v1_ir_plan_proto_msgTypes[11].OneofWrappers = []any{
		(*Stmt_ArrayAppendStmt)(nil),
		(*Stmt_AssignIntStmt)(nil),
		(*Stmt_AssignVarOnceStmt)(nil),
		(*Stmt_AssignVarStmt)(nil),
		(*Stmt_BlockStmt)(nil),
		(*Stmt_BreakStmt)(nil),
		(*Stmt_CallDynamicStmt)(nil),
		(*Stmt_CallStmt)(nil),
		(*Stmt_DotStmt)(nil),
		(*Stmt_EqualStmt)(nil),
		(*Stmt_IsArrayStmt)(nil),
		(*Stmt_IsDefinedStmt)(nil),
		(*Stmt_IsObjectStmt)(nil),
		(*Stmt_IsSetStmt)(nil),
		(*Stmt_IsUndefinedStmt)(nil),
		(*Stmt_LenStmt)(nil),
		(*Stmt_MakeArrayStmt)(nil),
		(*Stmt_MakeNullStmt)(nil),
		(*Stmt_MakeNumberIntStmt)(nil),
		(*Stmt_MakeNumberRefStmt)(nil),
		(*Stmt_MakeObjectStmt)(nil),
		(*Stmt_MakeSetStmt)(nil),
		(*Stmt_NopStmt)(nil),
		(*Stmt_NotEqualStmt)(nil),
		(*Stmt_NotStmt)(nil),
		(*Stmt_ObjectInsertOnceStmt)(nil),
		(*Stmt_ObjectInsertStmt)(nil),
		(*Stmt_ObjectMergeStmt)(nil),
		(*Stmt_ResetLocalStmt)(nil),
		(*Stmt_ResultSetAddStmt)(nil),
		(*Stmt_ReturnLocalStmt)(nil),
		(*Stmt_ScanStmt)(nil),
		(*Stmt_SetAddStmt)(nil),
		(*Stmt_WithStmt)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_ir_plan_proto_rawDesc), len(file_v1_ir_plan_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   46,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_v1_ir_plan_proto_goTypes,
		DependencyIndexes: file_v1_ir_plan_proto_depIdxs,
		MessageInfos:      file_v1_ir_plan_proto_msgTypes,
	}.Build()
	File_v1_ir_plan_proto = out.File
	file_v1_ir_plan_proto_goTypes = nil
	file_v1_ir_plan_proto_depIdxs = nil
}
