public static JsonForgeDesc ForgeNonArray(
            string fieldName,
            JsonEventType other)
        {
            JsonDeserializerForge deserializerForge = new JsonDeserializerForgeByClassName(
                other.Detail.DeserializerClassName);

            JsonSerializerForge serializerForge;

            if (other.Detail.OptionalUnderlyingProvided == null)
            {
                serializerForge = new JsonSerializerForgeByMethod("WriteNested");
            }
            else
            {
                serializerForge = new ProxyJsonSerializerForge(
                    (
                        refs,
                        method,
                        classScope) =>
                    StaticMethod(
                        typeof(JsonSerializerUtil),
                        "WriteNested",
                        refs.Context,
                        refs.Field,
                        NewInstanceInner(other.Detail.SerializerClassName)
                        ));
                // NewInstanceInner(other.Detail.DeserializerFactoryClassName)));
            }

            return(new JsonForgeDesc(deserializerForge, serializerForge));
        }
        public static JsonForgeDesc ForgeArray(
            string fieldName,
            JsonEventType other)
        {
            var deserializerForge = new JsonDeserializerForgeArray(
                new JsonDeserializerForgeByClassName(other.Detail.DeserializerClassName),
                other.UnderlyingType);

            // JsonAllocatorForge startArray = new JsonAllocatorForgeWithAllocatorFactoryArray(
            //     other.Detail.DeserializerFactoryClassName,
            //     other.UnderlyingType);
            // JsonEndValueForge end = new JsonEndValueForgeCast(TypeHelper.GetArrayType(other.UnderlyingType));

            JsonSerializerForge serializerForge;

            if (other.Detail.OptionalUnderlyingProvided == null)
            {
                serializerForge = new JsonSerializerForgeByMethod("WriteNestedArray");
            }
            else
            {
                serializerForge = new ProxyJsonSerializerForge(
                    (
                        refs,
                        method,
                        classScope) =>
                    StaticMethod(
                        typeof(JsonSerializerUtil),
                        "WriteNestedArray",
                        refs.Context,
                        refs.Field,
                        NewInstanceInner(other.Detail.SerializerClassName)
                        ));
            }

            return(new JsonForgeDesc(deserializerForge, serializerForge));
        }