(command.CommandList
  children: [
    (C {(.)} 
      {
        (word_part.CommandSubPart
          command_list: 
            (command.CommandList
              children: [(C {(dirname)} {($ VSub_DollarName '$BATS_TEST_DIRNAME')})]
            )
          left_token: <Left_CommandSub '$('>
        ) (/lib/utils.sh)
      }
    )
    (command.FuncDef
      name: setup_asdf_dir
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:BASE_DIR)
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(mktemp)} {(-dt)} {(asdf.XXXX)})]
                          )
                        left_token: <Left_CommandSub '$('>
                      )
                    }
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:HOME)
                  op: Equal
                  rhs: {($ VSub_DollarName '$BASE_DIR') (/home)}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ASDF_DIR)
                  op: Equal
                  rhs: {($ VSub_DollarName '$HOME') (/.asdf)}
                )
              ]
            )
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$ASDF_DIR') (/plugins))})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$ASDF_DIR') (/installs))})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$ASDF_DIR') (/shims))})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$ASDF_DIR') (/tmp))})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PATH)
                  op: Equal
                  rhs: 
                    {($ VSub_DollarName '$ASDF_DIR') (/shims) (Lit_Other ':') 
                      ($ VSub_DollarName '$PATH')
                    }
                )
              ]
            )
          ]
        )
    )
    (command.FuncDef
      name: install_mock_plugin
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:plugin_name)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                )
              ]
            )
            (C {(cp)} {(-r)} {(DQ ($ VSub_DollarName '$BATS_TEST_DIRNAME') (/fixtures/dummy_plugin))} 
              {(DQ ($ VSub_DollarName '$ASDF_DIR') (/plugins/) ($ VSub_DollarName '$plugin_name'))}
            )
          ]
        )
    )
    (command.FuncDef
      name: install_mock_plugin_version
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:plugin_name)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:plugin_version)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                )
              ]
            )
            (C {(mkdir)} {(-p)} 
              {
                (DQ ($ VSub_DollarName '$ASDF_DIR') (/installs/) ($ VSub_DollarName '$plugin_name') (/) 
                  ($ VSub_DollarName '$plugin_version')
                )
              }
            )
          ]
        )
    )
    (command.FuncDef
      name: install_dummy_plugin
      body: (command.BraceGroup children:[(C {(install_mock_plugin)} {(DQ (dummy))})])
    )
    (command.FuncDef
      name: install_dummy_version
      body: 
        (command.BraceGroup
          children: [(C {(install_mock_plugin_version)} {(DQ (dummy))} {(DQ ($ VSub_Number '$1'))})]
        )
    )
    (command.FuncDef
      name: clean_asdf_dir
      body: 
        (command.BraceGroup
          children: [
            (C {(rm)} {(-rf)} {(DQ ($ VSub_DollarName '$BASE_DIR'))})
            (C {(unset)} {(ASDF_DIR)})
          ]
        )
    )
    (command.FuncDef
      name: setup_repo
      body: 
        (command.BraceGroup
          children: [
            (C {(cp)} {(-r)} 
              {(DQ ($ VSub_DollarName '$BATS_TEST_DIRNAME') (/fixtures/dummy_plugins_repo))} {(DQ ($ VSub_DollarName '$ASDF_DIR') (/repository))}
            )
            (C {(touch)} 
              {
                (DQ 
                  (word_part.CommandSubPart
                    command_list: (command.CommandList children:[(C {(asdf_dir)})])
                    left_token: <Left_CommandSub '$('>
                  ) (/tmp/repo-updated)
                )
              }
            )
          ]
        )
    )
  ]
)