@SuppressWarnings("checkstyle:FinalParameters")
    private void swapRandomPoints(int[] route) {
        while (true) {
            final int posA = rand(1, routeSize - 2);
            final int posB = rand(1, routeSize - 2);
            if (posA != posB) {
                final int temp = route[posA];
                route[posA] = route[posB];
                route[posB] = temp;
                return;
            }
        }
    }
swaps entries at random positions except first and last
main/src/main/java/cgeo/geocaching/maps/routing/RouteOptimizationHelper.java