IEntity ResolveMember(MemberReferenceExpression node)
{
var entity = node.Entity;
if (!ShouldRebindMember(entity))
return entity;
var ns = GetReferenceNamespace(node);
var member = NameResolutionService.Resolve(ns, node.Name);
if (null == member || !IsAccessible(member) || !IsApplicable(member, node))
{
var extension = TryToResolveMemberAsExtension(node);
if (null != extension)
return extension;
}
if (null != member)
return Disambiguate(node, member);
MemberNotFound(node, ns);
return null;
}