private Dispatcher Create(SetOrGet gos)
{
MemberInfo[] candidates = _type.GetMember(_name, MemberTypes.Property|MemberTypes.Field, RuntimeServices.DefaultBindingFlags);
if (candidates.Length == 0) return FindExtension(GetCandidateExtensions(gos));
if (candidates.Length > 1) throw new AmbiguousMatchException(Builtins.join(candidates, ", "));
return EmitDispatcherFor(candidates[0], gos);
}