docs: @Override
      public void execute() {
          List<File> flist = new ArrayList<File>();
  
          if (file != null) {
              flist.add(file);
          }
  
          for (int i = 0; i < filesets.size(); i++) {
              FileSet fs = filesets.elementAt(i);
              DirectoryScanner ds = fs.getDirectoryScanner(getProject());
              File dir = fs.getDir(getProject());
  
              String[] includedFiles = ds.getIncludedFiles();
  
              for (String s : Arrays.asList(includedFiles)) {
                  flist.add(new File(dir, s));
              }
          }
  
          Commandline cmdl = getCommandline();
  
          for (File f : flist) {
              cmdl.createArgument().setFile(f);
          }
  
          AbstractInstrumentation inst;
          try {
              inst = createInstrumentation();
              if (cmdl.size() == 0) {
                  return;
              }
              inst.processArguments(cmdl.getArguments());
              inst.processPackageInfo();
          } catch (Exception t) {
              getProject().log(this, "Invalid class files or jars specified " + t, Project.MSG_ERR);
              if (failOnError) {
                  getProject().log("Instrumentation Failed", t, Project.MSG_ERR);
                  throw new BuildException("InstrumentationFailed", t);
              } else {
                  return;
              }
          }
  
          List<File> classFiles = inst.getClassFiles();
          List<File> jarFiles = inst.getJarFiles();
  
          // I don't remember why I did this
          // inst.setClassFiles(null);
          // inst.setJarFiles(null);
  
          boolean instrumentationErrors = false;
  
          for (File f : classFiles) {
              try {
                  log("Instrumenting class " + f, verbosity);
                  inst.instrumentClassFile(f);
              } catch (Throwable t) {
                  boolean instrumentationError = t instanceof InstrumentationException;
                  if (failOnError && !instrumentationError) {
                      throw new BuildException("Instrumentation of class " + f + " failed", t);
                  } else {
                      String reason = "";
                      if (instrumentationError) {
                          reason = ": " + t.getMessage();
                          instrumentationErrors = true;
                      }
                      getProject().log(this, "Unable to instrument class " + f + reason, Project.MSG_WARN);
                  }
              }
          }
  
          for (File f : jarFiles) {
              try {
                  log("Instrumenting archive file " + f, verbosity);
                  inst.instrumentZipFile(f);
              } catch (Throwable t) {
                  if (failOnError) {
                      throw new BuildException("InstrumentationFailed", t);
                  } else {
                      getProject().log(this, "Unable to instrument archive " + f, Project.MSG_WARN);
                  }
              }
          }
  
          if (instrumentationErrors) {
              throw new BuildException("Instrumentation of classes failed");
          }
      }