public bool MatchPropertySignatures(PropertySignature signature1, PropertySignature signature2)
{
if (signature1 == null && signature2 == null)
return true;
if (signature1 == null || signature2 == null)
return false;
return signature1.Attributes == signature2.Attributes &&
MatchTypes(signature1.PropertyType, signature2.PropertyType) &&
MatchManyTypes(signature1.Parameters.Select(x => x.ParameterType),
signature2.Parameters.Select(x => x.ParameterType));
}