SOURCE_FILE
  IMPL
    IMPL_KW "impl"
    WHITESPACE " "
    PATH_TYPE
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "S"
    WHITESPACE " "
    ASSOC_ITEM_LIST
      L_CURLY "{"
      WHITESPACE "\n    "
      FN
        FN_KW "fn"
        WHITESPACE " "
        NAME
          IDENT "a"
        PARAM_LIST
          L_PAREN "("
          SELF_PARAM
            NAME
              SELF_KW "self"
          R_PAREN ")"
        WHITESPACE " "
        BLOCK_EXPR
          STMT_LIST
            L_CURLY "{"
            R_CURLY "}"
      WHITESPACE "\n    "
      FN
        FN_KW "fn"
        WHITESPACE " "
        NAME
          IDENT "b"
        PARAM_LIST
          L_PAREN "("
          SELF_PARAM
            AMP "&"
            NAME
              SELF_KW "self"
          COMMA ","
          R_PAREN ")"
        WHITESPACE " "
        BLOCK_EXPR
          STMT_LIST
            L_CURLY "{"
            R_CURLY "}"
      WHITESPACE "\n    "
      FN
        FN_KW "fn"
        WHITESPACE " "
        NAME
          IDENT "c"
        PARAM_LIST
          L_PAREN "("
          SELF_PARAM
            AMP "&"
            LIFETIME
              LIFETIME_IDENT "'a"
            WHITESPACE " "
            NAME
              SELF_KW "self"
          COMMA ","
          R_PAREN ")"
        WHITESPACE " "
        BLOCK_EXPR
          STMT_LIST
            L_CURLY "{"
            R_CURLY "}"
      WHITESPACE "\n    "
      FN
        FN_KW "fn"
        WHITESPACE " "
        NAME
          IDENT "d"
        PARAM_LIST
          L_PAREN "("
          SELF_PARAM
            AMP "&"
            LIFETIME
              LIFETIME_IDENT "'a"
            WHITESPACE " "
            MUT_KW "mut"
            WHITESPACE " "
            NAME
              SELF_KW "self"
          COMMA ","
          WHITESPACE " "
          PARAM
            IDENT_PAT
              NAME
                IDENT "x"
            COLON ":"
            WHITESPACE " "
            PATH_TYPE
              PATH
                PATH_SEGMENT
                  NAME_REF
                    IDENT "i32"
          R_PAREN ")"
        WHITESPACE " "
        BLOCK_EXPR
          STMT_LIST
            L_CURLY "{"
            R_CURLY "}"
      WHITESPACE "\n    "
      FN
        FN_KW "fn"
        WHITESPACE " "
        NAME
          IDENT "e"
        PARAM_LIST
          L_PAREN "("
          SELF_PARAM
            MUT_KW "mut"
            WHITESPACE " "
            NAME
              SELF_KW "self"
          R_PAREN ")"
        WHITESPACE " "
        BLOCK_EXPR
          STMT_LIST
            L_CURLY "{"
            R_CURLY "}"
      WHITESPACE "\n"
      R_CURLY "}"
  WHITESPACE "\n"
