(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} 
          {
            (braced_var_sub
              token: <Id.VSub_Name LOGGER_SH>
              suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<true>})
            )
          } {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Return return>)
      ]
    )
    (C {<declare>} {<-g>} {<Id.Lit_VarLike 'LOGGER_SH='> <true>})
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash /> <'*'>})
        ) </common.sh>
      }
    )
    (C {<declare>} {<-g>} {<Id.Lit_VarLike 'LOGGER_FILE='> (DQ <logfile.txt>)})
    (command.Simple
      words: [{<echo>}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {(DQ (${ Id.VSub_Name LOGGER_FILE))}
        )
      ]
    )
    (command.ShFunction
      name: log
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{<echo>} {(DQ (${ Id.VSub_At '@'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ (${ Id.VSub_Name LOGGER_FILE))}
                )
              ]
            )
          ]
        )
    )
  ]
)