/*
Package openconfigwithlistpath is a generated package which contains definitions
of structs which generate gNMI paths for a YANG schema. The generated paths are
based on a compressed form of the schema.

This package was generated by pathgen-tests
using the following YANG input files:
	- ../testdata/modules/openconfig-withlist.yang
Imported modules were sourced from:
*/
package openconfigwithlistpath

import (
	"github.com/openconfig/ygot/ygot"
)

// ModelPath represents the /openconfig-withlist/model YANG schema element.
type ModelPath struct {
	*ygot.NodePath
}

// ModelPathAny represents the wildcard version of the /openconfig-withlist/model YANG schema element.
type ModelPathAny struct {
	*ygot.NodePath
}

// MultiKeyAny (list): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "b/multi-key"
// Path from root: "/model/b/multi-key"
func (n *ModelPath) MultiKeyAny() *Model_MultiKeyPathAny {
	return &Model_MultiKeyPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"b", "multi-key"},
			map[string]interface{}{"key1": "*", "key2": "*"},
			n,
		),
	}
}

// MultiKeyAny (list): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "b/multi-key"
// Path from root: "/model/b/multi-key"
func (n *ModelPathAny) MultiKeyAny() *Model_MultiKeyPathAny {
	return &Model_MultiKeyPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"b", "multi-key"},
			map[string]interface{}{"key1": "*", "key2": "*"},
			n,
		),
	}
}

// WithKey1 sets Model_MultiKeyPathAny's key "key1" to the specified value.
// Key1: uint32
func (n *Model_MultiKeyPathAny) WithKey1(Key1 uint32) *Model_MultiKeyPathAny {
	ygot.ModifyKey(n.NodePath, "key1", Key1)
	return n
}

// WithKey2 sets Model_MultiKeyPathAny's key "key2" to the specified value.
// Key2: uint64
func (n *Model_MultiKeyPathAny) WithKey2(Key2 uint64) *Model_MultiKeyPathAny {
	ygot.ModifyKey(n.NodePath, "key2", Key2)
	return n
}

// SingleKeyAny (list): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "a/single-key"
// Path from root: "/model/a/single-key"
func (n *ModelPath) SingleKeyAny() *Model_SingleKeyPathAny {
	return &Model_SingleKeyPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"a", "single-key"},
			map[string]interface{}{"key": "*"},
			n,
		),
	}
}

// SingleKeyAny (list): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "a/single-key"
// Path from root: "/model/a/single-key"
func (n *ModelPathAny) SingleKeyAny() *Model_SingleKeyPathAny {
	return &Model_SingleKeyPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"a", "single-key"},
			map[string]interface{}{"key": "*"},
			n,
		),
	}
}

// WithKey sets Model_SingleKeyPathAny's key "key" to the specified value.
// Key: string
func (n *Model_SingleKeyPathAny) WithKey(Key string) *Model_SingleKeyPathAny {
	ygot.ModifyKey(n.NodePath, "key", Key)
	return n
}

// SingleKeyOrderedAny (list): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "c/single-key-ordered"
// Path from root: "/model/c/single-key-ordered"
func (n *ModelPath) SingleKeyOrderedAny() *Model_SingleKeyOrderedPathAny {
	return &Model_SingleKeyOrderedPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"c", "single-key-ordered"},
			map[string]interface{}{"key": "*"},
			n,
		),
	}
}

// SingleKeyOrderedAny (list): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "c/single-key-ordered"
// Path from root: "/model/c/single-key-ordered"
func (n *ModelPathAny) SingleKeyOrderedAny() *Model_SingleKeyOrderedPathAny {
	return &Model_SingleKeyOrderedPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"c", "single-key-ordered"},
			map[string]interface{}{"key": "*"},
			n,
		),
	}
}

// WithKey sets Model_SingleKeyOrderedPathAny's key "key" to the specified value.
// Key: string
func (n *Model_SingleKeyOrderedPathAny) WithKey(Key string) *Model_SingleKeyOrderedPathAny {
	ygot.ModifyKey(n.NodePath, "key", Key)
	return n
}

// Model_MultiKeyPath represents the /openconfig-withlist/model/b/multi-key YANG schema element.
type Model_MultiKeyPath struct {
	*ygot.NodePath
}

// Model_MultiKeyPathAny represents the wildcard version of the /openconfig-withlist/model/b/multi-key YANG schema element.
type Model_MultiKeyPathAny struct {
	*ygot.NodePath
}

// Model_MultiKey_Key1Path represents the /openconfig-withlist/model/b/multi-key/state/key1 YANG schema element.
type Model_MultiKey_Key1Path struct {
	*ygot.NodePath
}

// Model_MultiKey_Key1PathAny represents the wildcard version of the /openconfig-withlist/model/b/multi-key/state/key1 YANG schema element.
type Model_MultiKey_Key1PathAny struct {
	*ygot.NodePath
}

// Model_MultiKey_Key2Path represents the /openconfig-withlist/model/b/multi-key/state/key2 YANG schema element.
type Model_MultiKey_Key2Path struct {
	*ygot.NodePath
}

// Model_MultiKey_Key2PathAny represents the wildcard version of the /openconfig-withlist/model/b/multi-key/state/key2 YANG schema element.
type Model_MultiKey_Key2PathAny struct {
	*ygot.NodePath
}

// Key1 (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key1"
// Path from root: "/model/b/multi-key/state/key1"
func (n *Model_MultiKeyPath) Key1() *Model_MultiKey_Key1Path {
	return &Model_MultiKey_Key1Path{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key1"},
			map[string]interface{}{},
			n,
		),
	}
}

// Key1 (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key1"
// Path from root: "/model/b/multi-key/state/key1"
func (n *Model_MultiKeyPathAny) Key1() *Model_MultiKey_Key1PathAny {
	return &Model_MultiKey_Key1PathAny{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key1"},
			map[string]interface{}{},
			n,
		),
	}
}

// Key2 (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key2"
// Path from root: "/model/b/multi-key/state/key2"
func (n *Model_MultiKeyPath) Key2() *Model_MultiKey_Key2Path {
	return &Model_MultiKey_Key2Path{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key2"},
			map[string]interface{}{},
			n,
		),
	}
}

// Key2 (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key2"
// Path from root: "/model/b/multi-key/state/key2"
func (n *Model_MultiKeyPathAny) Key2() *Model_MultiKey_Key2PathAny {
	return &Model_MultiKey_Key2PathAny{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key2"},
			map[string]interface{}{},
			n,
		),
	}
}

// Model_SingleKeyPath represents the /openconfig-withlist/model/a/single-key YANG schema element.
type Model_SingleKeyPath struct {
	*ygot.NodePath
}

// Model_SingleKeyPathAny represents the wildcard version of the /openconfig-withlist/model/a/single-key YANG schema element.
type Model_SingleKeyPathAny struct {
	*ygot.NodePath
}

// Model_SingleKey_KeyPath represents the /openconfig-withlist/model/a/single-key/state/key YANG schema element.
type Model_SingleKey_KeyPath struct {
	*ygot.NodePath
}

// Model_SingleKey_KeyPathAny represents the wildcard version of the /openconfig-withlist/model/a/single-key/state/key YANG schema element.
type Model_SingleKey_KeyPathAny struct {
	*ygot.NodePath
}

// Key (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key"
// Path from root: "/model/a/single-key/state/key"
func (n *Model_SingleKeyPath) Key() *Model_SingleKey_KeyPath {
	return &Model_SingleKey_KeyPath{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key"},
			map[string]interface{}{},
			n,
		),
	}
}

// Key (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key"
// Path from root: "/model/a/single-key/state/key"
func (n *Model_SingleKeyPathAny) Key() *Model_SingleKey_KeyPathAny {
	return &Model_SingleKey_KeyPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key"},
			map[string]interface{}{},
			n,
		),
	}
}

// Model_SingleKeyOrderedPath represents the /openconfig-withlist/model/c/single-key-ordered YANG schema element.
type Model_SingleKeyOrderedPath struct {
	*ygot.NodePath
}

// Model_SingleKeyOrderedPathAny represents the wildcard version of the /openconfig-withlist/model/c/single-key-ordered YANG schema element.
type Model_SingleKeyOrderedPathAny struct {
	*ygot.NodePath
}

// Model_SingleKeyOrdered_KeyPath represents the /openconfig-withlist/model/c/single-key-ordered/state/key YANG schema element.
type Model_SingleKeyOrdered_KeyPath struct {
	*ygot.NodePath
}

// Model_SingleKeyOrdered_KeyPathAny represents the wildcard version of the /openconfig-withlist/model/c/single-key-ordered/state/key YANG schema element.
type Model_SingleKeyOrdered_KeyPathAny struct {
	*ygot.NodePath
}

// Key (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key"
// Path from root: "/model/c/single-key-ordered/state/key"
func (n *Model_SingleKeyOrderedPath) Key() *Model_SingleKeyOrdered_KeyPath {
	return &Model_SingleKeyOrdered_KeyPath{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key"},
			map[string]interface{}{},
			n,
		),
	}
}

// Key (leaf): 
// ----------------------------------------
// Defining module: "openconfig-withlist"
// Instantiating module: "openconfig-withlist"
// Path from parent: "state/key"
// Path from root: "/model/c/single-key-ordered/state/key"
func (n *Model_SingleKeyOrderedPathAny) Key() *Model_SingleKeyOrdered_KeyPathAny {
	return &Model_SingleKeyOrdered_KeyPathAny{
		NodePath: ygot.NewNodePath(
			[]string{"state", "key"},
			map[string]interface{}{},
			n,
		),
	}
}
