diff --git a/org.eclipse.pde.build.tests/resources/114150/plugins/a.plugin/src/a/plugin/Activator.java b/org.eclipse.pde.build.tests/resources/114150/plugins/a.plugin/src/a/plugin/Activator.java
index 3820317..ccf1f21 100644
--- a/org.eclipse.pde.build.tests/resources/114150/plugins/a.plugin/src/a/plugin/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/114150/plugins/a.plugin/src/a/plugin/Activator.java
@@ -20,19 +20,11 @@
 	public Activator() {
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
diff --git a/org.eclipse.pde.build.tests/resources/183869/plugins/a.plugin/src/a/plugin/Activator.java b/org.eclipse.pde.build.tests/resources/183869/plugins/a.plugin/src/a/plugin/Activator.java
index 3820317..ccf1f21 100644
--- a/org.eclipse.pde.build.tests/resources/183869/plugins/a.plugin/src/a/plugin/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/183869/plugins/a.plugin/src/a/plugin/Activator.java
@@ -20,19 +20,11 @@
 	public Activator() {
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
diff --git a/org.eclipse.pde.build.tests/resources/192127/plugins/rcp/src/rcp/Application.java b/org.eclipse.pde.build.tests/resources/192127/plugins/rcp/src/rcp/Application.java
index 690e81f..7c6d6ce 100644
--- a/org.eclipse.pde.build.tests/resources/192127/plugins/rcp/src/rcp/Application.java
+++ b/org.eclipse.pde.build.tests/resources/192127/plugins/rcp/src/rcp/Application.java
@@ -8,17 +8,11 @@
  */
 public class Application implements IApplication {
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
-	 */
 	public Object start(IApplicationContext context) throws Exception {
 		System.out.println("Hello RCP World!");
 		return IApplication.EXIT_OK;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#stop()
-	 */
 	public void stop() {
 		// nothing to do
 	}
diff --git a/org.eclipse.pde.build.tests/resources/208011/plugins/B/src/b/Activator.java b/org.eclipse.pde.build.tests/resources/208011/plugins/B/src/b/Activator.java
index 26c84aa..2c113c4 100644
--- a/org.eclipse.pde.build.tests/resources/208011/plugins/B/src/b/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/208011/plugins/B/src/b/Activator.java
@@ -23,19 +23,11 @@
 	
 	public static void foo() {}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
diff --git a/org.eclipse.pde.build.tests/resources/237922/rcp/src/rcp/Activator.java b/org.eclipse.pde.build.tests/resources/237922/rcp/src/rcp/Activator.java
index f091217..3f8003f 100644
--- a/org.eclipse.pde.build.tests/resources/237922/rcp/src/rcp/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/237922/rcp/src/rcp/Activator.java
@@ -21,19 +21,11 @@
 	public Activator() {
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
diff --git a/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/library/a/Activator.java b/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/library/a/Activator.java
index 3709225..1753b61 100644
--- a/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/library/a/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/library/a/Activator.java
@@ -15,10 +15,6 @@
 	private Activator() {
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		myContext = context;
 		myApplication = new Application();
diff --git a/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/src/a/Application.java b/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/src/a/Application.java
index 52ad5dd..5dafca3 100644
--- a/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/src/a/Application.java
+++ b/org.eclipse.pde.build.tests/resources/248767/build1/plugins/A/src/a/Application.java
@@ -7,17 +7,11 @@
  */
 public class Application implements ParameterizedRunnable {
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
-	 */
 	public Object run(Object context) {
 		System.out.println("Hello RCP World!");
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#stop()
-	 */
 	public void stop() {
 		// nothing to do
 	}
diff --git a/org.eclipse.pde.build.tests/resources/309572/plugins/test.flex.root/src/my/view/Activator.java b/org.eclipse.pde.build.tests/resources/309572/plugins/test.flex.root/src/my/view/Activator.java
index 1fec6c2..68be61c 100644
--- a/org.eclipse.pde.build.tests/resources/309572/plugins/test.flex.root/src/my/view/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/309572/plugins/test.flex.root/src/my/view/Activator.java
@@ -21,19 +21,11 @@
 	public Activator() {
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
diff --git a/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Activator.java b/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Activator.java
index b3e5a99..5ed08a9 100644
--- a/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Activator.java
+++ b/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Activator.java
@@ -20,19 +20,11 @@
 	public Activator() {
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
diff --git a/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Application.java b/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Application.java
index 8cb32d0..f42d77f 100644
--- a/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Application.java
+++ b/org.eclipse.pde.build.tests/resources/p2.SimpleProduct/plugins/test/src/test/Application.java
@@ -8,17 +8,11 @@
  */
 public class Application implements IApplication {
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
-	 */
 	public Object start(IApplicationContext context) throws Exception {
 		System.out.println("Hello RCP World!");
 		return IApplication.EXIT_OK;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#stop()
-	 */
 	public void stop() {
 		// nothing to do
 	}
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildApplication.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildApplication.java
index 3f08c5f..7d8c591 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildApplication.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildApplication.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2013 IBM Corporation and others.
+ * Copyright (c) 2007, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,9 +19,6 @@
 
 public class BuildApplication implements IApplication {
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
-	 */
 	@Override
 	public Object start(IApplicationContext context) throws Exception {
 		//take down splash
@@ -69,9 +66,6 @@
 		return result;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#stop()
-	 */
 	@Override
 	public void stop() {
 		// do nothing for now
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java
index 54524a9..635f826 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2017 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -50,9 +50,6 @@
 	private Properties buildProperties;
 	private AssemblyInformation assembly = null;
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.internal.build.AbstractScriptGenerator#generate()
-	 */
 	@Override
 	public void generate() throws CoreException {
 		initialize();
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java
index 82618e8..5372e51 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2008, 2018 IBM Corporation and others. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
@@ -13,9 +13,6 @@
 import org.eclipse.osgi.service.resolver.BundleDescription;
 import org.eclipse.pde.internal.build.*;
 
-/**
- *
- */
 public class CompilationScriptGenerator extends AbstractScriptGenerator {
 
 	private String featureId = "all"; //$NON-NLS-1$
@@ -27,9 +24,6 @@
 	protected AssemblyInformation assemblyData;
 	protected BuildDirector director;
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.internal.build.AbstractScriptGenerator#generate()
-	 */
 	@Override
 	public void generate() throws CoreException {
 		openScript(getWorkingDirectory(), getScriptName());
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java
index 46b93c3..0f07f79 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/GETFetchFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2013 IBM Corporation and others.
+ * Copyright (c) 2007, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -57,33 +57,21 @@
 	private static final String TAG_OPEN = "<"; //$NON-NLS-1$
 	private static final String TAG_CLOSE = "/>"; //$NON-NLS-1$
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#addTargets(org.eclipse.pde.build.IAntScript)
-	 */
 	@Override
 	public void addTargets(IAntScript script) {
 		//
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#generateRetrieveElementCall(java.util.Map, org.eclipse.core.runtime.IPath, org.eclipse.pde.build.IAntScript)
-	 */
 	@Override
 	public void generateRetrieveElementCall(Map<String, Object> entryInfos, IPath destination, IAntScript script) {
 		printGetTask(destination, script, entryInfos);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#generateRetrieveFilesCall(java.util.Map, org.eclipse.core.runtime.IPath, java.lang.String[], org.eclipse.pde.build.IAntScript)
-	 */
 	@Override
 	public void generateRetrieveFilesCall(Map<String, Object> entryInfos, IPath destination, String[] files, IAntScript script) {
 		//
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#parseMapFileEntry(java.lang.String, java.util.Properties, java.util.Map)
-	 */
 	@Override
 	public void parseMapFileEntry(String rawEntry, Properties overrideTags, Map<String, Object> entryInfos) throws CoreException {
 		String url = rawEntry;
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java
index d365e78..f039151 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/fetch/P2IUFetchFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -86,9 +86,6 @@
 		throw new CoreException(new Status(IStatus.ERROR, IPDEBuildConstants.PI_PDEBUILD, 0, message, e));
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#addTargets(org.eclipse.pde.build.IAntScript)
-	 */
 	@Override
 	public void addTargets(IAntScript script) {
 		// single target to fetch all IUs from different repos
@@ -139,9 +136,6 @@
 		iusToFetchBySource.clear();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#generateRetrieveElementCall(java.util.Map, org.eclipse.core.runtime.IPath, org.eclipse.pde.build.IAntScript)
-	 */
 	@Override
 	public void generateRetrieveElementCall(Map<String, Object> entryInfos, IPath destination, IAntScript script) {
 		// generate at most one fetch call
@@ -165,9 +159,6 @@
 
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#generateRetrieveFilesCall(java.util.Map, org.eclipse.core.runtime.IPath, java.lang.String[], org.eclipse.pde.build.IAntScript)
-	 */
 	@Override
 	public void generateRetrieveFilesCall(Map<String, Object> entryInfos, IPath destination, String[] files, IAntScript script) {
 		Map<String, String> args = new HashMap<>();
@@ -205,9 +196,6 @@
 		script.printEndTag("move"); //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.pde.build.IFetchFactory#parseMapFileEntry(java.lang.String, java.util.Properties, java.util.Map)
-	 */
 	@Override
 	public void parseMapFileEntry(String rawEntry, Properties overrideTags, Map<String, Object> entryInfos) throws CoreException {
 		String[] arguments = Utils.getArrayFromStringWithBlank(rawEntry, SEPARATOR);
diff --git a/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java b/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java
index bd73ab0..fc9bbb9 100644
--- a/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java
+++ b/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/generator/GeneratorTask.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2013 IBM Corporation and others.
+ * Copyright (c) 2007, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,9 +32,6 @@
 	private GeneratorApplication generator = null;
 	private String mode;
 
-	/* (non-Javadoc)
-	 * @see org.apache.tools.ant.Task#execute()
-	 */
 	@Override
 	public void execute() throws BuildException {
 		try {
