private Dispatcher EmitPropertyDispatcher(PropertyInfo property, SetOrGet gos)
{
Type[] argumentTypes = GetArgumentTypes();
MethodInfo accessor = Accessor(property, gos);
if (null == accessor) throw MissingField();
CandidateMethod found = ResolveMethod(argumentTypes, new MethodInfo[] { accessor });
if (null == found) throw MissingField();
if (SetOrGet.Get == gos) return new MethodDispatcherEmitter(_type, found, argumentTypes).Emit();
return new SetPropertyEmitter(_type, found, argumentTypes).Emit();
}