public JsonTypeMemberEntry(string jsonName, FieldInfo fieldInfo)
        {
            IsEscapingRequired = JsonWriter.IsEscapingRequired(jsonName);
            MemberType         = fieldInfo.FieldType;

            ReadValue = Accelerator.CreateInstanceGetter(fieldInfo);

            if (!fieldInfo.IsInitOnly)
            {
                WriteValue = Accelerator.CreateInstanceSetter(fieldInfo);
            }
        }
        public static MeasuringData[] CompareFieldAccess_AcceleratorReflection()
        {
            Example[] examples = TestEnvironment.Examples;
            int       m        = examples.Length - 1;

            FieldInfo fi1 = typeof(Example).GetField("DirectValue1");
            FieldInfo fi2 = typeof(Example).GetField("DirectValue2");

            Func1 getValue1 = Accelerator.CreateInstanceGetter(fi1);
            Func1 getValue2 = Accelerator.CreateInstanceGetter(fi2);

            Action a1 = () =>
            {
                int res = 0;
                for (int i = 0; i < m; i++)
                {
                    for (int z = 0; z < c_RepetitionCount; z++)
                    {
                        res = TestHelpers.Calculate(res, (int)getValue1(examples[i]), (int)getValue2(examples[i + 1]));
                    }
                }
                TestHelpers.SaveValue(res);
            };

            Action a2 = () =>
            {
                int res = 0;
                for (int i = 0; i < m; i++)
                {
                    for (int z = 0; z < c_RepetitionCount; z++)
                    {
                        res = TestHelpers.Calculate(res, (int)fi1.GetValue(examples[i]), (int)fi2.GetValue(examples[i + 1]));
                    }
                }
                TestHelpers.SaveValue(res);
            };

            return(TestEnvironment.Measure(a1, a2));
        }