(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'error='> name:error)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [79]
        )
      ]
      redirects: []
    )
    (C {<echo>} {(DQ <'## checking common configuration files'>)})
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: (condition.Shell commands:[(C {<read>} {<src>} {<dest>})])
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName src))} {<Id.Lit_Equals '='>} 
                  {<'/dev/null'>} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName dest))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(C {<echo>} {($ Id.VSub_DollarName dest)} {<preserved>})]
                  spids: [117 130]
                )
              ]
              else_action: [
                (C {<echo>} {($ Id.VSub_DollarName dest)})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<cp>} {($ Id.VSub_DollarName src)} {($ Id.VSub_DollarName dest)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'error='> name:error)
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [156]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName error))} {<Id.Lit_Equals '='>} {<yes>} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)