public boolean addCacheArtefactsFromText(@Nullable final String text, final boolean updateDb, @NonNull final String namePrefix, final boolean forceExtraction, @Nullable final String previousAllUserNotes) {
        boolean changed = false;
        if (forceExtraction || !preventWaypointsFromNote) {
            final CacheArtefactParser previousParser = previousAllUserNotes == null ? null : new CacheArtefactParser(this, namePrefix).parse(previousAllUserNotes);

            final CacheArtefactParser cacheArtefactParser = new CacheArtefactParser(this, namePrefix).parse(StringUtils.defaultString(text));
            for (final Waypoint parsedWaypoint : cacheArtefactParser.getWaypoints()) {
                changed |= addOrMergeInfoToExistingWaypoint(updateDb, namePrefix, parsedWaypoint);
            }
            final Map<String, String> newVars = new HashMap<>();
            for (Map.Entry<String, String> var : cacheArtefactParser.getVariables().entrySet()) {
                if (getVariables().isWorthAddingWithoutLoss(var.getKey(), var.getValue(), previousParser == null ? null : previousParser.getVariables().get(var.getKey()))) {
                    newVars.put(var.getKey(), var.getValue());
                }
            }
            changeVariables(newVars);
        }
        return changed;
    }
Detect cache artefacts (waypoints+variables) in the given text and add them to user-defined waypoints
or updates existing ones with meta information.

@param text                 text which might contain coordinates
@param updateDb             if true the added waypoints are stored in DB right away
@param namePrefix           prefix for default waypoint names (if names cannot be extracted from text)
@param forceExtraction      if extraction should be enforced, regardless of cache setting
@param previousAllUserNotes if given, then a parse of previous notes is used to help in deciding which values potentially to overwrite
main/src/main/java/cgeo/geocaching/models/Geocache.java