public JsonSerializerProxy(JsonSerializerReader serializerReader)
        {
            ValidationUtils.ArgumentNotNull(serializerReader, "serializerReader");

              _serializerReader = serializerReader;
              _serializer = serializerReader._serializer;
        }
        public JsonSerializerProxy(JsonSerializerReader serializerReader)
        {
            ValidationUtils.ArgumentNotNull(serializerReader, "serializerReader");

            _serializerReader = serializerReader;
            _serializer       = serializerReader._serializer;
        }
        public JsonFormatterConverter(JsonSerializerReader reader, JsonISerializableContract contract, JsonProperty member)
        {
            ValidationUtils.ArgumentNotNull(reader, nameof(reader));
            ValidationUtils.ArgumentNotNull(contract, nameof(contract));

            _reader   = reader;
            _contract = contract;
            _member   = member;
        }
        internal virtual void PopulateInternal(JsonReader reader, object target)
        {
            ValidationUtils.ArgumentNotNull(reader, "reader");
              ValidationUtils.ArgumentNotNull(target, "target");

              JsonSerializerReader serializerReader = new JsonSerializerReader(this);
              serializerReader.Populate(reader, target);
        }
        internal virtual object DeserializeInternal(JsonReader reader, Type objectType)
        {
            ValidationUtils.ArgumentNotNull(reader, "reader");

              JsonSerializerReader serializerReader = new JsonSerializerReader(this);
              return serializerReader.Deserialize(reader, objectType);
        }