protected override bool SpecificMatches(RoleCompositionMember member)
 {
     if (!(member.Definition is MethodDefinition)) return false; // non-methods are not grouped
       var controlMethod = Members[0];
       return MethodMatcher.IsSignatureMatch(
     (MethodDefinition)member.ResolveContextualDefinition(),
     (MethodDefinition)controlMethod.ResolveContextualDefinition());
 }
 /// <summary>
 /// Checks if a member matches the condition to be part of this conflict group.
 /// </summary>
 /// <remarks>
 /// The member will always match a group that it's already part of.
 /// For an empty group, the method <see cref="MatchesEmptyGroup"/> is called.
 /// The member won't match if it's a hidden member. Hidden members can't conflict with other members.
 /// The method <see cref="SpecificMatches"/> is called to check this group's condition.
 /// </remarks>
 /// <param name="member">Member to check for a match.</param>
 /// <returns>If the member matches this group's condition.</returns>
 public bool Matches(RoleCompositionMember member)
 {
     if (member == null) throw new ArgumentNullException("member");
       if (Members.Count == 0) return MatchesEmptyGroup(member);
       if (MemberMatcher.IsMatch(Members[0].ResolveContextualDefinition(), member.ResolveContextualDefinition())) return true;
       if (member.Definition.IsHidden(Module)) return false;
       return SpecificMatches(member);
 }
 protected override bool SpecificMatches(RoleCompositionMember member)
 {
     // TODO: other things that don't match anything: constructors?
       return MemberMatcher.IsMatch(Members[0].ResolveContextualDefinition(), member.ResolveContextualDefinition());
 }