(FuncDef
  name: shlib_relToAbsPath
  body: 
    (BraceGroup
      children: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:shlib_path_)
              op: Equal
              rhs: {($ VSub_Number '$1')}
              spids: [47]
            )
          ]
          spids: [47]
        )
        (AndOr
          ops: [Op_DPipe]
          children: [
            (Pipeline
              children: [
                (C {(echo)} {(DQ (${ VSub_Name shlib_path_))})
                (SimpleCommand
                  words: [{(grep)} {(SQ <'^/'>)}]
                  redirects: [
                    (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                    (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                  ]
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:shlib_path_)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(pwd)})])
                          left_token: <Left_Backtick '`'>
                          spids: [83 85]
                        ) (/) (${ VSub_Name shlib_path_)
                      )
                    }
                  spids: [81]
                )
              ]
              spids: [81]
            )
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:shlib_old_)
              op: Equal
              rhs: {(${ VSub_Name shlib_path_)}
              spids: [102]
            )
          ]
          spids: [102]
        )
        (WhileUntil
          keyword: <KW_While while>
          cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
          body: 
            (DoGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:shlib_new_)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {(DQ (${ VSub_Name shlib_old_))})
                                      (C {(sed)} {(SQ <'s/[^/]*\\/\\.\\.\\/*//g;s/\\/\\.\\//\\//'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [117 132]
                          )
                        }
                      spids: [116]
                    )
                  ]
                  spids: [116]
                )
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name shlib_old_))} {(Lit_Other '=')} 
                      {(DQ (${ VSub_Name shlib_new_))} {(Lit_Other ']')}
                    )
                    (ControlFlow token:<ControlFlow_Break break>)
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:shlib_old_)
                      op: Equal
                      rhs: {(${ VSub_Name shlib_new_)}
                      spids: [158]
                    )
                  ]
                  spids: [158]
                )
              ]
              spids: [113 164]
            )
        )
        (C {(echo)} {(DQ (${ VSub_Name shlib_new_))})
        (C {(unset)} {(shlib_path_)} {(shlib_old_)} {(shlib_new_)})
      ]
      spids: [44]
    )
  spids: [40 43]
)