private BasicParam[] ParseBasicParam(JsonReader r)
        {
            if (!r.Read() || r.TokenType != JsonToken.StartArray) throw new InvalidOperationException();

            var values = new List<BasicParam>();
            while (r.Read() && r.TokenType != JsonToken.EndArray) {
                if (r.TokenType != JsonToken.StartObject) throw new InvalidOperationException();
                if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

                var key = r.Value.ToString();
                var value = r.ReadSingle();

                values.Add(new BasicParam { Param = key, Value = value });

                if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException();
            }
            return values.ToArray();
        }