@NonNull
    public static Collection<GeopointWrapper> parseAll(@NonNull final String initialText) {
        final List<GeopointWrapper> waypoints = new LinkedList<>();

        String text = initialText;
        int startIndex = 0;
        GeopointWrapper best;
        do {
            best = null;
            text = text.substring(startIndex);
            final Set<String> inputs = getParseInputs(text);
            for (final AbstractParser parser : parsers) {
                for (final String input : inputs) {
                    final GeopointWrapper geopointWrapper = parser.parse(input);
                    if (geopointWrapper == null) {
                        continue;
                    }
                    if (geopointWrapper.isBetterThan(best)) {
                        best = geopointWrapper;
                        text = input;
                        startIndex = best.getEnd();
                    }
                }
            }

            if (best != null) {
                waypoints.add(best);
            }

        // Limit maximum scanned geopoints to 20 -> quickfix for #15687
        } while (waypoints.size() < 20 && (best != null && startIndex < text.length()));

        return waypoints;
    }
Detects all coordinates in the given text.

@param initialText Text to parse for coordinates
@return a collection of parsed geopoints as well as their starting and ending position and the appropriate text
'start' points at the first char of the coordinate text, 'end' points at the first char AFTER the coordinate text
main/src/main/java/cgeo/geocaching/location/GeopointParser.java