public void ServerCallback(IAsyncResult ar)
{
if (!(this._asyncEnd != (MethodInfo)null))
{
return;
}
RemotingMethodCachedData reflectionCachedData1 = InternalRemotingServices.GetReflectionCachedData((MethodBase)this._asyncEnd);
RemotingMethodCachedData reflectionCachedData2 = InternalRemotingServices.GetReflectionCachedData(this._msg.MethodBase);
ParameterInfo[] parameters = reflectionCachedData1.Parameters;
object[] objArray = new object[parameters.Length];
objArray[parameters.Length - 1] = (object)ar;
object[] args = this._msg.Args;
AsyncMessageHelper.GetOutArgs(reflectionCachedData2.Parameters, args, objArray);
StackBuilderSink stackBuilderSink = new StackBuilderSink(this._serverObject);
object[] outArgs1;
object ret = stackBuilderSink.PrivateProcessMessage(this._asyncEnd.MethodHandle, Message.CoerceArgs((MethodBase)this._asyncEnd, objArray, parameters), this._serverObject, out outArgs1);
if (outArgs1 != null)
{
outArgs1 = ArgMapper.ExpandAsyncEndArgsToSyncArgs(reflectionCachedData2, outArgs1);
}
stackBuilderSink.CopyNonByrefOutArgsFromOriginalArgs(reflectionCachedData2, args, ref outArgs1);
object[] outArgs2 = outArgs1;
int argCount = this._msg.ArgCount;
LogicalCallContext logicalCallContext = Thread.CurrentThread.GetMutableExecutionContext().LogicalCallContext;
IMethodCallMessage mcm = this._msg;
this.AsyncProcessResponse((IMessage) new ReturnMessage(ret, outArgs2, argCount, logicalCallContext, mcm), (ITransportHeaders)null, (Stream)null);
}