internal bool IsNameSubsetOf (string target)
{
if (Name == null)
return (target == null);
if (target == null)
return true;
int wildcard = Name.LastIndexOf ('*');
if (wildcard == 0)
return true; // *
if (wildcard == -1)
wildcard = Name.Length; // exact match
return (String.Compare (Name, 0, target, 0, wildcard, true, CultureInfo.InvariantCulture) == 0);
}