docs: private void write(JSONObject jsonobject) throws JSONException {
  
  // JSONzip has two encodings for objects: Empty Objects (zipEmptyObject) and
  // non-empty objects (zipObject).
  
          boolean first = true;
          Iterator<String> keys = jsonobject.keys();
          while (keys.hasNext()) {
              if (probe) {
                  log();
              }
              Object key = keys.next();
              if (key instanceof String) {
                  if (first) {
                      first = false;
                      write(zipObject, 3);
                  } else {
                      one();
                  }
                  writeName((String) key);
                  Object value = jsonobject.get((String) key);
                  if (value instanceof String) {
                      zero();
                      writeString((String) value);
                  } else {
                      one();
                      writeValue(value);
                  }
              }
          }
          if (first) {
              write(zipEmptyObject, 3);
          } else {
              zero();
          }
      }