(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' <libdir> <private_libdir>'))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 32]
        )
      ]
      spids: [16777215 48]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:libdir spids:[51])
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [51]
        )
      ]
      spids: [51]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:private_libdir spids:[56])
          op: Equal
          rhs: {(DQ ($ VSub_Number '$2'))}
          spids: [56]
        )
      ]
      spids: [56]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$libdir') (/libjulia.so))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('ERROR: Could not open ') ($ VSub_Name '$libdir') (/libjulia.so))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(2)})
          ]
          spids: [16777215 78]
        )
      ]
      spids: [16777215 97]
    )
    (command.FuncDef
      name: find_shlib
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(ldd)} {(DQ ($ VSub_Number '$1'))})
                        (C {(grep)} {($ VSub_Number '$2')})
                        (C {(cut)} {(-d) (SQ <' '>)} {(-f3)})
                        (C {(xargs)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [16777215 121]
                )
              ]
              spids: [16777215 152]
            )
          ]
          spids: [105]
        )
      spids: [100 104]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:LIBSTD spids:[160])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(find_shlib)} {(DQ ($ VSub_Name '$libdir') (/libjulia.so))} 
                        {(DQ ('libstdc++.so'))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [161 172]
              )
            }
          spids: [160]
        )
      ]
      spids: [160]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:LIBSTD_NAME spids:[174])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(basename)} {($ VSub_Name '$LIBSTD')})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [175 179]
              )
            }
          spids: [174]
        )
      ]
      spids: [174]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:LIBSTD_DIR spids:[181])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(dirname)} {($ VSub_Name '$LIBSTD')})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [182 186]
              )
            }
          spids: [181]
        )
      ]
      spids: [181]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                      {(DQ ($ VSub_Name '$private_libdir') (/) ($ VSub_Name '$LIBSTD_NAME'))} {(Lit_Other ']')}
                    )
                    (C {(Lit_Other '[')} {(-f)} 
                      {(DQ ($ VSub_Name '$LIBSTD_DIR') (/) ($ VSub_Name '$LIBSTD_NAME'))} {(Lit_Other ']')}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(cp)} {(-v)} {(DQ ($ VSub_Name '$LIBSTD_DIR') (/) ($ VSub_Name '$LIBSTD_NAME'))} 
              {(DQ ($ VSub_Name '$private_libdir'))}
            )
            (C {(chmod)} {(755)} {(DQ ($ VSub_Name '$private_libdir') (/) ($ VSub_Name '$LIBSTD_NAME'))})
          ]
          spids: [16777215 220]
        )
      ]
      spids: [16777215 248]
    )
  ]
)