public JsonObject traversePS(SiebelPropertySet ps, JsonObject jObj) {
    JsonObject siebJSON = new JsonObject();
    String propName;
    String propVal;
    propName = ps.getFirstProperty();

    while (propName != "") {
      propVal = ps.getProperty(propName);
      siebJSON.addProperty(propName, propVal);
      propName = ps.getNextProperty();
    }

    JsonObject child;
    for (int i = 0; i < ps.getChildCount(); i++) {
      child = new JsonObject();
      child = traversePS(ps.getChild(i), child);
      siebJSON.add(ps.getChild(i).getType(), child);
    }

    return siebJSON;
  }