public static String getParseableText(final Collection<Waypoint> waypoints, final VariableList vars, final boolean includeBackupTags) {
        //no streaming allowed
        final List<String> waypointsAsStrings = new ArrayList<>();
        for (final Waypoint wp : waypoints) {
            waypointsAsStrings.add(getParseableText(wp));
        }
        if (vars != null) {
            waypointsAsStrings.add(getParseableVariableString(vars.toMap()));
        }
        return (includeBackupTags ? BACKUP_TAG_OPEN + "\n" : "") +
                StringUtils.join(waypointsAsStrings, "\n") +
                (includeBackupTags ? "\n" + BACKUP_TAG_CLOSE : "");
    }
Tries to create a parseable text containing all  information from given waypoints
and meeting a given maximum text size. Different strategies are applied to meet
that text size.
if 'includeBackupTags' is set, then returned text is surrounded by tags

@return parseable text for wayppints, or null if maxsize cannot be met
main/src/main/java/cgeo/geocaching/models/CacheArtefactParser.java