(sort [4, 5, 2, 3, 5, 3, 2]) is...                    because (longest [4, 5, 2, 3, 5, 3, 2]) is [4, 5] 
                                                          and (rest    [4, 5, 2, 3, 5, 3, 2]) is [2, 3, 5, 3, 2]
(merge [4, 5] (sort [2, 3, 5, 3, 2])) which is...           because (longest [2, 3, 5, 3, 2]) is [2, 3, 5] 
                                                                and (rest    [2, 3, 5, 3, 2]) is [3, 2]
(merge [4, 5] (merge [2, 3, 5] (sort [3, 2])) which is...         because (longest [3, 2]) is [3] 
                                                                      and (rest    [3, 2]) is [2] 
(merge [4, 5] (merge [2, 3, 5] (merge [3] (sort ([2]))))) which is...   because    (sort [2]) is [2] 
                                                                        
(merge [4, 5] (merge [2, 3, 5] (merge [3] [2]))) which is... 

(merge [4, 5] (merge [2, 3, 5] [2, 3])) which is...

(merge [4, 5] [2, 2, 3, 3, 5]) which is...            [2, 2, 3, 3, 4, 5, 5]



public class Sequence extends ArrayList<Vergelijkbaar> {
  
}

public interface Vergelijkbaar {
  public int vergelijkMet(Vergelijkbaar other); 
  
}