To facilitate the underlying C# runtime implementation, for each source member declaration that is a property, event, or indexer, the implementation must reserve two method signatures based on the kind of the member declaration, its name, and its type (17.2.7.1, 17.2.7.2, 17.2.7.3). It is a compile-time error for a program to declare a member whose signature matches one of these reserved signatures, even if the underlying runtime implementation does not make use of these reservations. The reserved names do not introduce declarations, thus they do not participate in member lookup. However, a declaration's associated reserved method signatures do participate in inheritance (17.2.1), and can be hidden with the new modifier (17.2.2). [Note: The reservation of these names serves three purposes: 1 To allow the underlying implementation to use an ordinary identifier as a method name for get or set access to the C# language feature. 2 To allow other languages to interoperate using an ordinary identifier as a method name for get or set access to the C# language feature. 3 To help ensure that the source accepted by one conforming compiler is accepted by another, by making the specifics of reserved member names consistent across all C# implementations. end note] The declaration of a destructor (17.12) also causes a signature to be reserved (17.2.7.4).