docs: protected String getBootClassPath() throws IOException {
  		final Toolchain toolchain = this.toolchainManager.getToolchainFromBuildContext("jdk", this.session); //$NON-NLS-1$
  		if (toolchain instanceof JavaToolchain && toolchain instanceof ToolchainPrivate) {
  			final JavaToolchain javaToolChain = (JavaToolchain) toolchain;
  			final ToolchainPrivate privateJavaToolChain = (ToolchainPrivate) toolchain;
  			String[] includes = {"jre/lib/*", "jre/lib/ext/*", "jre/lib/endorsed/*"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
  			String[] excludes = new String[0];
  			final Xpp3Dom config = (Xpp3Dom) privateJavaToolChain.getModel().getConfiguration();
  			if (config != null) {
  				final Xpp3Dom bootClassPath = config.getChild("bootClassPath"); //$NON-NLS-1$
  				if (bootClassPath != null) {
  					final Xpp3Dom includeParent = bootClassPath.getChild("includes"); //$NON-NLS-1$
  					if (includeParent != null) {
  						includes = getValues(includeParent.getChildren("include")); //$NON-NLS-1$
  					}
  					final Xpp3Dom excludeParent = bootClassPath.getChild("excludes"); //$NON-NLS-1$
  					if (excludeParent != null) {
  						excludes = getValues(excludeParent.getChildren("exclude")); //$NON-NLS-1$
  					}
  				}
  			}
  
  			try {
  				return scanBootclasspath(Objects.toString(this.reflect.invoke(javaToolChain, "getJavaHome")), includes, excludes); //$NON-NLS-1$
  			} catch (Exception e) {
  				throw new IOException(e.getLocalizedMessage(), e);
  			}
  		}
  		return ""; //$NON-NLS-1$
  	}