(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_dir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (C {<cd>} 
                              {
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<dirname>} {($ Id.VSub_Number '$0')})
                                )
                              }
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<pwd>})
                      ]
                    )
                )
              )
            }
          spids: [55]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:build_dir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: (C {<cd>} {<.>})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<pwd>})
                      ]
                    )
                )
              )
            }
          spids: [71]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arrow_glib_build_dir)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name build_dir) <'/arrow-glib/'>)}
          spids: [84]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:libtool_dir)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name arrow_glib_build_dir) <'/.libs'>)}
          spids: [92]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name libtool_dir))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LD_LIBRARY_PATH)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name libtool_dir) <':'> (${ Id.VSub_Name LD_LIBRARY_PATH))}
                  spids: [118]
                )
              ]
            )
          ]
          spids: [100 115]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name arrow_glib_build_dir))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LD_LIBRARY_PATH)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ (${ Id.VSub_Name arrow_glib_build_dir) <':'> 
                            (${ Id.VSub_Name LD_LIBRARY_PATH)
                          )
                        }
                      spids: [150]
                    )
                  ]
                )
              ]
              spids: [132 147]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ <Makefile>)} {<-a>} 
                      {(DQ (${ Id.VSub_Name NO_MAKE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<make>} {<-j8>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_QMark '$?')}
                )
              ]
            )
          ]
          spids: [167 195]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arrow_glib_typelib_dir)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name ARROW_GLIB_TYPELIB_DIR))}
          spids: [215]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name arrow_glib_typelib_dir))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arrow_glib_typelib_dir)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name build_dir) <'/arrow-glib'>)}
                  spids: [240]
                )
              ]
            )
          ]
          spids: [222 237]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name arrow_glib_typelib_dir))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GI_TYPELIB_PATH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name arrow_glib_typelib_dir) <':'> 
                        (${ Id.VSub_Name GI_TYPELIB_PATH)
                      )
                    }
                  spids: [269]
                )
              ]
            )
          ]
          spids: [251 266]
        )
      ]
    )
    (C {(${ Id.VSub_Name GDB)} {<ruby>} {(${ Id.VSub_Name test_dir) <'/run-test.rb'>} 
      {(DQ ($ Id.VSub_At '$@'))}
    )
  ]
)