(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RUN_INSTALL_NAME_TOOL) op:Equal rhs:{(1)} spids:[143])]
      spids: [143]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-eq)} {(3)} {(Lit_Other "]")})
                    (C {(Lit_Other "[")} {(DQ (${ VSub_Number 1))} {(Lit_Other "=")} {(DQ (-I))} 
                      {(Lit_Other "]")}
                    )
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(shift)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RUN_INSTALL_NAME_TOOL)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [184]
                )
              ]
              spids: [184]
            )
          ]
          spids: [-1 178]
        )
      ]
      spids: [-1 186]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-ne)} {(2)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ("usage: ") (${ VSub_Number 0) (" [-I] FRAMEWORK DESTINATION_DIR"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[216])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 203]
        )
      ]
      spids: [-1 225]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FRAMEWORK)
          op: Equal
          rhs: {(DQ (${ VSub_Number 1))}
          spids: [238]
        )
      ]
      spids: [238]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DESTINATION_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Number 2))}
          spids: [245]
        )
      ]
      spids: [245]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FRAMEWORK_NAME)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(basename)} {(DQ (${ VSub_Name FRAMEWORK))})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [255 263]
                )
              )
            }
          spids: [253]
        )
      ]
      spids: [253]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name FRAMEWORK_NAME>
                        suffix_op: 
                          (Slice
                            begin: 
                              (ArithUnary
                                op_id: Node_UnaryMinus
                                child: (ArithWord w:{(Lit_Digits 10)})
                              )
                          )
                        spids: [271 277]
                      )
                    )
                  } {(KW_Bang "!") (Lit_Other "=")} {(DQ (.framework))} {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ (${ VSub_Number 0) (": ") (${ VSub_Name FRAMEWORK_NAME) 
                    (" does not end in .framework")
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[307])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 291]
        )
      ]
      spids: [-1 316]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FRAMEWORK_NAME_NOEXT)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name FRAMEWORK_NAME>
                  suffix_op: 
                    (Slice
                      begin: (ArithWord w:{(Lit_Digits 0)})
                      length: 
                        (ArithWord
                          w: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: 
                                      (ArithWord
                                        w: 
                                          {
                                            (BracedVarSub
                                              token: <VSub_Name FRAMEWORK_NAME>
                                              prefix_op: VSub_Pound
                                              spids: [326 329]
                                            )
                                          }
                                      )
                                    right: (ArithWord w:{(Lit_Digits 10)})
                                  )
                                spids: [325 335]
                              )
                            }
                        )
                    )
                  spids: [320 336]
                )
              )
            }
          spids: [318]
        )
      ]
      spids: [318]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS)
          op: Equal
          rhs: {(DQ (${ VSub_Name FRAMEWORK) (/Versions))}
          spids: [343]
        )
      ]
      spids: [343]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CURRENT_VERSION_LINK)
          op: Equal
          rhs: {(DQ (${ VSub_Name VERSIONS) (/Current))}
          spids: [351]
        )
      ]
      spids: [351]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CURRENT_VERSION_ID)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(readlink)} {(DQ (${ VSub_Name VERSIONS) (/Current))})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [361 370]
                )
              )
            }
          spids: [359]
        )
      ]
      spids: [359]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CURRENT_VERSION)
          op: Equal
          rhs: {(DQ (${ VSub_Name VERSIONS) (/) (${ VSub_Name CURRENT_VERSION_ID))}
          spids: [373]
        )
      ]
      spids: [373]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(KW_Bang "!")} {(-e)} 
                  {(DQ (${ VSub_Name CURRENT_VERSION) (/) (${ VSub_Name FRAMEWORK_NAME_NOEXT))} {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ (${ VSub_Number 0) (": ") (${ VSub_Name FRAMEWORK_NAME) 
                    (" does not contain a dylib")
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[426])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 410]
        )
      ]
      spids: [-1 435]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DESTINATION)
          op: Equal
          rhs: {(DQ (${ VSub_Name DESTINATION_DIR) (/) (${ VSub_Name FRAMEWORK_NAME))}
          spids: [438]
        )
      ]
      spids: [438]
    )
    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name DESTINATION_DIR))})
    (C {(rsync)} {(-acC)} {(--delete)} {(--exclude)} {(Headers)} {(--exclude)} {(PrivateHeaders)} 
      {(--include)} {(SQ <"*.so">)} {(DQ (${ VSub_Name CURRENT_VERSION) (/))} {(DQ (${ VSub_Name DESTINATION))}
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name RUN_INSTALL_NAME_TOOL))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FRAMEWORK_DYLIB)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name DESTINATION) (/) (${ VSub_Name FRAMEWORK_NAME_NOEXT))}
                  spids: [556]
                )
              ]
              spids: [556]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LC_ID_DYLIB_OLD)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(otool)} {(-l)} {(DQ (${ VSub_Name FRAMEWORK_DYLIB))})
                                    (C {(grep)} {(-A10)} {(DQ ("^ *cmd LC_ID_DYLIB") (Lit_Other "$"))})
                                    (C {(grep)} {(-m1)} {(DQ ("^ *name"))})
                                    (C {(sed)} {(-Ee)} 
                                      {(SQ <"s/^ *name (.*) \\(offset [0-9]+\\)$/\\1/">)}
                                    )
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [570 614]
                        )
                      )
                    }
                  spids: [568]
                )
              ]
              spids: [568]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:VERSION_PATH)
                  op: Equal
                  rhs: 
                    {
                      (DQ (/Versions/) (${ VSub_Name CURRENT_VERSION_ID) (/) 
                        (${ VSub_Name FRAMEWORK_NAME_NOEXT)
                      )
                    }
                  spids: [618]
                )
              ]
              spids: [618]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LC_ID_DYLIB_NEW)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} {(DQ (${ VSub_Name LC_ID_DYLIB_OLD))})
                                    (C {(sed)} {(-Ee)} 
                                      {
                                        (DQ ("s%") (${ VSub_Name VERSION_PATH) (Lit_Other "$") ("%/") 
                                          (${ VSub_Name FRAMEWORK_NAME_NOEXT) ("%")
                                        )
                                      }
                                    )
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [633 661]
                        )
                      )
                    }
                  spids: [631]
                )
              ]
              spids: [631]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name LC_ID_DYLIB_NEW))} 
                          {(KW_Bang "!") (Lit_Other "=")} {(DQ (${ VSub_Name LC_ID_DYLIB_OLD))} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(install_name_tool)} {(-id)} {(DQ (${ VSub_Name LC_ID_DYLIB_NEW))} 
                      {(DQ (${ VSub_Name FRAMEWORK_DYLIB))}
                    )
                  ]
                  spids: [-1 689]
                )
              ]
              spids: [-1 709]
            )
          ]
          spids: [-1 517]
        )
      ]
      spids: [-1 711]
    )
  ]
)