Splitting up HHH-3608 Closed into its individual tasks. This part deals with the assumption made in PooledOptimizer that the sequence value is the upper boundary of the current range of values. This is an assumption and the other assumption that the value is the lower boundary is just as valid, so provide for both by adding a new optimizer. The new optimizer class will be org.hibernate.id.enhanced.OptimizerFactory.PooledLoOptimizer and its short name will be "pooled-lo". The already existing one will remain the default, but I will add a config option to allow users to specify which to use per setup ('hibernate.id.prefer_pooling_lo_values').