protected override object InnerCallFunction(string functionName, params object[] args)
        {
            object result;
            int    argumentCount = args.Length;
            var    processedArgs = new object[argumentCount];

            if (argumentCount > 0)
            {
                for (int argumentIndex = 0; argumentIndex < argumentCount; argumentIndex++)
                {
                    processedArgs[argumentIndex] = MapToMsieType(args[argumentIndex]);
                }
            }

            try
            {
                result = _jsEngine.CallFunction(functionName, processedArgs);
            }
            catch (OriginalJsRuntimeException e)
            {
                throw ConvertMsieJsRuntimeExceptionToJsRuntimeException(e);
            }

            result = MapToHostType(result);

            return(result);
        }