code: @Override
      public List<Move<? super SolutionType>> getAllMoves(SolutionType solution) {
          return neighs.stream()
                       .flatMap(neigh -> neigh.getAllMoves(solution).stream()) // flatten to one stream of all moves
                       .collect(Collectors.toList());                          // collect in one list
      }
docs: Creates and returns the union of all moves generated by each of the contained neighbourhoods.
  The returned list may be empty if none of the contained neighbourhoods can generate any move.
  
  @param solution solution for which all moves are generated
  @return union of all possible moves generated by each contained neighbourhood