If we have not received a y-lower/upper value, then we can discover that
from the data set at the cost of an extra capture linear scan.
This is useful for the meomry source which can change the upper value
during the lifetime of a process.
The lib/ directory was getting a bit out of hand, so this tries
to organize things a bit so it is easier going forward to locate
the code people want to patch.