docs: public void applyToSourceUnits(SourceUnitOperation body) throws CompilationFailedException {
          for (String name : names) {
              SourceUnit source = sources.get(name);
              if ((source.phase < phase) || (source.phase == phase && !source.phaseComplete)) {
                  try {
                      body.call(source);
                  } catch (CompilationFailedException e) {
                      throw e;
                  } catch (Exception e) {
                      GroovyBugError gbe = new GroovyBugError(e);
                      changeBugText(gbe, source);
                      throw gbe;
                  } catch (GroovyBugError e) {
                      changeBugText(e, source);
                      throw e;
                  }
              }
          }
  
  
          getErrorCollector().failIfErrors();
      }