Code shared by patterns: split, more in the futurte.
abstract class base pattern[readonly value element type]
implement immutable list[immutable list[element type]] split(immutable list[element type] the list)