Ann: A domain-specific language for the effective design and validation of Java annotations. (April 2016)