SOURCE_FILE@0..197
  FN@0..37
    FN_KW@0..2 "fn"
    WHITESPACE@2..3 " "
    NAME@3..6
      IDENT@3..6 "foo"
    PARAM_LIST@6..8
      L_PAREN@6..7 "("
      R_PAREN@7..8 ")"
    WHITESPACE@8..9 " "
    BLOCK_EXPR@9..37
      L_CURLY@9..10 "{"
      WHITESPACE@10..11 " "
      IF_EXPR@11..35
        IF_KW@11..13 "if"
        WHITESPACE@13..14 " "
        CONDITION@14..32
          LET_KW@14..17 "let"
          WHITESPACE@17..18 " "
          TUPLE_STRUCT_PAT@18..25
            PATH@18..22
              PATH_SEGMENT@18..22
                NAME_REF@18..22
                  IDENT@18..22 "Some"
            L_PAREN@22..23 "("
            WILDCARD_PAT@23..24
              UNDERSCORE@23..24 "_"
            R_PAREN@24..25 ")"
          WHITESPACE@25..26 " "
          EQ@26..27 "="
          WHITESPACE@27..28 " "
          PATH_EXPR@28..32
            PATH@28..32
              PATH_SEGMENT@28..32
                NAME_REF@28..32
                  IDENT@28..32 "None"
        WHITESPACE@32..33 " "
        BLOCK_EXPR@33..35
          L_CURLY@33..34 "{"
          R_CURLY@34..35 "}"
      WHITESPACE@35..36 " "
      R_CURLY@36..37 "}"
  WHITESPACE@37..38 "\n"
  FN@38..196
    FN_KW@38..40 "fn"
    WHITESPACE@40..41 " "
    NAME@41..44
      IDENT@41..44 "bar"
    PARAM_LIST@44..46
      L_PAREN@44..45 "("
      R_PAREN@45..46 ")"
    WHITESPACE@46..47 " "
    BLOCK_EXPR@47..196
      L_CURLY@47..48 "{"
      WHITESPACE@48..53 "\n    "
      EXPR_STMT@53..87
        IF_EXPR@53..87
          IF_KW@53..55 "if"
          WHITESPACE@55..56 " "
          CONDITION@56..84
            LET_KW@56..59 "let"
            WHITESPACE@59..60 " "
            OR_PAT@60..77
              TUPLE_STRUCT_PAT@60..67
                PATH@60..64
                  PATH_SEGMENT@60..64
                    NAME_REF@60..64
                      IDENT@60..64 "Some"
                L_PAREN@64..65 "("
                WILDCARD_PAT@65..66
                  UNDERSCORE@65..66 "_"
                R_PAREN@66..67 ")"
              WHITESPACE@67..68 " "
              PIPE@68..69 "|"
              WHITESPACE@69..70 " "
              TUPLE_STRUCT_PAT@70..77
                PATH@70..74
                  PATH_SEGMENT@70..74
                    NAME_REF@70..74
                      IDENT@70..74 "Some"
                L_PAREN@74..75 "("
                WILDCARD_PAT@75..76
                  UNDERSCORE@75..76 "_"
                R_PAREN@76..77 ")"
            WHITESPACE@77..78 " "
            EQ@78..79 "="
            WHITESPACE@79..80 " "
            PATH_EXPR@80..84
              PATH@80..84
                PATH_SEGMENT@80..84
                  NAME_REF@80..84
                    IDENT@80..84 "None"
          WHITESPACE@84..85 " "
          BLOCK_EXPR@85..87
            L_CURLY@85..86 "{"
            R_CURLY@86..87 "}"
      WHITESPACE@87..92 "\n    "
      EXPR_STMT@92..118
        IF_EXPR@92..118
          IF_KW@92..94 "if"
          WHITESPACE@94..95 " "
          CONDITION@95..115
            LET_KW@95..98 "let"
            WHITESPACE@98..99 " "
            PIPE@99..100 "|"
            WHITESPACE@100..101 " "
            TUPLE_STRUCT_PAT@101..108
              PATH@101..105
                PATH_SEGMENT@101..105
                  NAME_REF@101..105
                    IDENT@101..105 "Some"
              L_PAREN@105..106 "("
              WILDCARD_PAT@106..107
                UNDERSCORE@106..107 "_"
              R_PAREN@107..108 ")"
            WHITESPACE@108..109 " "
            EQ@109..110 "="
            WHITESPACE@110..111 " "
            PATH_EXPR@111..115
              PATH@111..115
                PATH_SEGMENT@111..115
                  NAME_REF@111..115
                    IDENT@111..115 "None"
          WHITESPACE@115..116 " "
          BLOCK_EXPR@116..118
            L_CURLY@116..117 "{"
            R_CURLY@117..118 "}"
      WHITESPACE@118..123 "\n    "
      EXPR_STMT@123..160
        WHILE_EXPR@123..160
          WHILE_KW@123..128 "while"
          WHITESPACE@128..129 " "
          CONDITION@129..157
            LET_KW@129..132 "let"
            WHITESPACE@132..133 " "
            OR_PAT@133..150
              TUPLE_STRUCT_PAT@133..140
                PATH@133..137
                  PATH_SEGMENT@133..137
                    NAME_REF@133..137
                      IDENT@133..137 "Some"
                L_PAREN@137..138 "("
                WILDCARD_PAT@138..139
                  UNDERSCORE@138..139 "_"
                R_PAREN@139..140 ")"
              WHITESPACE@140..141 " "
              PIPE@141..142 "|"
              WHITESPACE@142..143 " "
              TUPLE_STRUCT_PAT@143..150
                PATH@143..147
                  PATH_SEGMENT@143..147
                    NAME_REF@143..147
                      IDENT@143..147 "Some"
                L_PAREN@147..148 "("
                WILDCARD_PAT@148..149
                  UNDERSCORE@148..149 "_"
                R_PAREN@149..150 ")"
            WHITESPACE@150..151 " "
            EQ@151..152 "="
            WHITESPACE@152..153 " "
            PATH_EXPR@153..157
              PATH@153..157
                PATH_SEGMENT@153..157
                  NAME_REF@153..157
                    IDENT@153..157 "None"
          WHITESPACE@157..158 " "
          BLOCK_EXPR@158..160
            L_CURLY@158..159 "{"
            R_CURLY@159..160 "}"
      WHITESPACE@160..165 "\n    "
      WHILE_EXPR@165..194
        WHILE_KW@165..170 "while"
        WHITESPACE@170..171 " "
        CONDITION@171..191
          LET_KW@171..174 "let"
          WHITESPACE@174..175 " "
          PIPE@175..176 "|"
          WHITESPACE@176..177 " "
          TUPLE_STRUCT_PAT@177..184
            PATH@177..181
              PATH_SEGMENT@177..181
                NAME_REF@177..181
                  IDENT@177..181 "Some"
            L_PAREN@181..182 "("
            WILDCARD_PAT@182..183
              UNDERSCORE@182..183 "_"
            R_PAREN@183..184 ")"
          WHITESPACE@184..185 " "
          EQ@185..186 "="
          WHITESPACE@186..187 " "
          PATH_EXPR@187..191
            PATH@187..191
              PATH_SEGMENT@187..191
                NAME_REF@187..191
                  IDENT@187..191 "None"
        WHITESPACE@191..192 " "
        BLOCK_EXPR@192..194
          L_CURLY@192..193 "{"
          R_CURLY@193..194 "}"
      WHITESPACE@194..195 "\n"
      R_CURLY@195..196 "}"
  WHITESPACE@196..197 "\n"