(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (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>"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 24]
        )
      ]
      spids: [-1 40]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:libdir)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$1"))}
          spids: [43]
        )
      ]
      spids: [43]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:private_libdir)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$2"))}
          spids: [48]
        )
      ]
      spids: [48]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(KW_Bang "!")} {(-f)} {(DQ ($ VSub_Name "$libdir") (/libjulia.so))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ("ERROR: Could not open ") ($ VSub_Name "$libdir") (/libjulia.so))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[81])]
            )
            (C {(exit)} {(2)})
          ]
          spids: [-1 70]
        )
      ]
      spids: [-1 89]
    )
    (FuncDef
      name: find_shlib
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other "[")} {(-f)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (C {(ldd)} {(DQ ($ VSub_Number "$1"))})
                        (C {(grep)} {($ VSub_Number "$2")})
                        (C {(cut)} {(-d) (SQ <" ">)} {(-f3)})
                        (C {(xargs)})
                      ]
                      negated: False
                    )
                  ]
                  spids: [-1 113]
                )
              ]
              spids: [-1 144]
            )
          ]
          spids: [97]
        )
      spids: [92 96]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBSTD)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(find_shlib)} {(DQ ($ VSub_Name "$libdir") (/libjulia.so))} 
                        {(DQ ("libstdc++.so"))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [153 164]
              )
            }
          spids: [152]
        )
      ]
      spids: [152]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBSTD_NAME)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$LIBSTD")})])
                left_token: <Left_CommandSub "$(">
                spids: [167 171]
              )
            }
          spids: [166]
        )
      ]
      spids: [166]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBSTD_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {($ VSub_Name "$LIBSTD")})])
                left_token: <Left_CommandSub "$(">
                spids: [174 178]
              )
            }
          spids: [173]
        )
      ]
      spids: [173]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  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 "]")}
                    )
                  ]
                  op_id: Op_DAmp
                )
              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: [-1 212]
        )
      ]
      spids: [-1 240]
    )
  ]
)