@Override
  public CdoSnapshot createObject(ResultSet resultSet) throws SQLException {
    JsonObject json = new JsonObject();

    json.add(COMMIT_METADATA, assembleCommitMetadata(resultSet));
    json.add(STATE_NAME, jsonConverter.fromJsonToJsonElement(resultSet.getString(SNAPSHOT_STATE)));
    json.add(CHANGED_NAME, assembleChangedPropNames(resultSet));
    json.addProperty(TYPE_NAME, resultSet.getString(SNAPSHOT_TYPE));

    if (providedGlobalId.isPresent()) {
      json.add(GLOBAL_CDO_ID, jsonConverter.toJsonElement(providedGlobalId.get()));
    } else {
      json.add(GLOBAL_CDO_ID, assembleGlobalId(resultSet));
    }

    return jsonConverter.fromJson(json, CdoSnapshot.class);
  }