internal Invoker(Binder binder, System.Delegate callback)
        {
            Binder   = binder;
            Callback = callback;
            var parameters = callback.Method.GetParameters();

            DelegateIsMethodStub = parameters.Length > 1 && parameters[0].ParameterType == typeof(MethodBinding);

            var skipParameters = (DelegateIsMethodStub) ? 1 : 0;

            Arguments = new object[parameters.Length - skipParameters];

            ArgumentGetters = (from parameter in parameters.Skip(skipParameters)
                               select Importer.CreateArgumentGetter(parameter.ParameterType))
                              .ToArray <Importer.ReadDelegate>();
        }