{'fraction_non_alphanumeric': 0.023450586264656615, 'fraction_numerical': 0.0, 'mean_word_length': 5.361702127659575, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Enforcing reference and object immutability in Java

Immutability information is useful in many software engineering tasks, such as modeling, verification, optimization, and refactoring. Furthermore, undesired mutation or side-effect are hard to detect and debug. This paper describes a javac plug-in that enables programmers to write immutability annotations in a Java program to detect and prevent bugs. The IGJ annotations are rich and flexible; the tools are scalable; case studies show they are effective and easy to use; and the annotated program remains compilable with a standard compiler.