It seems pretty straightforward:
For example, an @Immutable on a class that the processor would then give error if there were any non-final field accesses. It would have to ensure that all collaborators were also immutable.
A @ReferentiallyTransparent (better name?) could be put on methods that would then check to ensure that all calls and collaborators were also marked @RefTrans and @Immutable…
You may be interested by the following paper : Verifiable Functional Purity in Java
Abstract :