code: boolean mark(ProtoMember protoMember) {
      if (protoMember == null) throw new NullPointerException("type == null");
      if (identifierSet.excludes(protoMember)) return false;
      return members.containsKey(protoMember.type())
          ? members.put(protoMember.type(), protoMember)
          : types.add(protoMember.type());
    }
docs: Marks a member as transitively reachable by the includes set. Returns true if the mark is new,
  the member will be retained, and its own dependencies should be traversed.