https://nmillard.medium.com/a-primer-to-reflective-programming-and-metadata-driven-development-practical-examples-990035676176