code: public static List<Track> fullyMergeTracks(final List<Track> tracks) {
  		final List<WayPoint> points = tracks.stream()
  			.flatMap(Track::segments)
  			.flatMap(TrackSegment::points)
  			.collect(Collectors.toList());
  
  		return tracks.isEmpty()
  			? emptyList()
  			: singletonList(
  					tracks.get(0).toBuilder()
  						.segments(singletonList(TrackSegment.of(points)))
  						.build()
  				);
  	}
docs: Merges all way-points of all segments of the given track list into one
  track with one segment, containing all way-points. The order of the
  way-points is preserved.
  <pre>{@code
  final GPX merged = gpx.toBuilder()
  .trackFilter()
  .listMap(Filters::fullyMergeTracks)
  .build())
  .build();
  }</pre>
  
  
  @param tracks the track list to merge
  @return a list with one track, containing one segment with all way-points
  @throws NullPointerException if the given track list is {@code null}