(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LOG_TAG)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(basename)} {($ VSub_Number "$0")})])
                  left_token: <Left_Backtick "`">
                  spids: [15 19]
                )
              )
            }
          spids: [13]
        )
      ]
      spids: [13]
    )
    (FuncDef
      name: log
      body: 
        (BraceGroup
          children: [(C {(logger)} {(-t)} {($ VSub_Name "$LOG_TAG")} {($ VSub_Number "$1")})]
          spids: [27]
        )
      spids: [23 26]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{(DQ ($ VSub_Number "$1"))} right:{(DQ )})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ("You must provide the path of a LVM volume group."))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[66])]
            )
            (C {(exit)} {(100)})
          ]
          spids: [-1 57]
        )
      ]
      spids: [-1 74]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(0)} spids:[77])]
      spids: [77]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:START_TIME)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s.) (Lit_Other "%") (N)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [81 89]
              )
            }
          spids: [80]
        )
      ]
      spids: [80]
    )
    (C {(log)} {(DQ ("Beginning ephemeral functional test at ") (${ VSub_Name START_TIME))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LV_NAME)
          op: Equal
          rhs: 
            {(EphemeralFunctionalTest_) 
              (CommandSubPart
                command_list: (CommandList children:[(C {(uuidgen)})])
                left_token: <Left_CommandSub "$(">
                spids: [102 104]
              )
            }
          spids: [100]
        )
      ]
      spids: [100]
    )
    (C {(log)} {(DQ ("Creating LV ") (${ VSub_Name LV_NAME) (" in VG ") ($ VSub_Number "$1"))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LV_CREATION_OUTPUT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [
                          {(/sbin/lvcreate)}
                          {($ VSub_Number "$1")}
                          {(-n)}
                          {(${ VSub_Name LV_NAME)}
                          {(-L)}
                          {(4M)}
                          {(-A)}
                          {(n)}
                        ]
                        redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[140])]
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [121 142]
              )
            }
          spids: [120]
        )
      ]
      spids: [120]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CREATION_TIME)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s.) (Lit_Other "%") (N)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [145 153]
              )
            }
          spids: [144]
        )
      ]
      spids: [144]
    )
    (C {(log)} 
      {
        (DQ ("LV ") (${ VSub_Name LV_NAME) (" created in ") 
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Pipeline
                    children: [
                      (C {(echo)} {(DQ (${ VSub_Name CREATION_TIME) (-) (${ VSub_Name START_TIME))})
                      (C {(bc)} {(-l)})
                    ]
                    negated: False
                  )
                ]
              )
            left_token: <Left_CommandSub "$(">
            spids: [163 181]
          ) (" seconds")
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(echo)} {(${ VSub_Name LV_CREATION_OUTPUT)})
                    (C {(egrep)} {(-q)} {(SQ <"(Input/output error|read failed)">)})
                  ]
                  negated: False
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(1)} spids:[208])]
              spids: [208]
            )
          ]
          spids: [-1 205]
        )
      ]
      spids: [-1 211]
    )
    (C {(log)} {(DQ ("Ephemeral functional test result: ") (${ VSub_Name LV_CREATION_OUTPUT))})
    (SimpleCommand
      words: [
        {(/sbin/lvremove)}
        {(-f)}
        {(/dev/) ($ VSub_Number "$1") (/) (${ VSub_Name LV_NAME)}
        {(-A)}
        {(n)}
      ]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[242])
        (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[245])
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:END_TIME)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s.) (Lit_Other "%") (N)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [249 257]
              )
            }
          spids: [248]
        )
      ]
      spids: [248]
    )
    (C {(log)} 
      {
        (DQ ("LV ") (${ VSub_Name LV_NAME) (" removed in ") 
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Pipeline
                    children: [
                      (C {(echo)} {(DQ (${ VSub_Name END_TIME) (-) (${ VSub_Name CREATION_TIME))})
                      (C {(bc)} {(-l)})
                    ]
                    negated: False
                  )
                ]
              )
            left_token: <Left_CommandSub "$(">
            spids: [267 285]
          ) (" seconds")
        )
      }
    )
    (C {(log)} 
      {
        (DQ ("Duration of test: ") 
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Pipeline
                    children: [
                      (C {(echo)} {(DQ (${ VSub_Name END_TIME) (-) (${ VSub_Name START_TIME))})
                      (C {(bc)} {(-l)})
                    ]
                    negated: False
                  )
                ]
              )
            left_token: <Left_CommandSub "$(">
            spids: [293 311]
          ) (" seconds")
        )
      }
    )
    (C {(log)} {(DQ ("Completed ephemeral functional test at ") (${ VSub_Name END_TIME))})
    (C {(echo)} {($ VSub_Name "$FAILED")})
    (C {(exit)} {($ VSub_Name "$FAILED")})
  ]
)