Name protection ignores abstract members
The renaming protection currently ignores all members that are abstract to avoid breaking the inheritance.
The issue was noted in #123
Is it possible to change the value type in SetCanRename from bool to an enum type, which may allow more possibilities.
For instance, some members which might NOT be renamed for 100% sure may be set as a value of "CheckLater", then place them to a collection. After processing all types and members, we check that collection and try the best to figure out whether those types should be renamed, or how they are renamed, then perform additional process to those member marked "CheckLater".
Another issue related to this one:
Explicitly implemented interface members will not be renamed. Moreover, its fully qualified name could be exposed as well.