(CommandList
  children: [
    (C {(Lit_Other ":")} {(convert)} {(MAM)} {(dependency)} {(info)} {(to)} {(dot)} {(input)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:COMMAND) op:Equal rhs:{(mamdot)} spids:[73])]
      spids: [73]
    )
    (Case
      to_match: 
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Subshell
                    child: 
                      (CommandList
                        children: [
                          (Sentence
                            child: (C {(getopts)} {(SQ <"[-][123:xyz]">)} {(opt)} {(--xyz)})
                            terminator: <Op_Semi ";">
                          )
                          (C {(echo)} {(0) ($ VSub_Name "$opt")})
                        ]
                      )
                    redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[97])]
                    spids: [79 95]
                  )
                ]
              )
            left_token: <Left_Backtick "`">
            spids: [78 99]
          )
        }
      arms: [
        (case_arm
          pat_list: [{(0123)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ARGV0)
                  op: Equal
                  rhs: {(DQ ("-a ") ($ VSub_Name "$COMMAND"))}
                  spids: [106]
                )
              ]
              spids: [106]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:USAGE)
                  op: Equal
                  rhs: 
                    {
                      (SQ <"\n"> <"[-?\n"> <"@(#)$Id: mamdot (AT&T Labs Research) 1997-02-16 $\n"> 
                        <"]\n">
                      ) ($ VSub_Name "$USAGE_LICENSE") 
                      (SQ <"\n"> 
                        <
"[+NAME?mamdot - make abstract machine to dot dependency graph conversion filter]\n"
                        > <"[+DESCRIPTION?"> <Lit_EscapedChar "\\b"> <mamdot> <Lit_EscapedChar "\\b"> 
                        <" reads MAM (Make Abstract Machine) target and\n"> <"\tprerequisite file descriptions from the standard input and writes a\n"> <"\t"> 
                        <Lit_EscapedChar "\\b"> <dot> <Lit_EscapedChar "\\b"> <"(1) description of the dependency graph on the standard output.\n"> 
                        <"\tMamfiles are generated by the "> <Lit_EscapedChar "\\b"> <--mam> <Lit_EscapedChar "\\b"> <" option of "> <Lit_EscapedChar "\\b"> <nmake> 
                        <Lit_EscapedChar "\\b"> <"(1) and\n"> <"\t"> <Lit_EscapedChar "\\b"> <gmake> <Lit_EscapedChar "\\b"> <"(1).]\n"> 
                        <"[i:ignore?Dependency names matching the shell "> <Lit_EscapedChar "\\a"> <pattern> <Lit_EscapedChar "\\a"> <" are\n"> <"\tignored.]:[pattern]\n"> 
                        <"[+SEE ALSO?"> <Lit_EscapedChar "\\b"> <dot> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <gmake> 
                        <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <nmake> <Lit_EscapedChar "\\b"> <"(1)]\n">
                      )
                    }
                  spids: [113]
                )
              ]
              spids: [113]
            )
          ]
          spids: [103 104 171 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:ARGV0) op:Equal rhs:{(DQ )} spids:[176])]
              spids: [176]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:USAGE)
                  op: Equal
                  rhs: {(DQ ("i:[pattern]"))}
                  spids: [181]
                )
              ]
              spids: [181]
            )
          ]
          spids: [173 174 187 -1]
        )
      ]
      spids: [76 101 189]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:OPTIND) op:Equal rhs:{(0)} spids:[199])]
              spids: [199]
            )
            (C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)} {(SQ <"-?">)})
            (C {(exit)} {(2)})
          ]
          spids: [196]
        )
      spids: [192 195]
    )
    (C {(integer)} {(Lit_VarLike "level=") (0)})
    (C {(typeset)} {(-A)} {(pwd)} {(top)})
    (C {(typeset)} {(Lit_VarLike "ignore=")} {(Lit_VarLike "tree=") (DQ ("@(make|done|prev)"))})
    (While
      cond: [(C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name "$OPT")}
              arms: [
                (case_arm
                  pat_list: [{(i)}]
                  action: [
                    (AndOr
                      children: [
                        (DBracket expr:(WordTest w:{($ VSub_Name "$ignore")}))
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:ignore)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name "$ignore") ("|"))}
                              spids: [280]
                            )
                          ]
                          spids: [280]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ignore)
                          op: Equal
                          rhs: {($ VSub_Name "$ignore") ($ VSub_Name "$OPTARG")}
                          spids: [287]
                        )
                      ]
                      spids: [287]
                    )
                  ]
                  spids: [269 270 292 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(C {(usage)})]
                  spids: [295 296 301 -1]
                )
              ]
              spids: [262 266 304]
            )
          ]
          spids: [260 306]
        )
    )
    (AndOr
      children: [
        (DBracket expr:(WordTest w:{($ VSub_Name "$ignore")}))
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:ignore)
              op: Equal
              rhs: {(DQ ("@(") ($ VSub_Name "$ignore") (")"))}
              spids: [316]
            )
          ]
          spids: [316]
        )
      ]
      op_id: Op_DAmp
    )
    (C {(list) (Lit_Other "[") (0) (Lit_Other "]") (Lit_Other "=") (all)})
    (C {(top) (Lit_Other "[") (0) (Lit_Other "]") (Lit_Other "=") (1)})
    (C {(print)} {(DQ ("digraph mam {"))})
    (C {(print)} {(DQ ("rankdir = LR"))})
    (C {(print)} {(DQ ("node [ shape = box ]"))})
    (While
      cond: [(C {(read)} {(-r)} {(label)} {(op)} {(arg)} {(arg2)} {(arg3)} {(args)})]
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_Name "$label")}
                      right: 
                        {(Lit_Other "[") (Lit_Other "[") (Lit_Other ":") (digit) (Lit_Other ":") 
                          (Lit_DRightBracket "]]") (Lit_Other "*")
                        }
                    )
                )
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:arg3)
                          op: Equal
                          rhs: {($ VSub_Name "$args")}
                          spids: [397]
                        )
                      ]
                      spids: [397]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:arg2)
                          op: Equal
                          rhs: {($ VSub_Name "$arg")}
                          spids: [401]
                        )
                      ]
                      spids: [401]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:arg)
                          op: Equal
                          rhs: {($ VSub_Name "$op")}
                          spids: [405]
                        )
                      ]
                      spids: [405]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:op)
                          op: Equal
                          rhs: {($ VSub_Name "$label")}
                          spids: [409]
                        )
                      ]
                      spids: [409]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:label) op:Equal rhs:{(0)} spids:[413])]
                      spids: [413]
                    )
                  ]
                  spids: [394]
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rule)
                  op: Equal
                  rhs: {($ VSub_Name "$arg")}
                  spids: [420]
                )
              ]
              spids: [420]
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (LogicalOr
                      left: 
                        (WordTest
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name top>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$label")}))
                                spids: [426 431]
                              )
                            }
                        )
                      right: 
                        (LogicalOr
                          left: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name "$arg")}
                              right: {(Lit_Other "*") (/) (Lit_Other "*")}
                            )
                          right: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {($ VSub_Name "$op")}
                              right: {($ VSub_Name "$tree")}
                            )
                        )
                    )
                )
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:arg)
                          op: Equal
                          rhs: 
                            {($ VSub_Name "$label") (Lit_Other ":") (Lit_Other ":") 
                              ($ VSub_Name "$arg")
                            }
                          spids: [458]
                        )
                      ]
                      spids: [458]
                    )
                    (AndOr
                      children: [
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name "$op")}
                              right: {(make)}
                            )
                        )
                        (C {(print)} 
                          {
                            (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                              ($ VSub_Name "$arg") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" [ label = ") 
                              (EscapedLiteralPart
                                token: <Lit_EscapedChar "\\\"">
                              ) ($ VSub_Name "$rule") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" ]")
                            )
                          }
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [455]
                )
              ]
              op_id: Op_DPipe
            )
            (Case
              to_match: {($ VSub_Name "$op")}
              arms: [
                (case_arm
                  pat_list: [{(make)}]
                  action: [
                    (AndOr
                      children: [
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name "$rule")}
                              right: {($ VSub_Name "$ignore")}
                            )
                        )
                        (C 
                          {(list) (Lit_Other "[") (level) (Lit_Other "]") (Lit_Other "=") 
                            (BracedVarSub
                              token: <VSub_Name list>
                              bracket_op: (ArrayIndex expr:(ArithVarRef name:level))
                              spids: [521 526]
                            ) (SQ <Lit_EscapedChar "\\n">) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$arg") 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar "\\\"">
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:level)
                          op: Equal
                          rhs: {(level) (Lit_Other "+") (1)}
                          spids: [535]
                        )
                      ]
                      spids: [535]
                    )
                    (C {(list) (Lit_Other "[") (level) (Lit_Other "]") (Lit_Other "=")})
                  ]
                  spids: [501 502 548 -1]
                )
                (case_arm
                  pat_list: [{(prev)}]
                  action: [
                    (AndOr
                      children: [
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name "$rule")}
                              right: {($ VSub_Name "$ignore")}
                            )
                        )
                        (C 
                          {(list) (Lit_Other "[") (level) (Lit_Other "]") (Lit_Other "=") 
                            (BracedVarSub
                              token: <VSub_Name list>
                              bracket_op: (ArrayIndex expr:(ArithVarRef name:level))
                              spids: [571 576]
                            ) (SQ <Lit_EscapedChar "\\n">) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$arg") 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar "\\\"">
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [551 552 585 -1]
                )
                (case_arm
                  pat_list: [{(KW_Done done)}]
                  action: [
                    (AndOr
                      children: [
                        (DBracket
                          expr: 
                            (LogicalOr
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {($ VSub_Name "$rule")}
                                  right: {($ VSub_Name "$ignore")}
                                )
                              right: 
                                (LogicalNot
                                  child: 
                                    (WordTest
                                      w: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name list>
                                            bracket_op: (ArrayIndex expr:(ArithVarRef name:level))
                                            spids: [603 608]
                                          )
                                        }
                                    )
                                )
                            )
                        )
                        (C {(print)} 
                          {
                            (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                              ($ VSub_Name "$arg") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" -> {") 
                              (BracedVarSub
                                token: <VSub_Name list>
                                bracket_op: (ArrayIndex expr:(ArithVarRef name:level))
                                spids: [622 627]
                              ) (" }")
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:level)
                          op: Equal
                          rhs: {(level-1)}
                          spids: [632]
                        )
                      ]
                      spids: [632]
                    )
                  ]
                  spids: [588 589 636 -1]
                )
                (case_arm
                  pat_list: [{(info)}]
                  action: [
                    (Case
                      to_match: {($ VSub_Name "$arg")}
                      arms: [
                        (case_arm
                          pat_list: [{(pwd)}]
                          action: [
                            (AndOr
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_Name "$arg3")}
                                      right: {(DQ (.))}
                                    )
                                )
                                (C 
                                  {(top) (Lit_Other "[") ($ VSub_Name "$label") (Lit_Other "]") 
                                    (Lit_Other "=") (1)
                                  }
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          spids: [649 650 673 -1]
                        )
                      ]
                      spids: [642 646 676]
                    )
                  ]
                  spids: [639 640 679 -1]
                )
              ]
              spids: [494 498 682]
            )
          ]
          spids: [374 684]
        )
    )
    (C {(print)} {(DQ ("}"))})
  ]
)