(command.AndOr
  ops: [Id.Op_DAmp Id.Op_DAmp]
  children: [
    (command.ShFunction
      name: _screen_sessions
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'sessions=') 
                (sh_array_literal
                  left: (Token id:Id.Op_LParen val:'(' span_id:14)
                  words: [
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:16)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(command)} {(screen)} {(-ls)})
                                  (C {(sed)} {(-ne)} 
                                    {
                                      (SQ 
                                        (Token
                                          id: Id.Lit_Chars
                                          val: 
's|^\\t\\{1,\\}\\([0-9]\\{1,\\}\\.[^\\t]\\{1,\\}\\).*'
                                          span_id: 33
                                        )
                                      ) (DQ ($ Id.VSub_Number '$1')) (SQ (Token id:Id.Lit_Chars val:'.*$|\\1|p' span_id:39))
                                    }
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  ]
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName '$cur')}
                              right: 
                                {
                                  (word_part.ExtGlob
                                    op: (Token id:Id.ExtGlob_Plus val:'+(' span_id:55)
                                    arms: [{('[0-9]')}]
                                  ) 
                                  (word_part.ExtGlob
                                    op: (Token id:Id.ExtGlob_QMark val:'?(' span_id:58)
                                    arms: [{(.) (Id.Lit_Other '*')}]
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:64)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:74)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:76)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: '${sessions[@]}'
                                                    span_id: 83
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [73]
                        )
                      ]
                    )
                  ]
                  spids: [47 66]
                )
              ]
              else_action: [
                (C {(local)} {(-A)} {(res)})
                (C {(local)} {(i)} {(tmp)})
                (command.ForEach
                  iter_name: i
                  iter_words: [
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:sessions span_id:125)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                  ]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.IndexedName
                                  name: res
                                  index: 
                                    (arith_expr.ArithWord
                                      w: 
                                        {
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:i span_id:150)
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {('+([0-9]).')}
                                                replace: {}
                                                replace_mode: Id.Lit_Pound
                                              )
                                          )
                                        }
                                    )
                                )
                              op: assign_op.PlusEqual
                              rhs: {(DQ (' ') ($ Id.VSub_DollarName '$i'))}
                              spids: [135]
                            )
                          ]
                        )
                      ]
                    )
                )
                (command.ForEach
                  iter_name: i
                  iter_words: [
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:res span_id:169)
                        prefix_op: (Id.VSub_Bang)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                  ]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:res span_id:182)
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              (arith_expr.ArithWord
                                                w: {($ Id.VSub_DollarName '$i')}
                                              )
                                          )
                                      )
                                    }
                                  right: 
                                    {
                                      (word_part.EscapedLiteral
                                        token: (Token id:Id.Lit_EscapedChar val:'\\ ' span_id:190)
                                      ) (Id.Lit_Other '*') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\ ' span_id:192)) 
                                      (Id.Lit_Other '*')
                                    }
                                )
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tmp)
                                  op: assign_op.PlusEqual
                                  rhs: 
                                    {
                                      (DQ (' ') 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:res span_id:203)
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$i')}
                                                )
                                            )
                                        )
                                      )
                                    }
                                  spids: [199]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tmp)
                                  op: assign_op.PlusEqual
                                  rhs: {(DQ (' ') ($ Id.VSub_DollarName '$i'))}
                                  spids: [212]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:COMPREPLY)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (sh_array_literal
                            left: (Token id:Id.Op_LParen val:'(' span_id:223)
                            words: [
                              {
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:225)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(compgen)} {(-W)} 
                                          {(SQ (Token id:Id.Lit_Chars val:'$tmp' span_id:232))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                        )
                                      ]
                                    )
                                )
                              }
                            ]
                          )
                        }
                      spids: [222]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _screen
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(cur)} {(prev)} {(words)} {(cword)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(_init_completion)})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:274)
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: 
                                (arith_expr.VarRef
                                  token: (Token id:Id.Lit_ArithVarLike val:cword span_id:281)
                                )
                              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)})
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:288)
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: 
                        {
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:words span_id:296)
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: 
                                      (arith_expr.VarRef
                                        token: (Token id:Id.Lit_ArithVarLike val:cword span_id:298)
                                      )
                                    right: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)})
                                  )
                              )
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [{(-) (Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']')}]
                          action: [
                            (C {(_screen_sessions)})
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:317)
                              arg_word: {(0)}
                            )
                          ]
                          spids: [307 311 322 -1]
                        )
                      ]
                    )
                  ]
                  spids: [278 290]
                )
              ]
            )
            (C {(local)} {(i)})
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: (sh_lhs_expr.Name name:i)
                  right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_LessEqual
                  left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:346))
                  right: 
                    (arith_expr.VarRef
                      token: (Token id:Id.Lit_ArithVarLike val:cword span_id:350)
                    )
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: 
                        {
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:words span_id:366)
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: 
                                  (arith_expr.VarRef
                                    token: (Token id:Id.Lit_ArithVarLike val:i span_id:368)
                                  )
                              )
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [
                            {(-r)}
                            {(-R)}
                            {(-d)}
                            {(-D)}
                            {(-x)}
                            {(-s)}
                            {(-c)}
                            {(-T)}
                            {(-e)}
                            {(-h)}
                            {(-p)}
                            {(-S)}
                            {(-t)}
                          ]
                          action: [
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: (sh_lhs_expr.Name name:i)
                                )
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:412)
                            )
                          ]
                          spids: [375 400 415 -1]
                        )
                        (case_arm
                          pat_list: [{(-) (Id.Lit_Star '*')}]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:423)
                            )
                          ]
                          spids: [418 420 426 -1]
                        )
                      ]
                    )
                    (C {(_command_offset)} {($ Id.VSub_DollarName '$i')})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:438)
                    )
                  ]
                )
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$prev')}
              arms: [
                (case_arm
                  pat_list: [{(-) (Id.Lit_LBracket '[') (rR) (Id.Lit_RBracket ']')}]
                  action: [
                    (C {(_screen_sessions)} {(SQ (Token id:Id.Lit_Chars val:Detached span_id:466))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:470)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [452 456 475 -1]
                )
                (case_arm
                  pat_list: [{(-) (Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']')}]
                  action: [
                    (C {(_screen_sessions)} {(SQ (Token id:Id.Lit_Chars val:Attached span_id:492))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:496)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [478 482 501 -1]
                )
                (case_arm
                  pat_list: [{(-x)}]
                  action: [
                    (C {(_screen_sessions)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:515)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [504 505 520 -1]
                )
                (case_arm
                  pat_list: [{(-s)}]
                  action: [
                    (C {(_shells)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:530)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [523 524 535 -1]
                )
                (case_arm
                  pat_list: [{(-c)}]
                  action: [
                    (C {(_filedir)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:545)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [538 539 550 -1]
                )
                (case_arm
                  pat_list: [{(-T)}]
                  action: [
                    (C {(_terms)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:560)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [553 554 565 -1]
                )
                (case_arm
                  pat_list: [{(-e)} {(-h)} {(-p)} {(-S)} {(-t)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:580)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [568 577 585 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                              right: {(-) (Id.Lit_Other '*')}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:606)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:612)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:614)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 
'-a -A -c -d -D -e -f -fn -fa -h -i -ln -list\n'
                                                    span_id: 621
                                                  ) 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 
'            -L -m -O -p -q -r -R -s -S -t -T -U -v -wipe -x -X --help\n'
                                                    span_id: 622
                                                  ) (Token id:Id.Lit_Chars val:'            --version' span_id:623)
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [611]
                        )
                      ]
                    )
                  ]
                  spids: [592 608]
                )
              ]
            )
          ]
        )
    )
    (C {(complete)} {(-F)} {(_screen)} {(screen)})
  ]
)