(CommandList children: [ (FuncDef name: list_all_command body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:plugin_name) op: Equal rhs: {($ VSub_Number "$1")} spids: [9] ) ] spids: [7] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:plugin_path) op:Equal spids:[15])] spids: [13] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:plugin_path) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(get_plugin_path)} {(DQ ($ VSub_Name "$plugin_name"))})] ) left_token: <Left_CommandSub "$("> spids: [19 25] ) } spids: [18] ) ] spids: [18] ) (C {(check_if_plugin_exists)} {(DQ ($ VSub_Name "$plugin_name"))}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:versions) op:Equal spids:[38])] spids: [36] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:versions) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(bash)} {(DQ (${ VSub_Name plugin_path) (/bin/list-all))})] ) left_token: <Left_CommandSub "$("> spids: [42 51] ) } spids: [41] ) ] spids: [41] ) (SimpleCommand words: [{(read)} {(-r)} {(-a)} {(versions_list)}] redirects: [ (Redir op_id: Redir_TLess fd: -1 arg_word: {(DQ ($ VSub_Name "$versions"))} spids: [68] ) ] more_env: [(env_pair name:IFS val:{(SQ <" ">)} spids:[55])] ) (ForEach iter_name: version iter_words: [ { (DQ (BracedVarSub token: <VSub_Name versions_list> bracket_op: (WholeArray op_id:Lit_At) spids: [83 88] ) ) } ] do_arg_iter: False body: (DoGroup children:[(C {(echo)} {(DQ (${ VSub_Name version))})] spids:[92104]) spids: [81 -1] ) ] spids: [4] ) spids: [0 3] ) ] )