public void Proceed()
{
this.currentInterceptorIndex++;
try
{
if (this.currentInterceptorIndex == this.interceptors.Length)
{
this.ReturnValue = this.targetInvocation.InvokeMethodOnTarget(this.arguments);
}
else if (this.currentInterceptorIndex > this.interceptors.Length)
{
throw this.CreateExceptionForInvalidCurrentInterceptorIndex();
}
else
{
this.interceptors[this.currentInterceptorIndex].Intercept(this);
}
}
finally
{
this.currentInterceptorIndex--;
}
}