SOURCE_FILE
  TYPE_ALIAS
    TYPE_KW "type"
    WHITESPACE " "
    NAME
      IDENT "ForRef"
    WHITESPACE " "
    EQ "="
    WHITESPACE " "
    FOR_TYPE
      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 "u32"
    SEMICOLON ";"
  WHITESPACE "\n"
  TYPE_ALIAS
    TYPE_KW "type"
    WHITESPACE " "
    NAME
      IDENT "ForTup"
    WHITESPACE " "
    EQ "="
    WHITESPACE " "
    FOR_TYPE
      FOR_KW "for"
      GENERIC_PARAM_LIST
        L_ANGLE "<"
        LIFETIME_PARAM
          LIFETIME
            LIFETIME_IDENT "'a"
        R_ANGLE ">"
      WHITESPACE " "
      TUPLE_TYPE
        L_PAREN "("
        REF_TYPE
          AMP "&"
          LIFETIME
            LIFETIME_IDENT "'a"
          WHITESPACE " "
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  IDENT "u32"
        COMMA ","
        R_PAREN ")"
    SEMICOLON ";"
  WHITESPACE "\n"
  TYPE_ALIAS
    TYPE_KW "type"
    WHITESPACE " "
    NAME
      IDENT "ForSlice"
    WHITESPACE " "
    EQ "="
    WHITESPACE " "
    FOR_TYPE
      FOR_KW "for"
      GENERIC_PARAM_LIST
        L_ANGLE "<"
        LIFETIME_PARAM
          LIFETIME
            LIFETIME_IDENT "'a"
        R_ANGLE ">"
      WHITESPACE " "
      SLICE_TYPE
        L_BRACK "["
        PATH_TYPE
          PATH
            PATH_SEGMENT
              NAME_REF
                IDENT "u32"
        R_BRACK "]"
    SEMICOLON ";"
  WHITESPACE "\n"
  TYPE_ALIAS
    TYPE_KW "type"
    WHITESPACE " "
    NAME
      IDENT "ForForFn"
    WHITESPACE " "
    EQ "="
    WHITESPACE " "
    FOR_TYPE
      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 "i32"
            COMMA ","
            WHITESPACE " "
            PARAM
              REF_TYPE
                AMP "&"
                LIFETIME
                  LIFETIME_IDENT "'b"
                WHITESPACE " "
                PATH_TYPE
                  PATH
                    PATH_SEGMENT
                      NAME_REF
                        IDENT "i32"
            R_PAREN ")"
    SEMICOLON ";"
  WHITESPACE "\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "for_for_for"
    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 " "
          FOR_TYPE
            FOR_KW "for"
            GENERIC_PARAM_LIST
              L_ANGLE "<"
              LIFETIME_PARAM
                LIFETIME
                  LIFETIME_IDENT "'c"
              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"
                COMMA ","
                WHITESPACE " "
                PARAM
                  REF_TYPE
                    AMP "&"
                    LIFETIME
                      LIFETIME_IDENT "'c"
                    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"
error 21: expected a function pointer or path
error 52: expected a function pointer or path
error 88: expected a function pointer or path
error 119: expected a function pointer or path
error 195: expected a function pointer or path
