plutot que results soit un Array, je propose qu'il devienne une SimpleCollection, comme ca le client peut choisir une structure de donnée différente pour ranger ses resultats.

Ensuite, c'est p'tet un peu chiant de devoir allouer sa structure dans les cas simples.
Donc ajoute une fonction qui alloue le tableau et se contente d'invoquer celle qui demande un tableau.

~~~
fun search_overlap_in(item: Boxed[Numeric], results: SimpleCollection[E]) is abstract
fun search_overlap(item: Boxed[Numeric])
do
   var res = new Array[E]
   search_overlap_in(item, res)
   return res
end
~~~