(CommandList
  children: [
    (C {(.)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(dirname)} {($ VSub_Name '$BATS_TEST_DIRNAME')})])
          left_token: <Left_CommandSub '$('>
          spids: [9 13]
        ) (/lib/utils.sh)
      }
    )
    (FuncDef
      name: setup_asdf_dir
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BASE_DIR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(mktemp)} {(-dt)} {(asdf.XXXX)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [25 31]
                      )
                    }
                  spids: [24]
                )
              ]
              spids: [24]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:HOME)
                  op: Equal
                  rhs: {($ VSub_Name '$BASE_DIR') (/home)}
                  spids: [34]
                )
              ]
              spids: [34]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ASDF_DIR)
                  op: Equal
                  rhs: {($ VSub_Name '$HOME') (/.asdf)}
                  spids: [39]
                )
              ]
              spids: [39]
            )
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$ASDF_DIR') (/plugins))})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$ASDF_DIR') (/installs))})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$ASDF_DIR') (/shims))})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$ASDF_DIR') (/tmp))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PATH)
                  op: Equal
                  rhs: {($ VSub_Name '$ASDF_DIR') (/shims) (Lit_Other ':') ($ VSub_Name '$PATH')}
                  spids: [84]
                )
              ]
              spids: [84]
            )
          ]
          spids: [21]
        )
      spids: [17 20]
    )
    (FuncDef
      name: install_mock_plugin
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:plugin_name)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [102]
                )
              ]
              spids: [100]
            )
            (C {(cp)} {(-r)} {(DQ ($ VSub_Name '$BATS_TEST_DIRNAME') (/fixtures/dummy_plugin))} 
              {(DQ ($ VSub_Name '$ASDF_DIR') (/plugins/) ($ VSub_Name '$plugin_name'))}
            )
          ]
          spids: [97]
        )
      spids: [93 96]
    )
    (FuncDef
      name: install_mock_plugin_version
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:plugin_name)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [133]
                )
              ]
              spids: [131]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:plugin_version)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [139]
                )
              ]
              spids: [137]
            )
            (C {(mkdir)} {(-p)} 
              {
                (DQ ($ VSub_Name '$ASDF_DIR') (/installs/) ($ VSub_Name '$plugin_name') (/) 
                  ($ VSub_Name '$plugin_version')
                )
              }
            )
          ]
          spids: [128]
        )
      spids: [124 127]
    )
    (FuncDef
      name: install_dummy_plugin
      body: (BraceGroup children:[(C {(install_mock_plugin)} {(DQ (dummy))})] spids:[162])
      spids: [158 161]
    )
    (FuncDef
      name: install_dummy_version
      body: 
        (BraceGroup
          children: [(C {(install_mock_plugin_version)} {(DQ (dummy))} {(DQ ($ VSub_Number '$1'))})]
          spids: [178]
        )
      spids: [174 177]
    )
    (FuncDef
      name: clean_asdf_dir
      body: 
        (BraceGroup
          children: [(C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$BASE_DIR'))}) (C {(unset)} {(ASDF_DIR)})]
          spids: [198]
        )
      spids: [194 197]
    )
    (FuncDef
      name: setup_repo
      body: 
        (BraceGroup
          children: [
            (C {(cp)} {(-r)} {(DQ ($ VSub_Name '$BATS_TEST_DIRNAME') (/fixtures/dummy_plugins_repo))} 
              {(DQ ($ VSub_Name '$ASDF_DIR') (/repository))}
            )
            (C {(touch)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(asdf_dir)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [242 244]
                  ) (/tmp/repo-updated)
                )
              }
            )
          ]
          spids: [221]
        )
      spids: [217 220]
    )
  ]
)