diff --git a/ant/org.eclipse.ant.core/.settings/org.eclipse.jdt.ui.prefs b/ant/org.eclipse.ant.core/.settings/org.eclipse.jdt.ui.prefs
index fed4922..1ee945b 100644
--- a/ant/org.eclipse.ant.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/ant/org.eclipse.ant.core/.settings/org.eclipse.jdt.ui.prefs
@@ -67,28 +67,39 @@
 sp_cleanup.always_use_parentheses_in_expressions=false
 sp_cleanup.always_use_this_for_non_static_field_access=false
 sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
 sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
 sp_cleanup.correct_indentation=true
 sp_cleanup.format_source_code=true
 sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.lazy_logical_operator=false
 sp_cleanup.make_local_variable_final=false
 sp_cleanup.make_parameters_final=false
 sp_cleanup.make_private_fields_final=true
 sp_cleanup.make_type_abstract_if_missing_method=false
 sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.merge_conditional_blocks=false
 sp_cleanup.never_use_blocks=false
 sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.number_suffix=false
 sp_cleanup.on_save_use_additional_actions=true
 sp_cleanup.organize_imports=true
+sp_cleanup.push_down_negation=false
 sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
 sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
 sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
 sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
 sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
 sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=false
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
 sp_cleanup.remove_trailing_whitespaces_all=true
 sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=false
 sp_cleanup.remove_unnecessary_casts=true
 sp_cleanup.remove_unnecessary_nls_tags=true
 sp_cleanup.remove_unused_imports=true
@@ -97,12 +108,19 @@
 sp_cleanup.remove_unused_private_members=true
 sp_cleanup.remove_unused_private_methods=true
 sp_cleanup.remove_unused_private_types=true
+sp_cleanup.simplify_lambda_expression_and_method_ref=false
 sp_cleanup.sort_members=false
 sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
 sp_cleanup.use_blocks=false
 sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=false
 sp_cleanup.use_parentheses_in_expressions=false
 sp_cleanup.use_this_for_non_static_field_access=false
 sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
 sp_cleanup.use_this_for_non_static_method_access=false
 sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
index 2a3a132..125085b 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
@@ -30,7 +30,7 @@
 
 /**
  * The plug-in runtime class for the Ant Core plug-in. Clients may not instantiate or subclass this class.
- * 
+ *
  * @noinstantiate This class is not intended to be instantiated by clients.
  * @noextend This class is not intended to be subclassed by clients.
  */
@@ -38,7 +38,7 @@
 
 	/**
 	 * Status code indicating an unexpected internal error.
-	 * 
+	 *
 	 * @since 2.1
 	 */
 	public static final int INTERNAL_ERROR = 120;
@@ -75,14 +75,14 @@
 
 	/**
 	 * Simple identifier constant (value <code>"antProperties"</code>) for the Ant properties extension point.
-	 * 
+	 *
 	 * @since 3.0
 	 */
 	public static final String PT_PROPERTIES = "antProperties"; //$NON-NLS-1$
 
 	/**
 	 * Simple identifier constant (value <code>"org.eclipse.ant.core.antBuildFile"</code>) for the content type of an Ant BuildFile
-	 * 
+	 *
 	 * @since 3.0
 	 */
 	public static final String ANT_BUILDFILE_CONTENT_TYPE = PI_ANTCORE + ".antBuildFile"; //$NON-NLS-1$
@@ -104,28 +104,28 @@
 
 	/**
 	 * Simple identifier constant (value <code>"headless"</code>) of a tag that appears in Ant extensions.
-	 * 
+	 *
 	 * @since 2.1
 	 */
 	public static final String HEADLESS = "headless"; //$NON-NLS-1$
 
 	/**
 	 * Simple identifier constant (value <code>"eclipseRuntime"</code>) of a tag that appears in Ant extensions.
-	 * 
+	 *
 	 * @since 3.0
 	 */
 	public static final String ECLIPSE_RUNTIME = "eclipseRuntime"; //$NON-NLS-1$
 
 	/**
 	 * Simple identifier constant (value <code>"uri"</code>) of a tag that appears in Ant extensions.
-	 * 
+	 *
 	 * @since 3.2
 	 */
 	public static final String URI = "uri"; //$NON-NLS-1$
 
 	/**
 	 * Simple identifier constant (value <code>"value"</code>) of a tag that appears in Ant extensions.
-	 * 
+	 *
 	 * @since 3.0
 	 */
 	public static final String VALUE = "value"; //$NON-NLS-1$
@@ -138,21 +138,21 @@
 
 	/**
 	 * Status code indicating an error occurred running a build.
-	 * 
+	 *
 	 * @since 2.1
 	 */
 	public static final int ERROR_RUNNING_BUILD = 1;
 
 	/**
 	 * Status code indicating an error occurred due to a malformed URL.
-	 * 
+	 *
 	 * @since 2.1
 	 */
 	public static final int ERROR_MALFORMED_URL = 2;
 
 	/**
 	 * Status code indicating an error occurred as a library was not specified
-	 * 
+	 *
 	 * @since 2.1
 	 */
 	public static final int ERROR_LIBRARY_NOT_SPECIFIED = 3;
@@ -163,9 +163,9 @@
 	 * An instance of this plug-in runtime class is automatically created when the facilities provided by the Ant Core plug-in are required.
 	 * <b>Clients must never explicitly instantiate a plug-in runtime class.</b>
 	 * </p>
-	 * 
+	 *
 	 * @since 3.1
-	 * 
+	 *
 	 */
 	public AntCorePlugin() {
 		plugin = this;
@@ -195,7 +195,7 @@
 
 	/**
 	 * Given an extension point name, extract its extensions and return them as a List.
-	 * 
+	 *
 	 * @param pointName
 	 *            The name of the extension point
 	 * @return The list of the extensions
@@ -211,7 +211,7 @@
 
 	/**
 	 * Returns an object representing this plug-in's preferences.
-	 * 
+	 *
 	 * @return the Ant core object representing the preferences for this plug-in.
 	 */
 	public AntCorePreferences getPreferences() {
@@ -224,7 +224,7 @@
 	/**
 	 * Set this plug-in's preferences for running headless based on the headless parameter. This method is public for testing purposes only. It should
 	 * not be called outside of the Ant integration framework.
-	 * 
+	 *
 	 * @param headless
 	 *            Whether or not to mark that the plug-in is running headless or not
 	 */
@@ -234,7 +234,7 @@
 
 	/**
 	 * Returns this plug-in instance.
-	 * 
+	 *
 	 * @return the single instance of this plug-in runtime class
 	 */
 	public static AntCorePlugin getPlugin() {
@@ -243,7 +243,7 @@
 
 	/**
 	 * Returns a new class loader to use when executing Ant builds.
-	 * 
+	 *
 	 * @return the new class loader
 	 */
 	public ClassLoader getNewClassLoader() {
@@ -253,7 +253,7 @@
 
 	/**
 	 * Returns a new class loader to use when executing Ant builds.
-	 * 
+	 *
 	 * @param urls
 	 *            the URLs that define the classpath of the new classloader
 	 * @return the new class loader
@@ -265,7 +265,7 @@
 
 	/**
 	 * Returns a new class loader to use when executing Ant builds or other applications such as parsing or code proposal determination.
-	 * 
+	 *
 	 * @param allowLoading
 	 *            whether to allow plug-in classloaders associated with the new classloader to load Apache Ant classes or resources.
 	 * @return the new class loader
@@ -278,7 +278,7 @@
 
 	/**
 	 * Returns a new class loader to use when executing Ant builds or other applications such as parsing or code proposal determination.
-	 * 
+	 *
 	 * @param allowLoading
 	 *            whether to allow plug-in classloaders associated with the new classloader to load Apache Ant classes or resources.
 	 * @param urls
@@ -296,7 +296,7 @@
 
 	/**
 	 * Logs the specified throwable with this plug-in's log.
-	 * 
+	 *
 	 * @param t
 	 *            throwable to log
 	 * @since 2.1
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePreferences.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePreferences.java
index adf093c..b1364ec 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePreferences.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePreferences.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Thierry Lach (thierry.lach@bbdodetroit.com) - bug 40502
@@ -73,7 +73,7 @@
 /**
  * Represents the Ant Core plug-in's preferences providing utilities for extracting, changing and updating the underlying preferences. Clients may not
  * instantiate or subclass this class.
- * 
+ *
  * @since 2.1
  * @noinstantiate This class is not intended to be instantiated by clients.
  * @noextend This class is not intended to be subclassed by clients.
@@ -199,7 +199,7 @@
 
 	/**
 	 * When a preference changes, update the in-memory cache of the preference.
-	 * 
+	 *
 	 * @param event
 	 *            The property change event that has occurred.
 	 * @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener#propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
@@ -339,7 +339,7 @@
 
 	/**
 	 * Returns the absolute path of the default ant.home to use for the build. The default is the org.apache.ant plug-in folder provided with Eclipse.
-	 * 
+	 *
 	 * @return String absolute path of the default ant.home
 	 * @since 3.0
 	 */
@@ -438,9 +438,9 @@
 
 	/**
 	 * Returns the array of URLs that is the default set of URLs defining the Ant classpath.
-	 * 
+	 *
 	 * Ant running through the command line tries to find tools.jar to help the user. Try emulating the same behavior here.
-	 * 
+	 *
 	 * @return the default set of URLs defining the Ant classpath
 	 * @deprecated use {@link #getDefaultAntHomeEntries()} instead
 	 */
@@ -459,7 +459,7 @@
 
 	/**
 	 * Returns the array of classpath entries that is the default set of entries defining the Ant classpath.
-	 * 
+	 *
 	 * @return the default set of classpath entries defining the Ant classpath
 	 */
 	public synchronized IAntClasspathEntry[] getDefaultAntHomeEntries() {
@@ -517,7 +517,7 @@
 	 * <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=282851">https://bugs.eclipse.org/bugs/show_bug.cgi?id=282851</a></li>
 	 * <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325125">https://bugs.eclipse.org/bugs/show_bug.cgi?id=325125</a></li>
 	 * </ul>
-	 * 
+	 *
 	 * @param packages
 	 *            the live list of {@link ExportedPackage}s to inspect
 	 * @return the bundle that represents the highest version of <code>org.apache.ant</code> or <code>null</code> if there are no
@@ -552,7 +552,7 @@
 
 	/**
 	 * Returns the array of URLs that is the set of URLs defining the Ant classpath.
-	 * 
+	 *
 	 * @return the set of URLs defining the Ant classpath
 	 * @deprecated use getAntHomeClasspathEntries and getToolsJarEntry
 	 */
@@ -580,7 +580,7 @@
 
 	/**
 	 * Returns the complete list of pre-configured {@link Task}s
-	 * 
+	 *
 	 * @param tasks
 	 *            the {@link IConfigurationElement} handles for contributed {@link Task}s
 	 * @return the list of {@link Task}s
@@ -623,7 +623,7 @@
 
 	/**
 	 * Returns the complete listing of pre-configured {@link Type}s
-	 * 
+	 *
 	 * @param types
 	 *            the list of {@link IConfigurationElement} handles to contributed {@link Type}s
 	 * @return the list of {@link Type}s
@@ -673,7 +673,7 @@
 
 	/**
 	 * Configures the given {@link AntObject} and returns if it should be retained
-	 * 
+	 *
 	 * @param element
 	 * @param antObject
 	 * @param objectName
@@ -785,7 +785,7 @@
 
 	/*
 	 * Scan the Ant property extensions for properties to set.
-	 * 
+	 *
 	 * @since 3.0
 	 */
 	private void computeDefaultProperties(List<IConfigurationElement> properties) {
@@ -829,7 +829,7 @@
 	/**
 	 * Returns the IAntClasspathEntry for the tools.jar associated with the path supplied. May return <code>null</code> if no tools.jar is found (e.g.
 	 * the path points to a JRE install).
-	 * 
+	 *
 	 * @param javaHomePath
 	 *            path for Java home
 	 * @return IAntClasspathEntry tools.jar IAntClasspathEntry or <code>null</code>
@@ -859,7 +859,7 @@
 	 * Returns the URL for the tools.jar associated with the System property "java.home" location. If "java.home" has no associated tools.jar (such as
 	 * a JRE install), the environment variable "JAVA_HOME" is resolved to check for a tools.jar. May return <code>null</code> if no tools.jar is
 	 * found.
-	 * 
+	 *
 	 * @return URL tools.jar URL or <code>null</code>
 	 * @deprecated use getToolsJarEntry()
 	 */
@@ -893,7 +893,7 @@
 	 * Returns the <code>IAntClasspathEntry</code> for the tools.jar associated with the System property "java.home" location. If "java.home" has no
 	 * associated tools.jar (such as a JRE install), the environment variable "JAVA_HOME" is resolved to check for a tools.jar. May return
 	 * <code>null</code> if no tools.jar is found.
-	 * 
+	 *
 	 * @return IAntClasspathEntry tools.jar IAntClasspathEntry or <code>null</code>
 	 */
 	public IAntClasspathEntry getToolsJarEntry() {
@@ -920,9 +920,9 @@
 
 	/**
 	 * Returns the <code>IAntClasspathEntry</code>s for the jars from ${user.home}/.ant/lib May return <code>null</code> if jars are found.
-	 * 
+	 *
 	 * TODO Should be promoted to API post 3.1
-	 * 
+	 *
 	 * @return the collection of <code>IAntClasspathEntry</code> found at ${user.home}/.ant/lib or <code>null</code> if none found of location does
 	 *         not exist
 	 */
@@ -975,7 +975,7 @@
 
 	/**
 	 * Add the libraries contributed by the Ant plug-in, to the classpath.
-	 * 
+	 *
 	 * @param source
 	 * @param destination
 	 * @throws IOException
@@ -1012,7 +1012,7 @@
 
 	/**
 	 * Returns the list of URLs added to the classpath by the extra classpath entries extension point.
-	 * 
+	 *
 	 * @return the list of extra classpath URLs
 	 */
 	public URL[] getExtraClasspathURLs() {
@@ -1028,7 +1028,7 @@
 	/**
 	 * Returns the list of URLs added to the classpath by the extra classpath entries extension point for an Ant build that is occurring without the
 	 * Eclipse runtime.
-	 * 
+	 *
 	 * @return the list of extra classpath URLs
 	 * @since 3.0
 	 */
@@ -1045,7 +1045,7 @@
 
 	/**
 	 * Returns the entire set of URLs that define the Ant runtime classpath. Includes the Ant URLs, the additional URLs and extra classpath URLs.
-	 * 
+	 *
 	 * @return the entire runtime classpath of URLs
 	 */
 	public URL[] getURLs() {
@@ -1275,7 +1275,7 @@
 
 	/**
 	 * Returns the default and custom tasks.
-	 * 
+	 *
 	 * @return the list of default and custom tasks.
 	 */
 	public List<Task> getTasks() {
@@ -1291,7 +1291,7 @@
 
 	/**
 	 * Returns the default and custom tasks that are relevant when there is no Eclipse runtime context (an Ant build in a separate VM).
-	 * 
+	 *
 	 * @return the list of default and custom tasks.
 	 */
 	public List<Task> getRemoteTasks() {
@@ -1313,7 +1313,7 @@
 
 	/**
 	 * Returns the user defined custom tasks
-	 * 
+	 *
 	 * @return the user defined tasks
 	 */
 	public Task[] getCustomTasks() {
@@ -1322,7 +1322,7 @@
 
 	/**
 	 * Returns the user defined custom types
-	 * 
+	 *
 	 * @return the user defined types
 	 */
 	public Type[] getCustomTypes() {
@@ -1331,7 +1331,7 @@
 
 	/**
 	 * Returns the custom user properties specified for Ant builds.
-	 * 
+	 *
 	 * @return the properties defined for Ant builds.
 	 */
 	public Property[] getCustomProperties() {
@@ -1340,7 +1340,7 @@
 
 	/**
 	 * Returns the default and custom properties.
-	 * 
+	 *
 	 * @return the list of default and custom properties.
 	 * @since 3.0
 	 */
@@ -1357,7 +1357,7 @@
 
 	/**
 	 * Returns the default and custom properties that are relevant when there is no Eclipse runtime context (Ant build in a separate VM).
-	 * 
+	 *
 	 * @return the list of default and custom properties.
 	 * @since 3.0
 	 */
@@ -1380,7 +1380,7 @@
 
 	/**
 	 * Returns the custom property files specified for Ant builds performing any required string substitution if indicated.
-	 * 
+	 *
 	 * @param performStringSubstition
 	 *            whether or not to perform the string substitution on the property file strings
 	 * @return the property files defined for Ant builds.
@@ -1407,7 +1407,7 @@
 
 	/**
 	 * Returns the custom property files specified for Ant builds.
-	 * 
+	 *
 	 * @return the property files defined for Ant builds.
 	 */
 	public String[] getCustomPropertyFiles() {
@@ -1416,7 +1416,7 @@
 
 	/**
 	 * Returns the custom URLs specified for the Ant classpath
-	 * 
+	 *
 	 * @return the URLs defining the Ant classpath
 	 * @deprecated
 	 */
@@ -1436,7 +1436,7 @@
 
 	/**
 	 * Sets the user defined custom tasks. To commit the changes, updatePluginPreferences must be called.
-	 * 
+	 *
 	 * @param tasks
 	 *            The custom tasks.
 	 */
@@ -1447,7 +1447,7 @@
 
 	/**
 	 * Sets the user defined custom types. To commit the changes, updatePluginPreferences must be called.
-	 * 
+	 *
 	 * @param types
 	 *            The custom types
 	 */
@@ -1458,7 +1458,7 @@
 
 	/**
 	 * Sets the custom URLs specified for the Ant classpath. To commit the changes, updatePluginPreferences must be called.
-	 * 
+	 *
 	 * @param urls
 	 *            the URLs defining the Ant classpath
 	 * @deprecated use setAdditionalEntries(IAntClasspathEntry)[]
@@ -1475,7 +1475,7 @@
 
 	/**
 	 * Sets the Ant URLs specified for the Ant classpath. To commit the changes, updatePluginPreferences must be called.
-	 * 
+	 *
 	 * @param urls
 	 *            the URLs defining the Ant classpath
 	 * @deprecated use setAntHomeEntires(IAntClasspathEntry[])
@@ -1492,7 +1492,7 @@
 
 	/**
 	 * Sets the custom property files specified for Ant builds. To commit the changes, updatePluginPreferences must be called.
-	 * 
+	 *
 	 * @param paths
 	 *            the absolute paths defining the property files to use.
 	 */
@@ -1502,7 +1502,7 @@
 
 	/**
 	 * Sets the custom user properties specified for Ant builds. To commit the changes, updatePluginPreferences must be called.
-	 * 
+	 *
 	 * @param properties
 	 *            the properties defining the Ant properties
 	 */
@@ -1513,7 +1513,7 @@
 
 	/**
 	 * Returns the default and custom types.
-	 * 
+	 *
 	 * @return all of the defined types
 	 */
 	public List<Type> getTypes() {
@@ -1529,7 +1529,7 @@
 
 	/**
 	 * Returns the default and custom types that are relevant when there is no Eclipse runtime context (an Ant build in a separate VM).
-	 * 
+	 *
 	 * @return the list of default and custom types.
 	 */
 	public List<Type> getRemoteTypes() {
@@ -1551,7 +1551,7 @@
 
 	/**
 	 * Returns the default types defined via the type extension point
-	 * 
+	 *
 	 * @return all of the default types
 	 */
 	public List<Type> getDefaultTypes() {
@@ -1564,7 +1564,7 @@
 
 	/**
 	 * Returns the default tasks defined via the task extension point
-	 * 
+	 *
 	 * @return all of the default tasks
 	 */
 	public List<Task> getDefaultTasks() {
@@ -1577,7 +1577,7 @@
 
 	/**
 	 * Returns the default properties defined via the properties extension point
-	 * 
+	 *
 	 * @return all of the default properties
 	 * @since 3.0
 	 */
@@ -1778,7 +1778,7 @@
 
 	/**
 	 * Sets the string that defines the Ant home set by the user. May be set to <code>null</code>.
-	 * 
+	 *
 	 * @param antHome
 	 *            the fully qualified path to Ant home
 	 */
@@ -1789,7 +1789,7 @@
 	/**
 	 * Returns the string that defines the Ant home set by the user or the location of the Eclipse Ant plug-in if Ant home has not been specifically
 	 * set by the user. Can return <code>null</code>
-	 * 
+	 *
 	 * @return the fully qualified path to Ant home
 	 */
 	public String getAntHome() {
@@ -1798,7 +1798,7 @@
 
 	/**
 	 * Returns the set of classpath entries that compose the libraries added to the Ant runtime classpath from the Ant home location.
-	 * 
+	 *
 	 * @return the set of ant home classpath entries
 	 * @since 3.0
 	 */
@@ -1808,7 +1808,7 @@
 
 	/**
 	 * Returns the set of classpath entries that the user has added to the Ant runtime classpath.
-	 * 
+	 *
 	 * @return the set of user classpath entries
 	 * @since 3.0
 	 */
@@ -1818,7 +1818,7 @@
 
 	/**
 	 * Sets the set of classpath entries that compose the libraries added to the Ant runtime classpath from the Ant home location.
-	 * 
+	 *
 	 * @param entries
 	 *            the set of ant home classpath entries
 	 * @since 3.0
@@ -1829,7 +1829,7 @@
 
 	/**
 	 * Sets the set of classpath entries that the user has added to the Ant runtime classpath.
-	 * 
+	 *
 	 * @param entries
 	 *            the set of user classpath entries
 	 * @since 3.0
@@ -1840,7 +1840,7 @@
 
 	/**
 	 * Returns the list of URLs to added to the classpath for an Ant build that is occurring without the Eclipse runtime.
-	 * 
+	 *
 	 * @return the list of classpath entries
 	 * @since 3.0
 	 */
@@ -1869,7 +1869,7 @@
 
 	/**
 	 * Returns all contributed classpath entries via the <code>extraClasspathEntries</code> extension point.
-	 * 
+	 *
 	 * @return all contributed classpath entries via the <code>extraClasspathEntries</code> extension point
 	 * @since 3.0
 	 */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java
index 4a13a0b..b02ce2e 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java
@@ -48,7 +48,7 @@
  * Refer to the "Platform Ant Support" chapter of the Programmer's Guide section in the Platform Plug-in Developer Guide for complete details.
  * </p>
  * </div>
- * 
+ *
  * @noextend This class is not intended to be subclassed by clients.
  */
 public class AntRunner implements IApplication {
@@ -69,7 +69,7 @@
 
 	/**
 	 * Sets the build file location on the file system.
-	 * 
+	 *
 	 * @param buildFileLocation
 	 *            the file system location of the build file
 	 */
@@ -92,7 +92,7 @@
 	 * <li><code>org.apache.tools.ant.Project.VERBOSE</code> or
 	 * <li><code>org.apache.tools.ant.Project.DEBUG</code>
 	 * </ul>
-	 * 
+	 *
 	 * @param level
 	 *            the message output level
 	 */
@@ -102,7 +102,7 @@
 
 	/**
 	 * Sets the arguments to be passed to the build (e.g. -Dos=win32 -Dws=win32 - verbose).
-	 * 
+	 *
 	 * @param arguments
 	 *            the arguments to be passed to the build
 	 */
@@ -150,7 +150,7 @@
 
 	/**
 	 * Sets the arguments to be passed to the build (e.g. -Dos=win32 -Dws=win32 -verbose).
-	 * 
+	 *
 	 * @param arguments
 	 *            the arguments to be passed to the build
 	 * @since 2.1
@@ -161,7 +161,7 @@
 
 	/**
 	 * Sets the targets and execution order.
-	 * 
+	 *
 	 * @param executionTargets
 	 *            which targets should be run and in which order
 	 */
@@ -173,10 +173,10 @@
 	 * Adds a build listener. The parameter <code>className</code> is the class name of an <code>org.apache.tools.ant.BuildListener</code>
 	 * implementation. The class will be instantiated at runtime and the listener will be called on build events (
 	 * <code>org.apache.tools.ant.BuildEvent</code>).
-	 * 
+	 *
 	 * <p>
 	 * Refer to {@link AntRunner Usage Note} for implementation details.
-	 * 
+	 *
 	 * @param className
 	 *            a build listener class name
 	 */
@@ -194,10 +194,10 @@
 	 * Sets the build logger. The parameter <code>className</code> is the class name of an <code>org.apache.tools.ant.BuildLogger</code>
 	 * implementation. The class will be instantiated at runtime and the logger will be called on build events (
 	 * <code>org.apache.tools.ant.BuildEvent</code>). Only one build logger is permitted for any build.
-	 * 
+	 *
 	 * <p>
 	 * Refer to {@link AntRunner Usage Note} for implementation details.
-	 * 
+	 *
 	 * @param className
 	 *            a build logger class name
 	 */
@@ -207,7 +207,7 @@
 
 	/**
 	 * Adds user-defined properties. Keys and values must be String objects.
-	 * 
+	 *
 	 * @param properties
 	 *            a Map of user-defined properties
 	 */
@@ -221,9 +221,9 @@
 
 	/**
 	 * Returns the buildfile target information.
-	 * 
+	 *
 	 * @return an array containing the target information
-	 * 
+	 *
 	 * @see TargetInfo
 	 * @since 2.1
 	 * @throws CoreException
@@ -295,11 +295,11 @@
 	 * Runs the build file. If a progress monitor is specified it will be available during the script execution as a reference in the Ant Project (
 	 * <code>org.apache.tools.ant.Project.getReferences()</code>). A long- running task could, for example, get the monitor during its execution and
 	 * check for cancellation. The key value to retrieve the progress monitor instance is <code>AntCorePlugin.ECLIPSE_PROGRESS_MONITOR</code>.
-	 * 
+	 *
 	 * Only one build can occur at any given time.
-	 * 
+	 *
 	 * Sets the current threads context class loader to the AntClassLoader for the duration of the build.
-	 * 
+	 *
 	 * @param monitor
 	 *            a progress monitor, or <code>null</code> if progress reporting and cancellation are not desired
 	 * @throws CoreException
@@ -415,7 +415,7 @@
 
 	/*
 	 * Handles exceptions that are loaded by the Ant Class Loader by asking the Internal Ant Runner class for the correct error message.
-	 * 
+	 *
 	 * Handles OperationCanceledExceptions, nested NoClassDefFoundError and nested ClassNotFoundException
 	 */
 	protected void handleInvocationTargetException(Object runner, Class<?> classInternalAntRunner, InvocationTargetException e) throws CoreException {
@@ -468,7 +468,7 @@
 
 	/**
 	 * Runs the build file.
-	 * 
+	 *
 	 * @throws CoreException
 	 *             Thrown if a build is already occurring or if an exception occurs during the build
 	 */
@@ -479,9 +479,9 @@
 	/**
 	 * Invokes the building of a project object and executes a build using either a given target or the default target. This method is called when
 	 * running Eclipse headless and specifying <code>org.eclipse.ant.core.antRunner</code> as the application.
-	 * 
+	 *
 	 * Sets the current threads context class loader to the AntClassLoader for the duration of the build.
-	 * 
+	 *
 	 * @param argArray
 	 *            the command line arguments
 	 * @exception Exception
@@ -535,10 +535,10 @@
 	 * Sets the input handler. The parameter <code>className</code> is the class name of an <code>org.apache.tools.ant.input.InputHandler</code>
 	 * implementation. The class will be instantiated at runtime and the input handler will be used to respond to &lt;input&gt; requests Only one
 	 * input handler is permitted for any build.
-	 * 
+	 *
 	 * <p>
 	 * Refer to {@link AntRunner Usage Note} for implementation details.
-	 * 
+	 *
 	 * @param className
 	 *            an input handler class name
 	 * @since 2.1
@@ -549,7 +549,7 @@
 
 	/**
 	 * Sets the user specified property files.
-	 * 
+	 *
 	 * @param propertyFiles
 	 *            array of property file paths
 	 * @since 2.1
@@ -560,7 +560,7 @@
 
 	/**
 	 * Sets the custom classpath to use for this build
-	 * 
+	 *
 	 * @param customClasspath
 	 *            array of URLs that define the custom classpath
 	 */
@@ -570,7 +570,7 @@
 
 	/**
 	 * Sets the Ant home to use for this build
-	 * 
+	 *
 	 * @param antHome
 	 *            String specifying the Ant home to use
 	 * @since 2.1
@@ -581,9 +581,9 @@
 
 	/**
 	 * Returns whether an Ant build is already in progress
-	 * 
+	 *
 	 * Only one Ant build can occur at any given time.
-	 * 
+	 *
 	 * @since 2.1
 	 * @return boolean
 	 */
@@ -594,9 +594,9 @@
 	/**
 	 * Invokes the building of a project object and executes a build using either a given target or the default target. This method is called when
 	 * running Eclipse headless and specifying <code>org.eclipse.ant.core.antRunner</code> as the application.
-	 * 
+	 *
 	 * Sets the current threads context class loader to the <code>AntClassLoader</code> for the duration of the build.
-	 * 
+	 *
 	 * @param context
 	 *            the context used to start the application
 	 * @exception Exception
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntSecurityException.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntSecurityException.java
index c50a23d..93776a3 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntSecurityException.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntSecurityException.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -15,9 +15,9 @@
 
 /**
  * A security exception that is thrown by the AntSecurityManager if an Ant task in some way attempts to halt or exit the Java Virtual Machine.
- * 
+ *
  * Clients may instantiate this class; it is not intended to be subclassed.
- * 
+ *
  * @since 2.1
  * @noextend This class is not intended to be subclassed by clients.
  */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntClasspathEntry.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntClasspathEntry.java
index bad5a73..eac9bca 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntClasspathEntry.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntClasspathEntry.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -17,28 +17,28 @@
 
 /**
  * Represents an Ant classpath entry. Clients may implement this interface.
- * 
+ *
  * @since 3.0
  */
 public interface IAntClasspathEntry {
 
 	/**
 	 * Returns the label for this classpath entry.
-	 * 
+	 *
 	 * @return the label for this entry.
 	 */
 	public String getLabel();
 
 	/**
 	 * Returns the URL for this classpath entry or <code>null</code> if it cannot be resolved.
-	 * 
+	 *
 	 * @return the url for this classpath entry.
 	 */
 	public URL getEntryURL();
 
 	/**
 	 * Returns whether this classpath entry requires the Eclipse runtime to be relevant. Defaults value is <code>true</code>
-	 * 
+	 *
 	 * @return whether this classpath entry requires the Eclipse runtime
 	 */
 	public boolean isEclipseRuntimeRequired();
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntPropertyValueProvider.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntPropertyValueProvider.java
index ce1a0ea..833e9e0 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntPropertyValueProvider.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/IAntPropertyValueProvider.java
@@ -1,13 +1,13 @@
 /*******************************************************************************
  * Copyright (c) 2003, 2006 BBDO Detroit and others.
  *
- * This program and the accompanying materials 
+ * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     Thierry Lach (thierry.lach@bbdodetroit.com) - initial API and implementation for bug 40502
  *******************************************************************************/
@@ -16,14 +16,14 @@
 /**
  * An interface that must be implemented by plug-ins that wish to contribute predefined variables to an Ant project when run from within Eclipse.
  * Clients may implement this interface.
- * 
+ *
  * @since 3.0
  */
 public interface IAntPropertyValueProvider {
 
 	/**
 	 * Returns a value that the Ant entry point will use to set the value of the Ant property.
-	 * 
+	 *
 	 * @param antPropertyName
 	 *            the Ant property to set
 	 * @return the value for the property, or <code>null</code> if the property should not be set
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/ProjectInfo.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/ProjectInfo.java
index bd79a52..5a5bdaf 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/ProjectInfo.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/ProjectInfo.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -17,7 +17,7 @@
 
 /**
  * Represents information about a project within an Ant build file. Clients may not instantiate or subclass this class.
- * 
+ *
  * @since 2.1
  * @noinstantiate This class is not intended to be instantiated by clients.
  * @noextend This class is not intended to be subclassed by clients.
@@ -29,7 +29,7 @@
 
 	/**
 	 * Create a project information
-	 * 
+	 *
 	 * @param name
 	 *            project name
 	 * @param description
@@ -43,7 +43,7 @@
 
 	/**
 	 * Returns the project name.
-	 * 
+	 *
 	 * @return the project name
 	 */
 	public String getName() {
@@ -52,7 +52,7 @@
 
 	/**
 	 * Returns the project description or <code>null</code> if no description is provided.
-	 * 
+	 *
 	 * @return the project description or <code>null</code> if none
 	 */
 	public String getDescription() {
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Property.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Property.java
index 53d98d9..686294c 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Property.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Property.java
@@ -21,7 +21,7 @@
 
 /**
  * Represents a Ant property. Clients may instantiate this class; it is not intended to be subclassed.
- * 
+ *
  * @since 2.1
  * @noextend This class is not intended to be subclassed by clients.
  */
@@ -45,7 +45,7 @@
 
 	/**
 	 * Gets the name
-	 * 
+	 *
 	 * @return Returns a String
 	 */
 	public String getName() {
@@ -54,7 +54,7 @@
 
 	/**
 	 * Sets the name
-	 * 
+	 *
 	 * @param name
 	 *            The name to set
 	 */
@@ -78,7 +78,7 @@
 
 	/**
 	 * Returns the value. Equivalent to calling #getValue(true);
-	 * 
+	 *
 	 * @return String
 	 */
 	public String getValue() {
@@ -87,7 +87,7 @@
 
 	/**
 	 * Returns the value.
-	 * 
+	 *
 	 * @param substituteVariables
 	 *            whether the value has any variables resolved.
 	 * @return String
@@ -134,7 +134,7 @@
 
 	/**
 	 * Sets the value.
-	 * 
+	 *
 	 * @param value
 	 *            The value to set
 	 */
@@ -144,7 +144,7 @@
 
 	/**
 	 * Returns whether this Ant property has been created because of an extension point definition.
-	 * 
+	 *
 	 * @return boolean
 	 * @since 3.0
 	 */
@@ -154,7 +154,7 @@
 
 	/**
 	 * Sets the label of the plug-in that contributed this Ant property via an extension point.
-	 * 
+	 *
 	 * @param pluginLabel
 	 *            The label of the plug-in
 	 * @since 3.0
@@ -165,7 +165,7 @@
 
 	/**
 	 * Returns the label of the plug-in that contributed this Ant property via an extension point.
-	 * 
+	 *
 	 * @return pluginLabel The label of the plug-in
 	 * @since 3.0
 	 */
@@ -176,7 +176,7 @@
 	/**
 	 * Sets the name of the class that is an <code>IAntPropertyValueProvider</code> to be used to dynamically provide a value for this property. Sets
 	 * the class loader to load the <code>IAntPropertyValueProvider</code> to be used to dynamically provide a value for this property.
-	 * 
+	 *
 	 * @param className
 	 *            The name of the value provider class to use to resolve the value of this property
 	 * @param loader
@@ -200,7 +200,7 @@
 
 	/**
 	 * Returns whether this property requires the Eclipse runtime to be relevant. Defaults value is <code>true</code>
-	 * 
+	 *
 	 * @return whether this property requires the Eclipse runtime
 	 * @since 3.0
 	 */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/TargetInfo.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/TargetInfo.java
index e13ba79..d0d755b 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/TargetInfo.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/TargetInfo.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -17,7 +17,7 @@
 
 /**
  * Represents information about a target within an Ant build file. Clients may not instantiate or subclass this class.
- * 
+ *
  * @since 2.1
  * @noinstantiate This class is not intended to be instantiated by clients.
  * @noextend This class is not intended to be subclassed by clients.
@@ -32,7 +32,7 @@
 
 	/**
 	 * Create a target information
-	 * 
+	 *
 	 * @param name
 	 *            target name
 	 * @param description
@@ -55,7 +55,7 @@
 
 	/**
 	 * Returns the target name.
-	 * 
+	 *
 	 * @return the target name
 	 */
 	public String getName() {
@@ -64,7 +64,7 @@
 
 	/**
 	 * Returns the target description or <code>null</code> if no description is provided.
-	 * 
+	 *
 	 * @return the target description or <code>null</code> if none
 	 */
 	public String getDescription() {
@@ -73,7 +73,7 @@
 
 	/**
 	 * Returns the ProjectInfo of the enclosing project.
-	 * 
+	 *
 	 * @return the project info for the enclosing project
 	 */
 	public ProjectInfo getProject() {
@@ -82,7 +82,7 @@
 
 	/**
 	 * Return the names of the targets that this target depends on.
-	 * 
+	 *
 	 * @return the dependent names
 	 */
 	public String[] getDependencies() {
@@ -91,7 +91,7 @@
 
 	/**
 	 * Returns whether this is the build file default target.
-	 * 
+	 *
 	 * @return whether this is the build file default target
 	 */
 	public boolean isDefault() {
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Task.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Task.java
index 9ce86b4..208aaa9 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Task.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Task.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -17,7 +17,7 @@
 
 /**
  * Represents an Ant task. Clients may instantiate this class; it is not intended to be subclassed.
- * 
+ *
  * @since 2.1
  * @noextend This class is not intended to be subclassed by clients.
  */
@@ -25,7 +25,7 @@
 
 	/**
 	 * Returns the name of the task
-	 * 
+	 *
 	 * @return the name of the task
 	 */
 	public String getTaskName() {
@@ -34,7 +34,7 @@
 
 	/**
 	 * Sets the name of the task
-	 * 
+	 *
 	 * @param taskName
 	 *            The taskName to set
 	 */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Type.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Type.java
index 6fa324d..cc58baa 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Type.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/Type.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -17,7 +17,7 @@
 
 /**
  * Represents an Ant type. Clients may instantiate this class; it is not intended to be subclassed.
- * 
+ *
  * @since 2.1
  * @noextend This class is not intended to be subclassed by clients.
  */
@@ -25,7 +25,7 @@
 
 	/**
 	 * Returns the type name
-	 * 
+	 *
 	 * @return Returns a String
 	 */
 	public String getTypeName() {
@@ -34,7 +34,7 @@
 
 	/**
 	 * Sets the taskName.
-	 * 
+	 *
 	 * @param taskName
 	 *            The taskName to set
 	 */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AbstractEclipseBuildLogger.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AbstractEclipseBuildLogger.java
index 1e15f14..bdeeedd 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AbstractEclipseBuildLogger.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AbstractEclipseBuildLogger.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java
index baec66c..0fc7849 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Tom Tromey (tromey@redhat.com) - patch for bug 40972
@@ -153,7 +153,7 @@
 
 	/**
 	 * Sets whether this class loader will allow Apache Ant classes or resources to be found or loaded from its set of plug-in class loaders.
-	 * 
+	 *
 	 * @param allowLoading
 	 *            whether or not to allow the plug-in class loaders to load the Apache Ant classes or resources
 	 */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClasspathEntry.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClasspathEntry.java
index 623fa52..d3d6e48 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClasspathEntry.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClasspathEntry.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Ericsson AB, Hamdan Msheik - Bug 389564
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCoreUtil.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCoreUtil.java
index bde126a..e362595 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCoreUtil.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCoreUtil.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -62,7 +62,7 @@
 
 	/*
 	 * From a command line list, get the argument for the given parameter. The parameter and its argument are removed from the list.
-	 * 
+	 *
 	 * @return <code>null</code> if the parameter is not found or an empty String if no arguments are found
 	 */
 	public static String getArgument(List<String> commands, String param) {
@@ -134,7 +134,7 @@
 
 	/**
 	 * Returns a list of Properties contained in the list of fileNames.
-	 * 
+	 *
 	 * @param fileNames
 	 *            the names of the properties files to load from
 	 * @param base
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntObject.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntObject.java
index 1171b99..c2804e4 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntObject.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntObject.java
@@ -29,7 +29,7 @@
 
 	/**
 	 * Returns the class name.
-	 * 
+	 *
 	 * @return Returns a String
 	 */
 	public String getClassName() {
@@ -38,7 +38,7 @@
 
 	/**
 	 * Sets the className.
-	 * 
+	 *
 	 * @param className
 	 *            The className to set
 	 */
@@ -48,7 +48,7 @@
 
 	/**
 	 * Gets the library.
-	 * 
+	 *
 	 * @return Returns a URL
 	 * @deprecated use #getLibraryEntry()
 	 */
@@ -62,7 +62,7 @@
 
 	/**
 	 * Sets the library.
-	 * 
+	 *
 	 * @param library
 	 *            The library to set
 	 * @deprecated use #setLibraryEntry(IAntClasspathEntry)
@@ -74,7 +74,7 @@
 
 	/**
 	 * Gets the library classpath entry.
-	 * 
+	 *
 	 * @return Returns a classpath entry for the library of this Ant object
 	 */
 	public IAntClasspathEntry getLibraryEntry() {
@@ -87,7 +87,7 @@
 
 	/**
 	 * Sets the library classpath entry.
-	 * 
+	 *
 	 * @param libraryEntry
 	 *            The library entry to set
 	 */
@@ -105,7 +105,7 @@
 
 	/**
 	 * Returns whether this Ant object has been created because of an extension point definition.
-	 * 
+	 *
 	 * @return boolean
 	 */
 	public boolean isDefault() {
@@ -114,7 +114,7 @@
 
 	/**
 	 * Sets that this Ant object has been created by the appropriate extension point.
-	 * 
+	 *
 	 * @param isDefault
 	 *            Whether this Ant object has been created because of an extension point definition.
 	 * @deprecated Since 3.0 Set the plugin label to indicate a default object
@@ -128,7 +128,7 @@
 
 	/**
 	 * Sets the label of the plugin that contributed this Ant object via an extension point.
-	 * 
+	 *
 	 * @param pluginLabel
 	 *            The label of the plugin
 	 * @since 3.0
@@ -139,7 +139,7 @@
 
 	/**
 	 * Returns the label of the plugin that contributed this Ant object via an extension point.
-	 * 
+	 *
 	 * @return pluginLabel The label of the plugin
 	 * @since 3.0
 	 */
@@ -149,7 +149,7 @@
 
 	/**
 	 * Returns whether this Ant object requires the Eclipse runtime to be relevant. Defaults value is <code>true</code>
-	 * 
+	 *
 	 * @return whether this Ant object requires the Eclipse runtime
 	 * @since 3.0
 	 */
@@ -163,7 +163,7 @@
 
 	/**
 	 * Returns the URI namespace that this Ant object should live in. Default value is <code>null</code>
-	 * 
+	 *
 	 * @return The URI that this Ant object should live in
 	 * @since 3.2
 	 */
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntPropertyValueProvider.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntPropertyValueProvider.java
index 876f146..f217ee7 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntPropertyValueProvider.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntPropertyValueProvider.java
@@ -1,13 +1,13 @@
 /*******************************************************************************
  * Copyright (c) 2003, 2006 BBDO Detroit and others.
  *
- * This program and the accompanying materials 
+ * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     Thierry Lach (thierry.lach@bbdodetroit.com) - initial API and implementation for bug 40502
  *     IBM Corporation - added eclipse.running property, bug 65655
@@ -25,9 +25,9 @@
 
 /**
  * Dynamic provider for Ant properties.
- * 
+ *
  * Provides the dynamic values for the following Ant properties:
- * 
+ *
  * <ul>
  * <li><code>eclipse.home</code> - set to the Eclipse installation directory</li>
  * </ul>
@@ -35,13 +35,13 @@
  * <ul>
  * <li><code>eclipse.running</code> - set (to "true") when Eclipse is running</li>
  * </ul>
- * 
+ *
  * @since 3.0
  */
 public class AntPropertyValueProvider implements IAntPropertyValueProvider {
 	/**
 	 * Returns the dynamic property values for Ant properties.
-	 * 
+	 *
 	 * @param propertyName
 	 *            The name of the property to resolve the value for
 	 * @return The resolved value for the property
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntSecurityManager.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntSecurityManager.java
index 14ec979..deea599 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntSecurityManager.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntSecurityManager.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java
index e3f6085..e2f3cc7 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -32,7 +32,7 @@
 
 	/**
 	 * Preferences
-	 * 
+	 *
 	 * @since 3.0
 	 */
 	public static final String PREFERENCE_ANT_HOME_ENTRIES = "ant_home_entries"; //$NON-NLS-1$
@@ -42,7 +42,7 @@
 
 	/**
 	 * Preferences
-	 * 
+	 *
 	 * @since 2.1
 	 */
 	public static final String PREFERENCE_ANT_HOME = "ant_home"; //$NON-NLS-1$
@@ -54,7 +54,7 @@
 	 * Constant representing the word 'id' <br>
 	 * <br>
 	 * Value is: <code>id</code>
-	 * 
+	 *
 	 * @since 3.2.500
 	 */
 	public static final String ID = "id"; //$NON-NLS-1$
@@ -63,7 +63,7 @@
 	 * Constant representing the word 'augment' <br>
 	 * <br>
 	 * Value is: <code>augment</code>
-	 * 
+	 *
 	 * @since 3.2.500
 	 */
 	public static final String AUGMENT = "augment"; //$NON-NLS-1$
@@ -72,7 +72,7 @@
 	 * Constant for the word 'default' <br>
 	 * <br>
 	 * Value is: <code>default</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String DEFAULT = "default"; //$NON-NLS-1$
@@ -81,14 +81,14 @@
 	 * Constant for the word 'dir' <br>
 	 * <br>
 	 * Value is: <code>dir</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String DIR = "dir"; //$NON-NLS-1$
 
 	/**
 	 * Constant for the empty {@link String}
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String EMPTY_STRING = ""; //$NON-NLS-1$
@@ -97,7 +97,7 @@
 	 * Constant for the word 'file' <br>
 	 * <br>
 	 * Value is: <code>file</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String FILE = "file"; //$NON-NLS-1$
@@ -106,7 +106,7 @@
 	 * Constant representing a file URL protocol <br>
 	 * <br>
 	 * Value is: <code>file:</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String FILE_PROTOCOL = "file:"; //$NON-NLS-1$
@@ -115,7 +115,7 @@
 	 * Constant for the word 'name' <br>
 	 * <br>
 	 * Value is: <code>name</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String NAME = AntCorePlugin.NAME;
@@ -124,7 +124,7 @@
 	 * Constant for the word 'value' <br>
 	 * <br>
 	 * Value is: <code>value</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String VALUE = AntCorePlugin.VALUE;
@@ -133,7 +133,7 @@
 	 * Constant for the word 'description' <br>
 	 * <br>
 	 * Value is: <code>description</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.2.200
 	 */
 	public static final String DESCRIPTION = "description"; //$NON-NLS-1$
@@ -142,7 +142,7 @@
 	 * Constant for the encoding <code>UTF-8</code> <br>
 	 * <br>
 	 * Value is: <code>UTF-8</code>
-	 * 
+	 *
 	 * @since org.eclipse.ant.core 3.3.0
 	 */
 	public static final String UTF_8 = "UTF-8"; //$NON-NLS-1$
@@ -151,7 +151,7 @@
 	 * The name of the XML build file extension. <br>
 	 * <br>
 	 * Value is: <code>xml</code>
-	 * 
+	 *
 	 * @since 3.8
 	 */
 	public static final String XML_EXTENSION = "xml"; //$NON-NLS-1$
@@ -160,7 +160,7 @@
 	 * The name of the target vector property used by the Eclipse executor <br>
 	 * <br>
 	 * Value is: <code>eclipse.ant.targetVector</code>
-	 * 
+	 *
 	 * @since 3.3.0
 	 */
 	public static final String TARGET_VECTOR_NAME = "eclipse.ant.targetVector"; //$NON-NLS-1$
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/InternalCoreAntMessages.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/InternalCoreAntMessages.java
index 8df5b00..03109ec 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/InternalCoreAntMessages.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/InternalCoreAntMessages.java
@@ -6,8 +6,8 @@
 t https://www.eclipse.org/legal/epl-2.0/
 t
 t SPDX-License-Identifier: EPL-2.0
- * 
- * Contributors: 
+ *
+ * Contributors:
  * IBM - Initial API and implementation
  **********************************************************************/
 package org.eclipse.ant.internal.core;
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntBuildfileContentDescriber.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntBuildfileContentDescriber.java
index 3365025..604c34e 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntBuildfileContentDescriber.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntBuildfileContentDescriber.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Philippe Ombredanne (pombredanne@nexb.com) - bug 125367
@@ -35,18 +35,18 @@
  * likely Ant element is found (classpath, import, macrodef, path, property, taskdef, typedef) returns VALID else: returns INDETERMINATE else returns
  * INDETERMINATE
  * </p>
- * 
+ *
  * @since 3.1
  */
 public final class AntBuildfileContentDescriber extends XMLContentDescriber implements IExecutableExtension {
 
 	/*
 	 * (Intentionally not included in javadoc) Determines the validation status for the given contents.
-	 * 
+	 *
 	 * @param contents the contents to be evaluated
-	 * 
+	 *
 	 * @return one of the following:<ul> <li><code>VALID</code></li>, <li><code>INVALID</code></li>, <li><code>INDETERMINATE</code></li> </ul>
-	 * 
+	 *
 	 * @throws IOException
 	 */
 	private int checkCriteria(InputSource contents) throws IOException {
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntHandler.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntHandler.java
index 3a46131..2a9deff 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntHandler.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/contentDescriber/AntHandler.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Philippe Ombredanne (pombredanne@nexb.com) - bug 125367
@@ -33,13 +33,13 @@
 /**
  * An xml event handler for detecting the project top-level element in an Ant buildfile. Also records whether a default attribute is present for the
  * project and if any target or some other typical ant elements are present. There are still cases where we could ignore a valid ant buildfile though.
- * 
+ *
  * @since 3.1
  */
 public final class AntHandler extends DefaultHandler {
 	/**
 	 * An exception indicating that the parsing should stop.
-	 * 
+	 *
 	 * @since 3.1
 	 */
 	private class StopParsingException extends SAXException {
@@ -81,7 +81,7 @@
 
 	/**
 	 * Creates a new SAX parser for use within this instance.
-	 * 
+	 *
 	 * @return The newly created parser.
 	 * @throws ParserConfigurationException
 	 *             If a parser of the given configuration cannot be created.
@@ -139,7 +139,7 @@
 	/*
 	 * Resolve external entity definitions to an empty string. This is to speed up processing of files with external DTDs. Not resolving the contents
 	 * of the DTD is ok, as only the System ID of the DTD declaration is used.
-	 * 
+	 *
 	 * @see org.xml.sax.helpers.DefaultHandler#resolveEntity(java.lang.String, java.lang.String)
 	 */
 	@Override
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/DemuxInputStreamSetter.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/DemuxInputStreamSetter.java
index 588de04..b053a34 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/DemuxInputStreamSetter.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/DemuxInputStreamSetter.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/FailInputHandler.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/FailInputHandler.java
index 323c30b..46ab407 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/FailInputHandler.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/FailInputHandler.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InputHandlerSetter.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InputHandlerSetter.java
index 2e568e3..f985059 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InputHandlerSetter.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InputHandlerSetter.java
@@ -7,7 +7,7 @@
  *  https://www.eclipse.org/legal/epl-2.0/
  *
  *  SPDX-License-Identifier: EPL-2.0
- * 
+ *
  *  Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntMessages.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntMessages.java
index fb209e8..3b97c67 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntMessages.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntMessages.java
@@ -7,7 +7,7 @@
  *  https://www.eclipse.org/legal/epl-2.0/
  *
  *  SPDX-License-Identifier: EPL-2.0
- * 
+ *
  *  Contributors:
  *  IBM - Initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java
index 4245e09..d3f9132 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java
@@ -7,7 +7,7 @@
  *  https://www.eclipse.org/legal/epl-2.0/
  *
  *  SPDX-License-Identifier: EPL-2.0
- * 
+ *
  *  Contributors:
  *     IBM Corporation - derived implementation
  *     Blake Meike (blakem@world.std.com)- patch for bug 31691 and bug 34488
@@ -145,14 +145,14 @@
 
 	/**
 	 * Indicates whether to execute all targets that do not depend on failed targets
-	 * 
+	 *
 	 * @since Ant 1.6.0
 	 */
 	private boolean keepGoing = false;
 
 	/**
 	 * Indicates whether this build is to support interactive input
-	 * 
+	 *
 	 * @since Ant 1.6.0
 	 */
 	private boolean allowInput = true;
@@ -163,7 +163,7 @@
 
 	/**
 	 * Adds a build listener.
-	 * 
+	 *
 	 * @param classNames
 	 *            the fully qualified names of the build listeners to be added
 	 */
@@ -183,7 +183,7 @@
 
 	/**
 	 * Adds a build logger. There can be only one build logger.
-	 * 
+	 *
 	 * @param className
 	 *            The fully qualified name of the build logger to add
 	 */
@@ -193,7 +193,7 @@
 
 	/**
 	 * Adds user properties to the current collection of user properties.
-	 * 
+	 *
 	 * @param properties
 	 *            The user properties to be added
 	 */
@@ -208,7 +208,7 @@
 
 	/**
 	 * Adds user property files.
-	 * 
+	 *
 	 * @param additionalPropertyFiles
 	 *            The property files to add
 	 * @since 2.1
@@ -219,7 +219,7 @@
 
 	/**
 	 * Tries to add the build listeners to the backing {@link Project}
-	 * 
+	 *
 	 * @param project
 	 *            the project to add the listeners to
 	 * @param log
@@ -285,7 +285,7 @@
 
 	/**
 	 * Sets the default <code>ant.file</code> and <code>ant.version</code> properties in the given {@link Project}
-	 * 
+	 *
 	 * @param project
 	 */
 	protected void setBuiltInProperties(Project project) {
@@ -369,7 +369,7 @@
 
 	/**
 	 * Parses the build file and adds necessary information into the given project.
-	 * 
+	 *
 	 * @param project
 	 *            The project to configure
 	 */
@@ -405,7 +405,7 @@
 	 * Gets all the target information from the build script. Returns a list of lists. Each item in the enclosing list represents a target, where the
 	 * first element is the name, the second element is the description, the third element is the project name, and the last elements is an array of
 	 * dependencies.
-	 * 
+	 *
 	 * @return a list of {@link TargetInfo} objects
 	 */
 	public List<TargetInfo> getTargets() {
@@ -465,7 +465,7 @@
 
 	/**
 	 * Returns a list of target names in the build script.
-	 * 
+	 *
 	 * @return a list of target names
 	 */
 	private List<String> getTargetNames() {
@@ -518,7 +518,7 @@
 
 	/**
 	 * Returns the default target name that was last computed or <code>null</code> if no default target has been computed.
-	 * 
+	 *
 	 * @return the default target name
 	 */
 	public String getDefaultTarget() {
@@ -562,7 +562,7 @@
 	/**
 	 * Invokes the building of a project object and executes a build using either a given target or the default target. This method is called if
 	 * running in headless mode.
-	 * 
+	 *
 	 * @see org.eclipse.ant.core.AntRunner#run(Object)
 	 * @param argArray
 	 *            the command line arguments
@@ -581,7 +581,7 @@
 	 * <ul>
 	 * <li><b>-projecthelp</b>, <b>-p</b> - print project help information</li>
 	 * </ul>
-	 * 
+	 *
 	 * @param argList
 	 *            the raw list of command line arguments
 	 */
@@ -790,7 +790,7 @@
 
 	/**
 	 * Creates and returns the default build logger for logging build events to the ant log.
-	 * 
+	 *
 	 * @return the default build logger for logging build events to the ant log can return <code>null</code> if no logging is to occur
 	 */
 	protected BuildLogger createLogger() {
@@ -843,7 +843,7 @@
 
 	/**
 	 * Sends the the event to the backing project that the build has completed
-	 * 
+	 *
 	 * @param project
 	 * @param error
 	 */
@@ -907,7 +907,7 @@
 
 	/**
 	 * Sets the buildFileLocation.
-	 * 
+	 *
 	 * @param buildFileLocation
 	 *            the file system location of the build file
 	 */
@@ -920,7 +920,7 @@
 
 	/**
 	 * Sets the input handler class name.
-	 * 
+	 *
 	 * @param inputHandlerClassname
 	 *            the name of the class to use for the input handler
 	 */
@@ -930,7 +930,7 @@
 
 	/**
 	 * Returns the class name of the input handler to use
-	 * 
+	 *
 	 * @return the input handler class name
 	 */
 	protected String getInputHandler() {
@@ -943,7 +943,7 @@
 
 	/**
 	 * Returns the location of the buildfile. If one has not been supplied the default location of <code>build.xml</code> will be returned
-	 * 
+	 *
 	 * @return the absolute location of the build file
 	 */
 	protected String getBuildFileLocation() {
@@ -955,7 +955,7 @@
 
 	/**
 	 * Sets the message output level. Use -1 for none.
-	 * 
+	 *
 	 * @param level
 	 *            The message output level
 	 */
@@ -968,7 +968,7 @@
 
 	/**
 	 * Sets the extra user arguments
-	 * 
+	 *
 	 * @param args
 	 *            The extra user arguments
 	 */
@@ -978,7 +978,7 @@
 
 	/**
 	 * Sets the execution targets.
-	 * 
+	 *
 	 * @param executionTargets
 	 *            The targets to execute for the build
 	 */
@@ -1032,7 +1032,7 @@
 	 * <li><b>-logger</b> <em>&lt;classname&gt;</em> - the class which is to perform logging</li>
 	 * <li><b>-listener</b> <em>&lt;classname&gt;</em> - add an instance of class as a project listener</li>
 	 * </ul>
-	 * 
+	 *
 	 * @param commands
 	 *            the raw command line arguments passed in from the application
 	 * @return <code>true</code> if it is OK to run with the given list of arguments <code>false</code> otherwise
@@ -1106,7 +1106,7 @@
 	 * <li><b>-autoproxy</b> - Java 1.5+ : use the OS proxies</li>
 	 * <li><b>-main</b> <em>&lt;class&gt;</em> - override Ant's normal entry point</li>
 	 * </ul>
-	 * 
+	 *
 	 * @param commands
 	 *            the raw command line arguments passed in from the application
 	 * @return <code>true</code> if it is OK to run with the given list of arguments <code>false</code> otherwise
@@ -1242,7 +1242,7 @@
 
 	/**
 	 * Checks for unrecognized targets on the command line and removes them.
-	 * 
+	 *
 	 * @since 3.6
 	 */
 	private void processUnrecognizedTargets(List<String> commands) {
@@ -1373,7 +1373,7 @@
 
 	/**
 	 * Process properties specified using <code>-D</code>
-	 * 
+	 *
 	 * @param commands
 	 */
 	protected void processMinusDProperties(List<String> commands) {
@@ -1392,7 +1392,7 @@
 
 	/**
 	 * Sets the build progress monitor.
-	 * 
+	 *
 	 * @param monitor
 	 *            The progress monitor to use
 	 */
@@ -1402,7 +1402,7 @@
 
 	/**
 	 * Returns the current {@link Project} context
-	 * 
+	 *
 	 * @return the current {@link Project}
 	 */
 	protected Project getCurrentProject() {
@@ -1411,7 +1411,7 @@
 
 	/**
 	 * Sets the current {@link Project} context
-	 * 
+	 *
 	 * @param currentProject
 	 *            the new {@link Project}
 	 */
@@ -1457,7 +1457,7 @@
 
 	/**
 	 * Creates the InputHandler and adds it to the project.
-	 * 
+	 *
 	 * @exception BuildException
 	 *                if a specified InputHandler implementation could not be loaded.
 	 */
@@ -1502,7 +1502,7 @@
 
 	/**
 	 * Sets the custom classpath to be included when setting the Java classpath for this build.
-	 * 
+	 *
 	 * @param classpath
 	 *            The custom classpath for this build.
 	 */
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject.java
index 6fcae13..e3752ad 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject.java
@@ -7,7 +7,7 @@
  *  https://www.eclipse.org/legal/epl-2.0/
  *
  *  SPDX-License-Identifier: EPL-2.0
- * 
+ *
  *  Contributors:
  *     IBM Corporation - derived implementation
  *******************************************************************************/
@@ -30,11 +30,11 @@
 /**
  * A subclass of Project to facilitate "faster" parsing with less garbage generated. This class is not used on Ant 1.6 and newer due to the
  * improvements in lazy loading of these Ant versions.
- * 
+ *
  * Only three tasks are loaded (property, taskdef and typedef: three tasks that can be defined outside of a target on Ant 1.5.1 or older).
- * 
+ *
  * Datatypes are loaded if requested.
- * 
+ *
  * Derived from the original Ant Project class
  */
 public class InternalProject extends Project {
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject2.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject2.java
index f4aeb3b..535087d 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject2.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalProject2.java
@@ -1,13 +1,13 @@
 /*******************************************************************************
  * Copyright (c) 2005 IBM Corporation and others.
  *
- * This program and the accompanying materials 
+ * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/NullInputHandler.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/NullInputHandler.java
index 03ccacd..58d8127 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/NullInputHandler.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/NullInputHandler.java
@@ -7,7 +7,7 @@
  * https://www.eclipse.org/legal/epl-2.0/
  *
  * SPDX-License-Identifier: EPL-2.0
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/ProgressBuildListener.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/ProgressBuildListener.java
index 35dfc6a..168e782 100644
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/ProgressBuildListener.java
+++ b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/ProgressBuildListener.java
@@ -7,7 +7,7 @@
  *  https://www.eclipse.org/legal/epl-2.0/
  *
  *  SPDX-License-Identifier: EPL-2.0
- * 
+ *
  *  Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
