As of October 2025, this project has been archived. CodeLaser's maddi (Modification Analysis for Duplication Detection and Immutability) project is now the reference implementation. It has less of a focus on eventual immutability, but its parser is far more stable and its modification analysis more robust. The concepts of the Road to Immutability remain.
Devops: e2immu-devops.
Source code:
| main | sub | subsub | description |
|---|---|---|---|
| analyzer | modification | common | Common analyzer classes |
| analyzer | modification | io | Reading and writing AnalyzedPackage files |
| analyzer | modification | prepwork | First steps in modification analysis (hidden content, variable info) |
| analyzer | modification | linkedvariables | Variable linking analysis, @Modified, @Independent |
| analyzer | run | config | Configuration |
| analyzer | run | main | command line options, main method |
| analyzer | run | gradleplugin | Gradle plugin |
| analyzer | runmvn | mvnplugin | Maven plugin |
| analyzer | aapi | archive | Annotated APIs for JDK and common libraries, and their AnalyzedPackage files |
| analyzer | aapi | parser | Annotated API parser and writer |
| language | cst | analysis | Analysis property-value definitions |
| language | cst | api | Primary interfaces of the Common Syntax Tree |
| language | cst | impl | Primary implementation of the Common Syntax Tree |
| language | cst | io | JSON I/O for CST analysis objects |
| language | cst | Formatter for the CST | |
| language | inspection | api | Common API for language inspection/resolution/path management |
| language | inspection | parser | Implementation of the parsing and resolution aspects of the API |
| language | inspection | resource | Implementation of the resource/input/path aspects of the API |
| language | inspection | integration | Integration of inspection system. |
| language | java | bytecode | Byte code inspection using ASM |
| language | java | parser | Source parsing using CongoCC |
| util | external | support | Annotations, support classes, and support for Annotated APIs. JDK 8 project! |
| util | internal | graph | A graph library that uses jgraph as a dependency. Support for linearization of dependency graphs. |
| util | internal | util | Utility classes shared by multiple projects. |
main sub subsub, where the combinations sub-subsub must also be unique.
Github repositories: main-sub
Gradle projects inside a repository: e2immu-sub-subsub, test projects testsubsub
Gradle project publishing IDs: org.e2immu.main : e2immu-sub-subsub : version
Java packages: org.e2immu.main.sub.subsub