Default Priority & Larger Numbers

Added: There's now a default priority of 1,000,000, every other predefined priority "group" (like OVERWRITE_XX) has a range of 10000000 (CHECK: 10000000 to 19999999, OVERWRITE_XX: 20000000 to 29999999 etc.).
Functions with Multiple Return Values

Added: The normal invoke() method in functions now returns a list of all returned values in the order of the executor invokation. If you just want the value from the executor with the highest priority, you can use invoke().get(0) or the safer alternative invokeRF().
AbstractFunction: Overhauled the Same Priority Warning

Fixed: The same priority warning in the abstract function implementation is only printed if one of the executors with the same priority stops the execution (for example, check processes shouldn't be affected).
Function Inheritance

Added: Every executor is now assigned to a "variant class". When you execute a function, only the executors which are superclasses of the holder class are invoked (and, of course, the direct executors of the holder class).
Split AbstractFunctionTest

Fixed: Moved the AbstractFunctionPriorityTest out of the AbstractFunctionTest class.
Renamed invokeRF() to invoke()

Fixed: The "return first" invokation method invokeRF() is now called invoke() and is handled as the default invokation method. The old "return all" invokation method invoke() is now called invokeRA().
Better Argument Error Messages

Fixed: Error messages caused by wrong arguments should now have the format "Wrong arguments: 'Type<Generics...> name, Type2 name2 ...'". Example: "Wrong arguments: 'Class<? extends FeatureHolder> matchClass'.
Removed toInfoString() from MoCl

Removed: We no longer provide toInfoString() methods in the MoCl classes and replaced them with toString() methods.
AbstractFunction catches IllegalArgumentExceptions

Added: The abstract function's invoke() method now also catches IllegalArgumentExceptions (they should be thrown in "checkX"-methods and during basic argument type validation).