private JSONObjectPair ParseObjectPair()
    {
        db("parsing pair");
        JSONObjectPair ret = new JSONObjectPair();

        ret.key = ParseString();
        parseChar(':', true, true);
        ret.val = ParseValue();
        return(ret);
    }
    private JSONObject ParseObject()
    {
        db("parsing object");
        JSONObject ret = new JSONObject();

        parseChar('{', true, true);
        while (tok() != '}')
        {
            JSONObjectPair pair = ParseObjectPair();
            ret.elements.Add(pair.key.val, new JSON(pair.val));
            parseChar(',', true, true);             //todo: error check
        }
        parseChar('}', true, true);
        return(ret);
    }
 private JSONObjectPair ParseObjectPair()
 {
     db("parsing pair");
     JSONObjectPair ret = new JSONObjectPair();
     ret.key = ParseString();
     parseChar(':', true, true);
     ret.val = ParseValue();
     return ret;
 }