These library classes are exactly what we need and I love that you are doing this.  We should make sure we follow the same pattern and strategy as we are doing in Mirebalais here, as this will enable us to use any library methods we create in the new cohort builder, and will also allow us to re-use any common libraries that are developed among projects.

The core library interfaces are already a part of reporting framework and should be utilized.  See:

https://github.com/openmrs/openmrs-module-reporting/tree/master/api/src/main/java/org/openmrs/module/reporting/definition/library
and
https://github.com/openmrs/openmrs-module-reporting/blob/master/api/src/main/java/org/openmrs/module/reporting/cohort/definition/library/BuiltInCohortDefinitionLibrary.java

And we have started building out Libraries for Mirebalais that follow this framework here:

https://github.com/PIH/openmrs-module-mirebalaisreports/tree/master/api/src/main/java/org/openmrs/module/mirebalaisreports/library