(CommandList children: [ (AndOr children: [ (C {(Lit_Other "[")} { (BracedVarSub token: <VSub_Name VARIABLES_LINKEDLIST_SH> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [9 13] ) } {(Lit_Other "]")} ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) (Assignment keyword: Assign_Declare flags: ["'-g'"] pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_LINKEDLIST_SH) op: Equal rhs: {(true)} spids: [25] ) ] spids: [21] ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [31 36] ) (/common.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [41 46] ) (/logger.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [51 56] ) (/variables.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [61 66] ) (/variables.atom.sh) } ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (define)} {(LinkedList)} ) (FuncDef name: "variable::LinkedList::new" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::new ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 172] ) ] spids: [-1 185] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(LinkedList)} {(DQ (${ VSub_At "@"))}) ] spids: [154] ) spids: [142 153] ) (FuncDef name: "variable::LinkedList::append" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::append ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 249] ) ] spids: [-1 262] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:list_token) op: Equal rhs: {($ VSub_Number "$1")} spids: [267] ) ] spids: [265] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value_token) op: Equal rhs: {($ VSub_Number "$2")} spids: [273] ) ] spids: [271] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name list_token))} {(LinkedList)} ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: {(DQ (${ VSub_Name list_token))} spids: [298] ) ] spids: [296] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:node) op:Equal spids:[308])] spids: [306] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [(assign_pair lhs:(LhsName name:nodeArr) op:Equal spids:[315])] spids: [311] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ";">)] body: (DoGroup children: [ (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name currToken))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [339] ) ] spids: [339] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name node))} {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nodeArr) op: Equal rhs: { (ArrayLiteralPart words: [ {(DQ (${ VSub_Name value_token))} {(DQ (${ VSub_Name RESULT))} ] ) } spids: [381] ) ] spids: [381] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (set)} {(DQ (${ VSub_Name currToken))} {(LinkedList)} { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (WholeArray op_id:Arith_Star) spids: [411 416] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ )} spids: [420] ) ] spids: [420] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 366] ) ] spids: [-1 430] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nodeArr) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$node")}])} spids: [433] ) ] spids: [433] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (BracedVarSub token: <VSub_Name nodeArr> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [444 450] ) ) } {(-ne)} {(2)} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} { (DQ ("Encountered node with single element at [") (${ VSub_Name currToken) ("]=[") (BracedVarSub token:<VSub_Name nodeArr> bracket_op:(WholeArray op_id:Lit_At) spids:[471476]) ("]") ) } ) (C {(exit)} {(1)}) ] spids: [-1 460] ) ] spids: [-1 486] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [491 496] ) ) } spids: [489] ) ] spids: [489] ) ] spids: [324 500] ) ) (C {(stderr)} {(DQ ("Should never get here"))}) (C {(exit)} {(1)}) ] spids: [231] ) spids: [219 230] ) (FuncDef name: "variable::LinkedList::prepend" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::prepend ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 563] ) ] spids: [-1 576] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:list_token) op: Equal rhs: {($ VSub_Number "$1")} spids: [581] ) ] spids: [579] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value_token) op: Equal rhs: {($ VSub_Number "$2")} spids: [587] ) ] spids: [585] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name list_token))} {(LinkedList)} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name list_token))}) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])} spids: [626] ) ] spids: [622] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: { (ArrayLiteralPart words: [{(DQ (${ VSub_Name value_token))} {(DQ (${ VSub_Name list_token))}] ) } spids: [639] ) ] spids: [635] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new) } {(DQ (BracedVarSub token:<VSub_Name node> bracket_op:(WholeArray op_id:Arith_Star) spids:[664669]))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [673] ) ] spids: [673] ) ] spids: [545] ) spids: [533 544] ) (FuncDef name: "variable::LinkedList::length" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::length ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 713] ) ] spids: [-1 726] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:list_token) op: Equal rhs: {($ VSub_Number "$1")} spids: [731] ) ] spids: [729] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name list_token))} {(LinkedList)} ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: {(DQ (${ VSub_Name list_token))} spids: [756] ) ] spids: [754] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:node) op:Equal spids:[766])] spids: [764] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [(assign_pair lhs:(LhsName name:nodeArr) op:Equal spids:[773])] spids: [769] ) (Assignment keyword: Assign_Declare flags: ["'-i'"] pairs: [(assign_pair lhs:(LhsName name:count) op:Equal rhs:{(0)} spids:[780])] spids: [776] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ";">)] body: (DoGroup children: [ (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name currToken))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [805] ) ] spids: [805] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name node))} {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(${ VSub_Name count)} spids: [836] ) ] spids: [836] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 832] ) ] spids: [-1 847] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nodeArr) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$node")}])} spids: [850] ) ] spids: [850] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (BracedVarSub token: <VSub_Name nodeArr> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [861 867] ) ) } {(-ne)} {(2)} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} { (DQ ("Encountered node with single element at [") (${ VSub_Name currToken) ("]=[") (BracedVarSub token:<VSub_Name nodeArr> bracket_op:(WholeArray op_id:Lit_At) spids:[888893]) ("]") ) } ) (C {(exit)} {(1)}) ] spids: [-1 877] ) ] spids: [-1 903] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: PlusEqual rhs: {(1)} spids: [906] ) ] spids: [906] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [912 917] ) ) } spids: [910] ) ] spids: [910] ) ] spids: [790 921] ) ) (C {(stderr)} {(DQ ("Should never get here"))}) (C {(exit)} {(1)}) ] spids: [695] ) spids: [683 694] ) (FuncDef name: "variable::LinkedList::index" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variables_list::index ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 969] ) ] spids: [-1 982] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [987] ) ] spids: [985] ) (Assignment keyword: Assign_Declare flags: ["'-i'"] pairs: [ (assign_pair lhs: (LhsName name:index) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [999] ) ] spids: [995] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name token))} {(LinkedList)} ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: {(DQ (${ VSub_Name token))} spids: [1028] ) ] spids: [1026] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:node) op:Equal spids:[1038])] spids: [1036] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [(assign_pair lhs:(LhsName name:nodeArr) op:Equal spids:[1045])] spids: [1041] ) (Assignment keyword: Assign_Declare flags: ["'-i'"] pairs: [(assign_pair lhs:(LhsName name:count) op:Equal rhs:{(0)} spids:[1052])] spids: [1048] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ";">)] body: (DoGroup children: [ (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name currToken))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1077] ) ] spids: [1077] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name node))} {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} { (DQ ("Invalid index [") (${ VSub_Name index) ("] for list of length [") (${ VSub_Name count) ("]") ) } ) (C {(exit)} {(1)}) ] spids: [-1 1104] ) ] spids: [-1 1128] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nodeArr) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$node")}])} spids: [1131] ) ] spids: [1131] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (BracedVarSub token: <VSub_Name nodeArr> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1142 1148] ) ) } {(-ne)} {(2)} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} { (DQ ("Encountered node with single element at [") (${ VSub_Name currToken) ("]=[") (BracedVarSub token:<VSub_Name nodeArr> bracket_op:(WholeArray op_id:Lit_At) spids:[11691174]) ("]") ) } ) (C {(exit)} {(1)}) ] spids: [-1 1158] ) ] spids: [-1 1184] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Name "$count")} {(-eq)} {($ VSub_Name "$index")} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [1208 1213] ) ) } spids: [1206] ) ] spids: [1206] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 1200] ) ] spids: [-1 1222] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: PlusEqual rhs: {(1)} spids: [1226] ) ] spids: [1226] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1232 1237] ) ) } spids: [1230] ) ] spids: [1230] ) ] spids: [1062 1241] ) ) (C {(stderr)} {(DQ ("Should never get here"))}) (C {(exit)} {(1)}) ] spids: [951] ) spids: [939 950] ) (FuncDef name: "variable::LinkedList::first" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::first ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 1293] ) ] spids: [-1 1306] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {($ VSub_Number "$1")} spids: [1311] ) ] spids: [1309] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name token))} {(LinkedList)} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (index) } {(${ VSub_Name token)} {(0)} ) ] spids: [1275] ) spids: [1263 1274] ) (FuncDef name: "variable::LinkedList::rest" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::rest ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 1381] ) ] spids: [-1 1394] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {($ VSub_Number "$1")} spids: [1399] ) ] spids: [1397] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name token))} {(LinkedList)} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name token))}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1436] ) ] spids: [1434] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name node))} {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [(C {(stderr)} {(DQ ("Called [rest] on empty list"))}) (C {(exit)} {(1)})] spids: [-1 1463] ) ] spids: [-1 1478] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [ (assign_pair lhs: (LhsName name:nodeArr) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$RESULT")}])} spids: [1486] ) ] spids: [1482] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1494 1499] ) ) } spids: [1492] ) ] spids: [1492] ) ] spids: [1363] ) spids: [1351 1362] ) (FuncDef name: "variable::LinkedList::isEmpty_c" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::isEmpty_c ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 1544] ) ] spids: [-1 1557] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1562] ) ] spids: [1560] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name token))} {(LinkedList)} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name token))}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1603] ) ] spids: [1601] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name node))} {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [-1 1630] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1638 1646] ) ] spids: [1526] ) spids: [1514 1525] ) (FuncDef name: "variable::LinkedList::toSexp" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ("variable::LinkedList::toSexp ") (${ VSub_At "@"))}) terminator: <Op_Semi ";"> ) ] spids: [-1 1681] ) ] spids: [-1 1694] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1699] ) ] spids: [1697] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOfOrExit) } {(DQ (${ VSub_Name token))} {(LinkedList)} ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: {(DQ (${ VSub_Name token))} spids: [1728] ) ] spids: [1726] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:node) op:Equal spids:[1738])] spids: [1736] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [(assign_pair lhs:(LhsName name:nodeArr) op:Equal spids:[1745])] spids: [1741] ) (Assignment keyword: Assign_Declare flags: ["'-a'"] pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: {(ArrayLiteralPart)} spids: [1752] ) ] spids: [1748] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ";">)] body: (DoGroup children: [ (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name currToken))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:node) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1778] ) ] spids: [1778] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name node))} {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name output> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1813 1819] ) } right: {(0)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ ("()"))} spids: [1831] ) ] spids: [1831] ) ] spids: [-1 1828] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ ("(") (BracedVarSub token: <VSub_Name output> bracket_op: (WholeArray op_id:Lit_At) spids: [1843 1848] ) (")") ) } spids: [1840] ) ] spids: [1840] ) ] spids: [1837 1853] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 1805] ) ] spids: [-1 1861] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nodeArr) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$node")}])} spids: [1864] ) ] spids: [1864] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (BracedVarSub token: <VSub_Name nodeArr> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1875 1881] ) ) } {(-ne)} {(2)} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} { (DQ ("Encountered node with single element at [") (${ VSub_Name currToken) ("]=[") (BracedVarSub token:<VSub_Name nodeArr> bracket_op:(WholeArray op_id:Lit_At) spids:[19021907]) ("]") ) } ) (C {(exit)} {(1)}) ] spids: [-1 1891] ) ] spids: [-1 1917] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (toSexp)} { (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [1925 1930] ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name RESULT))}])} spids: [1933] ) ] spids: [1933] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currToken) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name nodeArr> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1945 1950] ) ) } spids: [1943] ) ] spids: [1943] ) ] spids: [1763 1954] ) ) (Sentence child: (C {(stderr)} {(DQ ("should never get here"))}) terminator: <Op_Semi ";"> ) (C {(exit)} {(1)}) ] spids: [1663] ) spids: [1651 1662] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Number "$0")} {(KW_Bang "!") (Lit_Other "=")} {($ VSub_Name "$BASH_SOURCE")} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [(ControlFlow token:<ControlFlow_Return return>)] spids: [-1 1991] ) ] spids: [-1 1996] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (A))}) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var_A) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2031] ) ] spids: [2031] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (B))}) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var_B) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2051] ) ] spids: [2051] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (C))}) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var_C) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2071] ) ] spids: [2071] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (D))}) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var_D) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2091] ) ] spids: [2091] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2115] ) ] spids: [2115] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {($ VSub_Name "$vCode")} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {(DQ (${ VSub_Name RESULT))} {(DQ ("length empty list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (prepend) } {(${ VSub_Name vCode)} {(${ VSub_Name var_A)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode_1) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2170] ) ] spids: [2170] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {(${ VSub_Name vCode_1)} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(1)} {(DQ (${ VSub_Name RESULT))} {(DQ ("length after adding 1"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {(${ VSub_Name vCode)} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {(DQ (${ VSub_Name RESULT))} {(DQ ("length after adding 1 - original list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (prepend) } {(${ VSub_Name vCode_1)} {(${ VSub_Name var_B)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode_2) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2262] ) ] spids: [2262] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {(${ VSub_Name vCode_2)} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(2)} {(DQ (${ VSub_Name RESULT))} {(DQ ("length after adding 2"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {(${ VSub_Name vCode_1)} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(1)} {(DQ (${ VSub_Name RESULT))} {(DQ ("length after adding 2 - middle list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {(${ VSub_Name vCode)} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {(DQ (${ VSub_Name RESULT))} {(DQ ("length after adding 1 - original list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2383] ) ] spids: [2383] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (prepend) } {(${ VSub_Name vCode)} {(${ VSub_Name var_A)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2406] ) ] spids: [2406] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (prepend) } {(${ VSub_Name vCode)} {(${ VSub_Name var_B)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2431] ) ] spids: [2431] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {($ VSub_Name "$vCode")} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(2)} {(DQ (${ VSub_Name RESULT))} {(DQ ("prepend length 2"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (index) } {($ VSub_Name "$vCode")} {(0)} ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ (B))} {(DQ (${ VSub_Name RESULT))} {(DQ ("first item of prepend list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (index) } {($ VSub_Name "$vCode")} {(1)} ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ (A))} {(DQ (${ VSub_Name RESULT))} {(DQ ("second item of prepend list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2583] ) ] spids: [2583] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name var_A)} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name var_B)} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (length) } {($ VSub_Name "$vCode")} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(2)} {(DQ (${ VSub_Name RESULT))} {(DQ ("append length 2"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (index) } {($ VSub_Name "$vCode")} {(0)} ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ (A))} {(DQ (${ VSub_Name RESULT))} {(DQ ("first item of append list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (index) } {($ VSub_Name "$vCode")} {(1)} ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ (B))} {(DQ (${ VSub_Name RESULT))} {(DQ ("second item of append list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2765] ) ] spids: [2765] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ignore) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (index) } {($ VSub_Name "$vCode")} {(0)} ) ] ) left_token: <Left_CommandSub "$("> spids: [2771 2783] ) } spids: [2770] ) ] spids: [2770] ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(1)} {($ VSub_QMark "$?")} {(DQ ("exit code length of empty list"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2812] ) ] spids: [2812] ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type)} {($ VSub_Name "$vCode")}) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(LinkedList)} {(DQ ($ VSub_Name "$RESULT"))} {(DQ ("List type"))} ) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (instanceOf)} {($ VSub_Name "$vCode")} {(LinkedList)} ) terminator: <Op_Semi ";"> ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {($ VSub_QMark "$?")} {(DQ (instanceOf))}) (Sentence child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (new)} ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:vCode) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2886] ) ] spids: [2886] ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (isEmpty_c) } {(${ VSub_Name vCode)} ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {($ VSub_QMark "$?")} {(DQ ("Return code true (0)"))} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name var_A)} ) (C {(variable) (Lit_Other ":") (Lit_Other ":") (LinkedList) (Lit_Other ":") (Lit_Other ":") (isEmpty_c) } {(${ VSub_Name vCode)} ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(1)} {($ VSub_QMark "$?")} {(DQ ("Return code false (1)"))} ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (report)}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other "[")} { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [2969 2973] ) } {(Lit_Other "]")} ) (C {(Lit_Other "[")} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "=") (Lit_Other "=")} {(DQ (debug))} {(Lit_Other "]")} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ";"> ) ] action: [(C {(variable) (Lit_Other ":") (Lit_Other ":") (printMetadata)})] spids: [-1 2995] ) ] spids: [-1 3004] ) ] )