public static IConverterContext CreateDefault()
        {
            var ctx = new MPConverterContext();

            ctx.Converters.Add(BasicConverter.Instance);
            ctx.Converters.Add(CommonConverter.DefaultInstance);
            ctx.Converters.Add(MapConverter.Instance);
            ctx.Converters.Add(ReadOnlyMapConverter.Instance);
            ctx.Converters.Add(ArrayConverter.Instance);
            ctx.Converters.Add(ObjectConverter.DefaultInstance);
            ctx.Converters.Add(DefaultConverter.Instance);
            return(ctx);
        }
        public static IConverterContext CreateDefault(
            IEnumerable <IConverter> objectConverters,
            bool replaceDefaultObjectConverter = false)
        {
            var ctx = new MPConverterContext();

            ctx.Converters.Add(BasicConverter.Instance);
            ctx.Converters.Add(CommonConverter.DefaultInstance);
            ctx.Converters.Add(MapConverter.Instance);
            ctx.Converters.Add(ReadOnlyMapConverter.Instance);
            ctx.Converters.Add(ArrayConverter.Instance);

            foreach (var c in objectConverters)
            {
                ctx.Converters.Add(c);
            }
            if (!replaceDefaultObjectConverter)
            {
                ctx.Converters.Add(ObjectConverter.DefaultInstance);
            }

            ctx.Converters.Add(DefaultConverter.Instance);
            return(ctx);
        }