private boolean checkForUriSetting(final ArrayList<ImmutableTriple<PersistableUri, String, String>> currentUriValues, final ArrayList<ImmutablePair<PersistableUri, String>> unsetUris, final String key, final String value) {
        // check if persistable uri settings differ
        for (int i = 0; i < currentUriValues.size(); i++) {
            final ImmutableTriple<PersistableUri, String, String> current = currentUriValues.get(i);
            if (current.middle.equals(key)) {
                if (!current.right.equals(value)) {
                    currentUriValues.add(new ImmutableTriple<>(current.left, current.middle, value));
                }
                currentUriValues.remove(i);
                return true;
            }
        }

        // check if this is a uri grant setting for a uri currently not set
        for (int i = 0; i < unsetUris.size(); i++) {
            final ImmutablePair<PersistableUri, String> current = unsetUris.get(i);
            if (current.right.equals(key)) {
                currentUriValues.add(new ImmutableTriple<>(current.left, current.right, value));
                unsetUris.remove(i);
                return true;
            }
        }

        // no uri-related setting found
        return false;
    }
Private methods containing the real backup process
main/src/main/java/cgeo/geocaching/utils/BackupUtils.java