anchor.diff:  * Module definitions written in Groovy
   * Support for records
   
  -== Potential breaking changes
  +== Other breaking changes
   
   * Numerous classes previously "leaked" ASM constants which are essentially an internal implementation detail by virtue of
   implementing an `Opcodes` interface. This will not normally affect the majority of
  
positive.code: Before compiling with Groovy 4, some of these may need one or more appropriate static import statements added.
  AST transforms which extend `AbstractASTTransformation` are one example of potentially affected classes.
  (link:https://issues.apache.org/jira/browse/GROOVY-9736[GROOVY-9736]).
  
  
  == JDK requirements
  
  
negative.code: [[Groovy4.0other]]
  == Other improvements
  
  === GString performance improvements
  
  * GString internals were revamped to improve performance.
  In numerous cases, GString data structures are automatically cached.
  While rarely used, GStrings do permit their internal data structures to
  be viewed (and even changed!). In such circumstances, caching is disabled.
  If you wish to view and not change the internal data structures, you can
  call a `freeze()` method in `GStringImpl` to disallow changing of the internal
  data structures which allows caching to remain active.
  link:https://issues.apache.org/jira/browse/GROOVY-9637[GROOVY-9637]
  
  === JavaShell (incubating)
  
  A Java equivalent of GroovyShell, allowing to more easily work with snippets of Java code.
  