private boolean isWaypointChanged(@NonNull final ActivityData currentState) {
        return waypoint == null
            || !Geopoint.equalsFormatted(currentState.coords, waypoint.getCoords(), GeopointFormatter.Format.LAT_LON_DECMINUTE)
            || !StringUtils.equals(currentState.name, waypoint.getName())
            || !StringUtils.equals(currentState.noteText, waypoint.getNote())
            || !StringUtils.equals(currentState.userNoteText, waypoint.getUserNote())
            || currentState.visited != waypoint.isVisited()
            || currentState.type != waypoint.getWaypointType()
            || !StringUtils.equals(currentState.calcStateJson, waypoint.getCalcStateConfig())
            || !Geopoint.equalsFormatted(currentState.preprojectedCoords, waypoint.getPreprojectedCoords(), GeopointFormatter.Format.LAT_LON_DECMINUTE)
            || currentState.projectionType != waypoint.getProjectionType()
            || currentState.projectionUnits != waypoint.getProjectionDistanceUnit()
            || !StringUtils.equals(currentState.projectionFormula1, waypoint.getProjectionFormula1())
            || !StringUtils.equals(currentState.projectionFormula2, waypoint.getProjectionFormula2());
}
Save the current state of the calculator such that it can be restored after screen rotation (or similar)
main/src/main/java/cgeo/geocaching/EditWaypointActivity.java