Besides would that catch the case when a pure function is turned into a "impure" function? Say @Pure public int add(int x){ return 2+x; } .... parallelMap(list, #add(int i)); later in refactoring: @Pure public c = 2; public int add(int x){ return c+x; } Can annotations hijack the type system to this level?