(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DIR)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:19)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {(cd)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:24)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(dirname)} 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: BASH_SOURCE
                                                      span_id: 30
                                                    )
                                                  bracket_op: 
                                                    (bracket_op.ArrayIndex
                                                      expr: 
                                                        (arith_expr.ArithWord
                                                          w: {(Id.Lit_Digits 0)}
                                                        )
                                                    )
                                                )
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(pwd)})
                          ]
                        )
                      ]
                    )
                )
              )
            }
          spids: [17]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_f
                      child: {($ Id.VSub_DollarName '$DIR') (/share.sh)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:58)
            )
          ]
          action: [(C {(.)} {(DQ ($ Id.VSub_DollarName '$DIR') (/share.sh))})]
          spids: [48 60]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_f
                      child: {($ Id.VSub_DollarName '$DIR') (/share)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:83)
            )
          ]
          action: [(C {(.)} {(DQ ($ Id.VSub_DollarName '$DIR') (/share))})]
          spids: [73 85]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$OCAMLC'))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:109)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OCAMLC)
                  op: assign_op.Equal
                  rhs: {(DQ (ocamlc.opt))}
                  spids: [114]
                )
              ]
            )
          ]
          spids: [98 111]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$OCAMLC')} {(DQ ($ Id.VSub_At '$@'))})
  ]
)