@Override
    public boolean equals(final Object obj) {
        // just compare the geocode even if that is not what "equals" normally does.
        // Reason: geocaches should be treated as equal even if two geocache objects have different amount of data cause they come from different sources.
        return this == obj || (obj instanceof Geocache && StringUtils.isNotEmpty(geocode) && geocode.equals(((Geocache) obj).geocode));
    }
changes this cache's variables with the given one's. Change is forced!
main/src/main/java/cgeo/geocaching/models/Geocache.java