func IterateOverList(item string, list dst.Expr, statements ...dst.Stmt) *dst.RangeStmt {
	return &dst.RangeStmt{
		Key:   dst.NewIdent("_"),
		Value: dst.NewIdent(item),
		Tok:   token.DEFINE,
		X:     list,
		Body:  StatementBlock(statements...),
	}
}
IterateOverList creates a statement to iterate over the content of a list using the specified
identifier for each element in the list

for _, <item> := range <list> {
<statements>
}
package astbuilder
import (
	"github.com/dave/dst"
	"go/token"
)
func MakeList(listType dst.Expr, len dst.Expr) *dst.CallExpr {
	return &dst.CallExpr{
		Fun: dst.NewIdent("make"),
		Args: []dst.Expr{
			listType,
			len,
		},
	}
}
func AppendList(lhs dst.Expr, rhs dst.Expr) dst.Stmt {
	return SimpleAssignment(
		dst.Clone(lhs).(dst.Expr),
		token.ASSIGN,
		CallFunc("append", dst.Clone(lhs).(dst.Expr), dst.Clone(rhs).(dst.Expr)))
}