You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: x_package.go
    path of file: ./repos/gomacro/ast2
    
    the code of the file until where you have to start completion: // this file was generated by gomacro command: import _i "github.com/cosmos72/gomacro/ast2"
// DO NOT EDIT! Any change will be lost when the file is re-generated

package ast2

import (
	"go/ast"
	"go/token"
	r "reflect"

	"github.com/cosmos72/gomacro/imports"
)

// reflection: allow interpreted code to import "github.com/cosmos72/gomacro/ast2"
func init() {
	imports.Packages["github.com/cosmos72/gomacro/ast2"] = imports.Package{
		Binds: map[string]r.Value{
			"AnyToAst":          r.ValueOf(AnyToAst),
			"AnyToAstWithNode":  r.ValueOf(AnyToAstWithNode),
			"AnyToAstWithSlice": r.ValueOf(AnyToAstWithSlice),
			"BlockStmtToExpr":   r.ValueOf(BlockStmtToExpr),
			"ToAst":             r.ValueOf(ToAst),
			"ToAst1":            r.ValueOf(ToAst1),
			"ToAst2":            r.ValueOf(ToAst2),
			"ToAst3":            r.ValueOf(ToAst3),
			"ToAst4":            r.ValueOf(ToAst4),
			"ToAstWithSlice":    r.ValueOf(ToAstWithSlice),
			"ToBasicLit":        r.ValueOf(ToBasicLit),
			"ToBlockStmt":       r.ValueOf(ToBlockStmt),
			"ToCallExpr":        r.ValueOf(ToCallExpr),
			"ToDecl":            r.ValueOf(ToDecl),
			"ToExpr":            r.ValueOf(ToExpr),
			"ToExprSlice":       r.ValueOf(ToExprSlice),
			"ToField":           r.ValueOf(ToField),
			"ToFieldList":       r.ValueOf(ToFieldList),
			"ToFile":            r.ValueOf(ToFile),
			"ToFuncType":        r.ValueOf(ToFuncType),
			"ToIdent":           r.ValueOf(ToIdent),
			"ToIdentSlice":      r.ValueOf(ToIdentSlice),
			"ToImportSpec":      r.ValueOf(ToImportSpec),
			"ToNode":            r.ValueOf(ToNode),
			"ToSpec":            r.ValueOf(ToSpec),
			"ToStmt":            r.ValueOf(ToStmt),
			"ToStmtSlice":       r.ValueOf(ToStmtSlice),
		},
		Types: map[string]r.Type{
			"ArrayType":      r.TypeOf((*ArrayType)(nil)).Elem(),
			"AssignStmt":     r.TypeOf((*AssignStmt)(nil)).Elem(),
			"Ast":            r.TypeOf((*Ast)(nil)).Elem(),
			"AstWithNode":    r.TypeOf((*AstWithNode)(nil)).Elem(),
			"AstWithSlice":   r.TypeOf((*AstWithSlice)(nil)).Elem(),
			"BadDecl":        r.TypeOf((*BadDecl)(nil)).Elem(),
			"BadExpr":        r.TypeOf((*BadExpr)(nil)).Elem(),
			"BadStmt":        r.TypeOf((*BadStmt)(nil)).Elem(),
			"BasicLit":       r.TypeOf((*BasicLit)(nil)).Elem(),
			"BinaryExpr":     r.TypeOf((*BinaryExpr)(nil)).Elem(),
			"BlockStmt":      r.TypeOf((*BlockStmt)(nil)).Elem(),
			"BranchStmt":     r.TypeOf((*BranchStmt)(nil)).Elem(),
			"CallExpr":       r.TypeOf((*CallExpr)(nil)).Elem(),
			"CaseClause":     r.TypeOf((*CaseClause)(nil)).Elem(),
			"ChanType":       r.TypeOf((*ChanType)(nil)).Elem(
    
func init() {
	imports.Packages["github.com/cosmos72/gomacro/ast2"] = imports.Package{
		Binds: map[string]r.Value{
			"AnyToAst":          r.ValueOf(AnyToAst),
			"AnyToAstWithNode":  r.ValueOf(AnyToAstWithNode),
			"AnyToAstWithSlice": r.ValueOf(AnyToAstWithSlice),
			"BlockStmtToExpr":   r.ValueOf(BlockStmtToExpr),
			"ToAst":             r.ValueOf(ToAst),
			"ToAst1":            r.ValueOf(ToAst1),
			"ToAst2":            r.ValueOf(ToAst2),
			"ToAst3":            r.ValueOf(ToAst3),
			"ToAst4":            r.ValueOf(ToAst4),
			"ToAstWithSlice":    r.ValueOf(ToAstWithSlice),
			"ToBasicLit":        r.ValueOf(ToBasicLit),
			"ToBlockStmt":       r.ValueOf(ToBlockStmt),
			"ToCallExpr":        r.ValueOf(ToCallExpr),
			"ToDecl":            r.ValueOf(ToDecl),
			"ToExpr":            r.ValueOf(ToExpr),
			"ToExprSlice":       r.ValueOf(ToExprSlice),
			"ToField":           r.ValueOf(ToField),
			"ToFieldList":       r.ValueOf(ToFieldList),
			"ToFile":            r.ValueOf(ToFile),
			"ToFuncType":        r.ValueOf(ToFuncType),
			"ToIdent":           r.ValueOf(ToIdent),
			"ToIdentSlice":      r.ValueOf(ToIdentSlice),
			"ToImportSpec":      r.ValueOf(ToImportSpec),
			"ToNode":            r.ValueOf(ToNode),
			"ToSpec":            r.ValueOf(ToSpec),
			"ToStmt":            r.ValueOf(ToStmt),
			"ToStmtSlice":       r.ValueOf(ToStmtSlice),
		},
		Types: map[string]r.Type{
			"ArrayType":      r.TypeOf((*ArrayType)(nil)).Elem(),
			"AssignStmt":     r.TypeOf((*AssignStmt)(nil)).Elem(),
			"Ast":            r.TypeOf((*Ast)(nil)).Elem(),
			"AstWithNode":    r.TypeOf((*AstWithNode)(nil)).Elem(),
			"AstWithSlice":   r.TypeOf((*AstWithSlice)(nil)).Elem(),
			"BadDecl":        r.TypeOf((*BadDecl)(nil)).Elem(),
			"BadExpr":        r.TypeOf((*BadExpr)(nil)).Elem(),
			"BadStmt":        r.TypeOf((*BadStmt)(nil)).Elem(),
			"BasicLit":       r.TypeOf((*BasicLit)(nil)).Elem(),
			"BinaryExpr":     r.TypeOf((*BinaryExpr)(nil)).Elem(),
			"BlockStmt":      r.TypeOf((*BlockStmt)(nil)).Elem(),
			"BranchStmt":     r.TypeOf((*BranchStmt)(nil)).Elem(),
			"CallExpr":       r.TypeOf((*CallExpr)(nil)).Elem(),
			"CaseClause":     r.TypeOf((*CaseClause)(nil)).Elem(),
			"ChanType":       r.TypeOf((*ChanType)(nil)).Elem(),
			"CommClause":     r.TypeOf((*CommClause)(nil)).Elem(),
			"CompositeLit":   r.TypeOf((*CompositeLit)(nil)).Elem(),
			"DeclSlice":      r.TypeOf((*DeclSlice)(nil)).Elem(),
			"DeclStmt":       r.TypeOf((*DeclStmt)(nil)).Elem(),
			"DeferStmt":      r.TypeOf((*DeferStmt)(nil)).Elem(),
			"Ellipsis":       r.TypeOf((*Ellipsis)(nil)).Elem(),
			"EmptyStmt":      r.TypeOf((*EmptyStmt)(nil)).Elem(),
			"ExprSlice":      r.TypeOf((*ExprSlice)(nil)).Elem(),
			"ExprStmt":       r.TypeOf((*ExprStmt)(nil)).Elem(),
			"Field":          r.TypeOf((*Field)(nil)).Elem(),
			"FieldList":      r.TypeOf((*FieldList)(nil)).Elem(),
			"FieldSlice":     r.TypeOf((*FieldSlice)(nil)).Elem(),
			"File":           r.TypeOf((*File)(nil)).Elem(),
			"ForStmt":        r.TypeOf((*ForStmt)(nil)).Elem(),
			"FuncDecl":       r.TypeOf((*FuncDecl)(nil)).Elem(),
			"FuncLit":        r.TypeOf((*FuncLit)(nil)).Elem(),
			"FuncType":       r.TypeOf((*FuncType)(nil)).Elem(),
			"GenDecl":        r.TypeOf((*GenDecl)(nil)).Elem(),
			"GoStmt":         r.TypeOf((*GoStmt)(nil)).Elem(),
			"Ident":          r.TypeOf((*Ident)(nil)).Elem(),
			"IdentSlice":     r.TypeOf((*IdentSlice)(nil)).Elem(),
			"IfStmt":         r.TypeOf((*IfStmt)(nil)).Elem(),
			"ImportSpec":     r.TypeOf((*ImportSpec)(nil)).Elem(),
			"IncDecStmt":     r.TypeOf((*IncDecStmt)(nil)).Elem(),
			"IndexExpr":      r.TypeOf((*IndexExpr)(nil)).Elem(),
			"InterfaceType":  r.TypeOf((*InterfaceType)(nil)).Elem(),
			"KeyValueExpr":   r.TypeOf((*KeyValueExpr)(nil)).Elem(),
			"LabeledStmt":    r.TypeOf((*LabeledStmt)(nil)).Elem(),
			"MapType":        r.TypeOf((*MapType)(nil)).Elem(),
			"NodeSlice":      r.TypeOf((*NodeSlice)(nil)).Elem(),
			"Package":        r.TypeOf((*Package)(nil)).Elem(),
			"ParenExpr":      r.TypeOf((*ParenExpr)(nil)).Elem(),
			"RangeStmt":      r.TypeOf((*RangeStmt)(nil)).Elem(),
			"ReturnStmt":     r.TypeOf((*ReturnStmt)(nil)).Elem(),
			"SelectStmt":     r.TypeOf((*SelectStmt)(nil)).Elem(),
			"SelectorExpr":   r.TypeOf((*SelectorExpr)(nil)).Elem(),
			"SendStmt":       r.TypeOf((*SendStmt)(nil)).Elem(),
			"SliceExpr":      r.TypeOf((*SliceExpr)(nil)).Elem(),
			"SpecSlice":      r.TypeOf((*SpecSlice)(nil)).Elem(),
			"StarExpr":       r.TypeOf((*StarExpr)(nil)).Elem(),
			"StmtSlice":      r.TypeOf((*StmtSlice)(nil)).Elem(),
			"StructType":     r.TypeOf((*StructType)(nil)).Elem(),
			"SwitchStmt":     r.TypeOf((*SwitchStmt)(nil)).Elem(),
			"TypeAssertExpr": r.TypeOf((*TypeAssertExpr)(nil)).Elem(),
			"TypeSpec":       r.TypeOf((*TypeSpec)(nil)).Elem(),
			"TypeSwitchStmt": r.TypeOf((*TypeSwitchStmt)(nil)).Elem(),
			"UnaryExpr":      r.TypeOf((*UnaryExpr)(nil)).Elem(),
			"ValueSpec":      r.TypeOf((*ValueSpec)(nil)).Elem(),
		},
		Proxies: map[string]r.Type{
			"Ast":          r.TypeOf((*Ast_github_com_cosmos72_gomacro_ast2)(nil)).Elem(),
			"AstWithNode":  r.TypeOf((*AstWithNode_github_com_cosmos72_gomacro_ast2)(nil)).Elem(),
			"AstWithSlice": r.TypeOf((*AstWithSlice_github_com_cosmos72_gomacro_ast2)(nil)).Elem(),
		}}
}