Configurable Parallelism during mapping merges

The mapping merging system introduced in 0.5.4 merges mappings in parallel - which in quick testing can improve the merge time by half. There may be cases where the max number of threads needs to be controlled. One common example is debugging Lorenz itself, having multiple merge threads running at once can make debugging a lot more difficult.

This release just adds one new method to MergeConfig: getParallelism(). Set this value using the new withParallelism() method. Check the javadocs for more info.

Allow arbitrary indexes for parameter mappings

Method mappings may now contain parameter mappings for arbitrary indexes, rather than being constrained to between 0 and the number of parameters in the method signature. This is nice from a general flexibility perspective as Lorenz is only a container and isn’t intended for validating mappings, but also fixes the issue where Lorenz can’t read mappings which using 1-indexed method parameters for instance methods. With this change it’s up to the user to decide how to use parameter mappings, Lorenz doesn’t dictate anything one way or the other (just like the other mapping types).

Any code which worked with Lorenz before will still continue to work, as this change only removes constraints which used to be present. If some code was written which relied on the existing index checks then this will technically be a breaking change, as you’ll need to handle those checks yourself. That is likely to be a minor edge case however, so this is still considered a minor release.