Например, если я выполняю скрипт Groovy, который изменяет мета класс String, добавляя метод foo ()
GroovyShell shell1 = new GroovyShell();
shell1.evaluate("String.metaClass.foo = {-> delegate.toUpperCase()}");
когда после этого я создаю новую оболочку и выполняю ее, изменения все еще остаются
GroovyShell shell2 = new GroovyShell();
Object result = shell2.evaluate("'a'.foo()");
Есть ли способ отменить все изменения мета-классов после выполнения GroovyShell? Я пытался
shell1.getClassLoader().clearCache();
и
shell1.resetLoadedClasses();
но это не изменило.