@NonNull
    public static Single<Boolean> addCachesToBookmarkList(final String listGuid, final List<Geocache> geocaches) {
        final ArrayNode arrayNode = JsonUtils.createArrayNode();

        for (Geocache geocache : geocaches) {
            if (ConnectorFactory.getConnector(geocache) instanceof GCConnector) {
                arrayNode.add(new ObjectNode(JsonUtils.factory).put("referenceCode", geocache.getGeocode()));
            }
        }

        Log.d(arrayNode.toString());
        final Parameters headers = new Parameters(HEADER_VERIFICATION_TOKEN, getRequestVerificationToken(geocaches.get(0)));

        return Network.completeWithSuccess(Network.putJsonRequest("https://www.geocaching.com/api/proxy/web/v1/lists/" + listGuid + "/geocaches", headers, arrayNode))
            .toSingle(() -> {
                Log.i("GCParser.addCachesToBookmarkList - caches uploaded to GC.com bookmark list");
                return true;
            })
            .onErrorReturn((throwable) -> {
                Log.e("GCParser.uploadPersonalNote - cannot upload caches to GC.com bookmark list", throwable);
                return false;
            });
    }
Creates a new bookmark list. Shouldn't be called on main thread!

@return successful?
main/src/main/java/cgeo/geocaching/connector/gc/GCParser.java