Mark Set
A mark set is used in three phases:
Marking root types and root members. These are the identifiers specifically identified by the user in the includes set. In this phase it is an error to mark a type that is excluded, or to mark both a type and one of its members.
Marking members transitively reachable by those roots. In this phase if a member is visited, the member's enclosing type is marked instead, unless it is of a type that has a specific member already marked.
Retaining which members and types have been marked.
Properties
Functions
Marks a member as transitively reachable by the includes set. Returns true if the mark is new, the member will be retained, and reachable objects should be traversed.
Marks a type as transitively reachable by the includes set. Returns true if the mark is new, the type will be retained, and reachable objects should be traversed.
Marks protoMember, throwing if it is explicitly excluded. This implicitly excludes other members of the same type.
Marks type, throwing if it is explicitly excluded.