(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INFER)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [63]
        )
      ]
    )
    (C {(shift)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:COMPILE_COMMANDS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [68]
        )
      ]
    )
    (C {(shift)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APPLY_STEP)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [73]
        )
      ]
    )
    (C {(shift)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$APPLY_STEP'))} 
                  {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (1))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:95)
            )
          ]
          action: [
            (C {($ Id.VSub_DollarName '$INFER')} {(capture)} {(--compilation-database)} 
              {($ Id.VSub_DollarName '$COMPILE_COMMANDS')}
            )
            (C {(echo)} {(DQ )})
            (C {(echo)} {(DQ ("Run 'make infer-analyze' next."))})
          ]
          spids: [79 97]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$APPLY_STEP'))} 
                  {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (2))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:137)
            )
          ]
          action: [
            (C {($ Id.VSub_DollarName '$INFER')} {(analyze)})
            (C {(echo)} {(DQ )})
            (C {(echo)} {(DQ ("Run 'make infer-report' next."))})
            (C {(echo)} {(DQ ('See: http://fbinfer.com/docs/steps-for-ci.html'))})
          ]
          spids: [121 139]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$APPLY_STEP'))} 
                  {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (3))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:186)
            )
          ]
          action: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$INFER')}
                {(report)}
                {(--issues-csv)}
                {(./infer-out/report.csv)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'1>' span_id:199)
                  fd: 1
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$INFER')}
                {(report)}
                {(--issues-txt)}
                {(./infer-out/report.txt)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'1>' span_id:212)
                  fd: 1
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$INFER')}
                {(report)}
                {(--issues-json)}
                {(./infer-out/report.json)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'1>' span_id:225)
                  fd: 1
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (C {(echo)} {(DQ )})
            (C {(echo)} 
              {
                (DQ 
                  (
'Reports (report.txt, report.csv, report.json) can be found in the infer-out subdirectory.'
                  )
                )
              }
            )
          ]
          spids: [170 188]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ )})
        (C {(echo)} {(DQ ('See: http://fbinfer.com/docs/steps-for-ci.html'))})
      ]
    )
  ]
)