docs: public static ClientResponseImpl transformRestoreParamsToJSON(StoredProcedureInvocation task) {
          Object params[] = task.getParams().toArray();
          if (params.length == 1) {
              try{
                  JSONObject jsObj = new JSONObject((String)params[0]);
                  String path = jsObj.optString(JSON_PATH);
                  String dupPath = jsObj.optString(JSON_DUPLICATES_PATH);
                  if(!path.isEmpty() && dupPath.isEmpty()){
                      jsObj.put(JSON_DUPLICATES_PATH, path);
                  }
                  task.setParams( jsObj.toString() );
              } catch (JSONException e){
                  Throwables.propagate(e);
              }
              return null;
          } else if (params.length == 2) {
              if (params[0] == null) {
                  return new ClientResponseImpl(ClientResponseImpl.GRACEFUL_FAILURE,
                                                new VoltTable[0],
                                                "@SnapshotRestore parameter 0 was null",
                                                task.getClientHandle());
              }
              if (params[1] == null) {
                  return new ClientResponseImpl(ClientResponseImpl.GRACEFUL_FAILURE,
                                                new VoltTable[0],
                                                "@SnapshotRestore parameter 1 was null",
                                                task.getClientHandle());
              }
              if (!(params[0] instanceof String)) {
                  return new ClientResponseImpl(ClientResponseImpl.GRACEFUL_FAILURE,
                                                new VoltTable[0],
                                                "@SnapshotRestore param 0 (path) needs to be a string, but was type "
                                                + params[0].getClass().getSimpleName(),
                                                task.getClientHandle());
              }
              if (!(params[1] instanceof String)) {
                  return new ClientResponseImpl(ClientResponseImpl.GRACEFUL_FAILURE,
                                                new VoltTable[0],
                                                "@SnapshotRestore param 1 (nonce) needs to be a string, but was type "
                                                + params[1].getClass().getSimpleName(),
                                                task.getClientHandle());
              }
              JSONObject jsObj = new JSONObject();
              try {
                  jsObj.put(SnapshotUtil.JSON_PATH, params[0]);
                  if (VoltDB.instance().isRunningWithOldVerbs()) {
                      jsObj.put(SnapshotUtil.JSON_PATH_TYPE, SnapshotPathType.SNAP_PATH);
                  }
                  jsObj.put(SnapshotUtil.JSON_NONCE, params[1]);
                  jsObj.put(SnapshotUtil.JSON_DUPLICATES_PATH, params[0]);
              } catch (JSONException e) {
                  Throwables.propagate(e);
              }
              task.setParams( jsObj.toString() );
              return null;
          } else {
              return new ClientResponseImpl(ClientResponseImpl.GRACEFUL_FAILURE,
                                            new VoltTable[0],
                                            "@SnapshotRestore supports a single json document parameter or two parameters (path, nonce), " +
                                            params.length + " parameters provided",
                                            task.getClientHandle());
          }
      }