(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:locatedb)
          op: Equal
          rhs: {(DQ (/var/locate.db))}
          spids: [17]
        )
      ]
      spids: [17]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:slocatedb)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$HOME') (/.slocatedb))}
          spids: [22]
        )
      ]
      spids: [22]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} {($ VSub_Name '$slocatedb')} {(-o)} 
                  {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (--explain))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {('Warning: Secure locate keeps a private database for each user, and your\n') 
                      ("database hasn't yet been created. Until it is (probably late tonight),\n") ("I'll just use the public locate database, which will show you all\n") 
                      ('publicly accessible matches rather than those explicitly available to\n') ('account ${USER:-$LOGNAME}.\n')
                    }
                  do_expansion: False
                  here_end: EOF
                  was_filled: True
                  spids: [60]
                )
                (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[66])
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                          {(DQ (--explain))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(exit)} {(0)})]
                  spids: [-1 88]
                )
              ]
              spids: [-1 96]
            )
            (C {(touch)} {($ VSub_Name '$slocatedb')})
            (C {(chmod)} {(600)} {($ VSub_Name '$slocatedb')})
          ]
          spids: [-1 55]
        )
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-s)} {($ VSub_Name '$slocatedb')} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:locatedb)
                  op: Equal
                  rhs: {($ VSub_Name '$slocatedb')}
                  spids: [142]
                )
              ]
              spids: [142]
            )
          ]
          spids: [127 139]
        )
      ]
      else_action: [
        (SimpleCommand
          words: [
            {(echo)}
            {
              (DQ ('Warning: using public database. Use ') 
                (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Number '$0') (' --explain') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' for details.')
              )
            }
          ]
          redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[159])]
        )
      ]
      spids: [145 162]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' pattern'))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[190])]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 179]
        )
      ]
      spids: [-1 198]
    )
    (C {(exec)} {(grep)} {(-i)} {(DQ ($ VSub_Number '$1'))} {($ VSub_Name '$locatedb')})
  ]
)