SOURCE_FILE
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_trait"
    GENERIC_PARAM_LIST
      L_ANGLE "<"
      TYPE_PARAM
        NAME
          IDENT "F"
      R_ANGLE ">"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE "\n"
    WHERE_CLAUSE
      WHERE_KW "where"
      WHITESPACE "\n    "
      WHERE_PRED
        FOR_KW "for"
        GENERIC_PARAM_LIST
          L_ANGLE "<"
          LIFETIME_PARAM
            LIFETIME
              LIFETIME_IDENT "'a"
          R_ANGLE ">"
        WHITESPACE " "
        PATH_TYPE
          PATH
            PATH_SEGMENT
              NAME_REF
                IDENT "F"
        COLON ":"
        WHITESPACE " "
        TYPE_BOUND_LIST
          TYPE_BOUND
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "Fn"
                  PARAM_LIST
                    L_PAREN "("
                    PARAM
                      REF_TYPE
                        AMP "&"
                        LIFETIME
                          LIFETIME_IDENT "'a"
                        WHITESPACE " "
                        PATH_TYPE
                          PATH
                            PATH_SEGMENT
                              NAME_REF
                                IDENT "str"
                    R_PAREN ")"
      COMMA ","
    WHITESPACE "\n"
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_ref"
    GENERIC_PARAM_LIST
      L_ANGLE "<"
      TYPE_PARAM
        NAME
          IDENT "F"
      R_ANGLE ">"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE "\n"
    WHERE_CLAUSE
      WHERE_KW "where"
      WHITESPACE "\n    "
      WHERE_PRED
        FOR_KW "for"
        GENERIC_PARAM_LIST
          L_ANGLE "<"
          LIFETIME_PARAM
            LIFETIME
              LIFETIME_IDENT "'a"
          R_ANGLE ">"
        WHITESPACE " "
        REF_TYPE
          AMP "&"
          LIFETIME
            LIFETIME_IDENT "'a"
          WHITESPACE " "
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  IDENT "F"
        COLON ":"
        WHITESPACE " "
        TYPE_BOUND_LIST
          TYPE_BOUND
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "Debug"
      COMMA ","
    WHITESPACE "\n"
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_parens"
    GENERIC_PARAM_LIST
      L_ANGLE "<"
      TYPE_PARAM
        NAME
          IDENT "F"
      R_ANGLE ">"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE "\n"
    WHERE_CLAUSE
      WHERE_KW "where"
      WHITESPACE "\n    "
      WHERE_PRED
        FOR_KW "for"
        GENERIC_PARAM_LIST
          L_ANGLE "<"
          LIFETIME_PARAM
            LIFETIME
              LIFETIME_IDENT "'a"
          R_ANGLE ">"
        WHITESPACE " "
        PAREN_TYPE
          L_PAREN "("
          REF_TYPE
            AMP "&"
            LIFETIME
              LIFETIME_IDENT "'a"
            WHITESPACE " "
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "F"
          R_PAREN ")"
        COLON ":"
        WHITESPACE " "
        TYPE_BOUND_LIST
          TYPE_BOUND
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "Fn"
                  PARAM_LIST
                    L_PAREN "("
                    PARAM
                      REF_TYPE
                        AMP "&"
                        LIFETIME
                          LIFETIME_IDENT "'a"
                        WHITESPACE " "
                        PATH_TYPE
                          PATH
                            PATH_SEGMENT
                              NAME_REF
                                IDENT "str"
                    R_PAREN ")"
      COMMA ","
    WHITESPACE "\n"
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_slice"
    GENERIC_PARAM_LIST
      L_ANGLE "<"
      TYPE_PARAM
        NAME
          IDENT "F"
      R_ANGLE ">"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE "\n"
    WHERE_CLAUSE
      WHERE_KW "where"
      WHITESPACE "\n    "
      WHERE_PRED
        FOR_KW "for"
        GENERIC_PARAM_LIST
          L_ANGLE "<"
          LIFETIME_PARAM
            LIFETIME
              LIFETIME_IDENT "'a"
          R_ANGLE ">"
        WHITESPACE " "
        SLICE_TYPE
          L_BRACK "["
          REF_TYPE
            AMP "&"
            LIFETIME
              LIFETIME_IDENT "'a"
            WHITESPACE " "
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "F"
          R_BRACK "]"
        COLON ":"
        WHITESPACE " "
        TYPE_BOUND_LIST
          TYPE_BOUND
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "Eq"
      COMMA ","
    WHITESPACE "\n"
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_qpath"
    GENERIC_PARAM_LIST
      L_ANGLE "<"
      TYPE_PARAM
        NAME
          IDENT "T"
      R_ANGLE ">"
    PARAM_LIST
      L_PAREN "("
      PARAM
        IDENT_PAT
          NAME
            IDENT "_t"
        COLON ":"
        WHITESPACE " "
        REF_TYPE
          AMP "&"
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  IDENT "T"
      R_PAREN ")"
    WHITESPACE "\n"
    WHERE_CLAUSE
      WHERE_KW "where"
      WHITESPACE "\n    "
      WHERE_PRED
        FOR_KW "for"
        GENERIC_PARAM_LIST
          L_ANGLE "<"
          LIFETIME_PARAM
            LIFETIME
              LIFETIME_IDENT "'a"
          R_ANGLE ">"
        WHITESPACE " "
        PATH_TYPE
          PATH
            PATH
              PATH_SEGMENT
                L_ANGLE "<"
                REF_TYPE
                  AMP "&"
                  LIFETIME
                    LIFETIME_IDENT "'a"
                  WHITESPACE " "
                  PATH_TYPE
                    PATH
                      PATH_SEGMENT
                        NAME_REF
                          IDENT "T"
                WHITESPACE " "
                AS_KW "as"
                WHITESPACE " "
                PATH_TYPE
                  PATH
                    PATH_SEGMENT
                      NAME_REF
                        IDENT "Baz"
                R_ANGLE ">"
            COLON2 "::"
            PATH_SEGMENT
              NAME_REF
                IDENT "Foo"
        COLON ":"
        WHITESPACE " "
        TYPE_BOUND_LIST
          TYPE_BOUND
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "Iterator"
      COMMA ","
    WHITESPACE "\n"
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_for_fn"
    GENERIC_PARAM_LIST
      L_ANGLE "<"
      TYPE_PARAM
        NAME
          IDENT "T"
      R_ANGLE ">"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE "\n"
    WHERE_CLAUSE
      WHERE_KW "where"
      WHITESPACE "\n    "
      WHERE_PRED
        FOR_KW "for"
        GENERIC_PARAM_LIST
          L_ANGLE "<"
          LIFETIME_PARAM
            LIFETIME
              LIFETIME_IDENT "'a"
          R_ANGLE ">"
        WHITESPACE " "
        FOR_TYPE
          FOR_KW "for"
          GENERIC_PARAM_LIST
            L_ANGLE "<"
            LIFETIME_PARAM
              LIFETIME
                LIFETIME_IDENT "'b"
            R_ANGLE ">"
          WHITESPACE " "
          FN_PTR_TYPE
            FN_KW "fn"
            PARAM_LIST
              L_PAREN "("
              PARAM
                REF_TYPE
                  AMP "&"
                  LIFETIME
                    LIFETIME_IDENT "'a"
                  WHITESPACE " "
                  PATH_TYPE
                    PATH
                      PATH_SEGMENT
                        NAME_REF
                          IDENT "T"
              COMMA ","
              WHITESPACE " "
              PARAM
                REF_TYPE
                  AMP "&"
                  LIFETIME
                    LIFETIME_IDENT "'b"
                  WHITESPACE " "
                  PATH_TYPE
                    PATH
                      PATH_SEGMENT
                        NAME_REF
                          IDENT "T"
              R_PAREN ")"
        COLON ":"
        WHITESPACE " "
        TYPE_BOUND_LIST
          TYPE_BOUND
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "Copy"
      COMMA ","
    WHITESPACE "\n"
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
