Use Index* for pointer lists.
[index_ptr.patch](/uploads/d78bce9cb71ce22972eec93ebed27f78/index_ptr.patch)
When compiling my application, this thing is called 90k times over a bit long lists (200±300 (max. 3000) items, 10% of the searches are unsuccesful, otherwise result is in the second half 70% of the time), 12 ms in total, which after the change surprisingly becomes 6 (4 with AVX2! :D). RTL changes are by analogy.
Also, use `PPointer` instead of `array[0 .. MaxListSize - 1] of pointer` in `cclasses` version.
issue