docs: @Override 
  	public void uninstall() throws UninstallException {
  		final List<File> lombokJarsForWhichCantDeleteSelf = new ArrayList<File>();
  		StringBuilder newContents = new StringBuilder();
  		if (eclipseIniPath.exists()) {
  			try {
  				FileInputStream fis = new FileInputStream(eclipseIniPath);
  				try {
  					BufferedReader br = new BufferedReader(new InputStreamReader(fis));
  					String line;
  					while ((line = br.readLine()) != null) {
  						if (JAVA_AGENT_LINE_MATCHER.matcher(line).matches()) continue;
  						Matcher m = BOOTCLASSPATH_LINE_MATCHER.matcher(line);
  						if (m.matches()) {
  							StringBuilder elemBuilder = new StringBuilder();
  							elemBuilder.append("-Xbootclasspath/a:");
  							boolean first = true;
  							for (String elem : m.group(1).split(Pattern.quote(File.pathSeparator))) {
  								if (elem.toLowerCase().endsWith("lombok.jar")) continue;
  								/* legacy code -see previous comment that starts with 'legacy' */ {
  									if (elem.toLowerCase().endsWith("lombok.eclipse.agent.jar")) continue;
  								}
  								if (first) first = false;
  								else elemBuilder.append(File.pathSeparator);
  								elemBuilder.append(elem);
  							}
  							if (!first) newContents.append(elemBuilder.toString()).append(OS_NEWLINE);
  							continue;
  						}
  						
  						newContents.append(line).append(OS_NEWLINE);
  					}
  					br.close();
  				} finally {
  					fis.close();
  				}
  				
  				FileOutputStream fos = new FileOutputStream(eclipseIniPath);
  				try {
  					fos.write(newContents.toString().getBytes());
  				} finally {
  					fos.close();
  				}
  			} catch (IOException e) {
  				throw new UninstallException("Cannot uninstall lombok from " + name + generateWriteErrorMessage(), e);
  			}
  		}
  		
  		for (File dir : getUninstallDirs()) {
  			File lombokJar = new File(dir, "lombok.jar");
  			if (lombokJar.exists()) {
  				if (!lombokJar.delete()) {
  					if (OsUtils.getOS() == OsUtils.OS.WINDOWS && Installer.isSelf(lombokJar.getAbsolutePath())) {
  						lombokJarsForWhichCantDeleteSelf.add(lombokJar);
  					} else {
  						throw new UninstallException(
  							"Can't delete " + lombokJar.getAbsolutePath() + generateWriteErrorMessage(), null);
  					}
  				}
  			}
  			
  			/* legacy code - lombok at one point used to have a separate jar for the eclipse agent.
  			 * Leave this code in to delete it for those upgrading from an old version. */ {
  				File agentJar = new File(dir, "lombok.eclipse.agent.jar");
  				if (agentJar.exists()) {
  					agentJar.delete();
  				}
  			}
  		}
  		
  		if (!lombokJarsForWhichCantDeleteSelf.isEmpty()) {
  			throw new UninstallException(true, String.format(
  					"lombok.jar cannot delete itself on windows.\nHowever, lombok has been uncoupled from your %s.\n" +
  					"You can safely delete this jar file. You can find it at:\n%s",
  					descriptor.getProductName(), lombokJarsForWhichCantDeleteSelf.get(0).getAbsolutePath()), null);
  		}
  	}