diff --git a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/collectionextract/ICollectionExtractor.java b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/collectionextract/ICollectionExtractor.java
index 9ff69d5..924f5a5 100644
--- a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/collectionextract/ICollectionExtractor.java
+++ b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/collectionextract/ICollectionExtractor.java
@@ -31,7 +31,7 @@
     /**
      * Check if the size of the collection can be extracted.
      * @return true if {@link #getSize(IObject)} could be called
-     * @see {@link #getSize(IObject)}
+     * @see #getSize(IObject)
      */
     boolean hasSize();
 
@@ -48,7 +48,7 @@
     /**
      * Check if the collection has capacity, e.g. ArrayList
      * @return true if {@link #getCapacity(IObject)} could be called
-     * @see {@link #getCapacity(IObject)}
+     * @see #getCapacity(IObject)
      */
     boolean hasCapacity();
 
@@ -116,7 +116,7 @@
      *            - the collection to find the object array holding its contents
      * @return the backing array for the collection
      * @throws SnapshotException
-     * @see {@link #hasExtractableArray()}
+     * @see #hasExtractableArray()
      */
     IObjectArray extractEntries(IObject collection) throws SnapshotException;
 
diff --git a/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/ExportHprof.java b/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/ExportHprof.java
index 3dd05e8..83863bd 100644
--- a/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/ExportHprof.java
+++ b/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/ExportHprof.java
@@ -2135,7 +2135,7 @@
 
         /**
          * Return the renamed version of a method/type signature
-         * @param cn
+         * @param sig
          * @return null if not renamed
          */
         public String mapSignature(String sig)
diff --git a/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/SeekableStream.java b/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/SeekableStream.java
index d50ac90..7eb40d1 100644
--- a/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/SeekableStream.java
+++ b/plugins/org.eclipse.mat.hprof/src/org/eclipse/mat/hprof/SeekableStream.java
@@ -325,7 +325,7 @@
      *            Supplier of a new non-seekable stream for the same resource,
      *            {@link #underlying}.
      *            The streams are closed when no longer needed.
-     *            Wrap the innermost stream with {@link UnclosableStream}
+     *            Wrap the innermost stream with {@link UnclosableInputStream}
      *            to avoid closing the underlying stream when one of the
      *            non-seekable streams is closed by this class.
      * @param underlying
@@ -360,7 +360,7 @@
      * @param genstream
      *            Supplier of a new non-seekable stream for the same resource.
      *            The streams are closed when no longer needed.
-     *            Wrap the innermost stream with {@link UnclosableStream}
+     *            Wrap the innermost stream with {@link UnclosableInputStream}
      *            to avoid closing the underlying stream when one of the
      *            non-seekable streams is closed by this class.
      * @param underlying
diff --git a/plugins/org.eclipse.mat.report/src/org/eclipse/mat/collect/ArrayIntBig.java b/plugins/org.eclipse.mat.report/src/org/eclipse/mat/collect/ArrayIntBig.java
index 19b247c..a279ce2 100644
--- a/plugins/org.eclipse.mat.report/src/org/eclipse/mat/collect/ArrayIntBig.java
+++ b/plugins/org.eclipse.mat.report/src/org/eclipse/mat/collect/ArrayIntBig.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2018 SAP AG and IBM Corporation.
+ * Copyright (c) 2008, 2021 SAP AG and IBM Corporation.
  * All rights reserved. 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/
- *
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -108,9 +108,9 @@
     }
 
     /**
-     * Returns <tt>true</tt> if this list contains no elements.
+     * Returns <code>true</code> if this list contains no elements.
      * 
-     * @return <tt>true</tt> if this list contains no elements.
+     * @return <code>true</code> if this list contains no elements.
      */
     public boolean isEmpty()
     {
diff --git a/plugins/org.eclipse.mat.report/src/org/eclipse/mat/query/registry/QueryDescriptor.java b/plugins/org.eclipse.mat.report/src/org/eclipse/mat/query/registry/QueryDescriptor.java
index b247d41..d5c207c 100644
--- a/plugins/org.eclipse.mat.report/src/org/eclipse/mat/query/registry/QueryDescriptor.java
+++ b/plugins/org.eclipse.mat.report/src/org/eclipse/mat/query/registry/QueryDescriptor.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2020 SAP AG and IBM Corporation.
+ * Copyright (c) 2008, 2021 SAP AG and IBM Corporation.
  * All rights reserved. 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/
- *
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -14,11 +14,14 @@
 package org.eclipse.mat.query.registry;
 
 import java.net.URL;
+import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
+import javax.tools.JavaCompiler;
+
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.mat.SnapshotException;
 import org.eclipse.mat.query.IQuery;
@@ -94,7 +97,7 @@
 
     /**
      * The type of the query object, to be instantiated and the arguments injected when the query is run.
-     * @return the type, suitable for instantiation with {@link Class#newInstance()} or {@link java.lang.reflect.Constructor#newInstance()}
+     * @return the type, suitable for instantiation with {@link Class#newInstance()} or {@link Constructor#newInstance(Object...)}
      */
     public Class<? extends IQuery> getCommandType()
     {
diff --git a/plugins/org.eclipse.mat.ui.help/extrabuild.xml b/plugins/org.eclipse.mat.ui.help/extrabuild.xml
index 6b6c5eb..f8cf5db 100644
--- a/plugins/org.eclipse.mat.ui.help/extrabuild.xml
+++ b/plugins/org.eclipse.mat.ui.help/extrabuild.xml
@@ -36,12 +36,6 @@
             splitindex="true" use="true" version="true" overview="../org.eclipse.mat.api/src/overview.html">
             <classpath>
                 <pathelement path="${test_classpath}"/>
-                <fileset dir="${user.home}/.m2/repository" erroronmissingdir="false">
-                    <include name="**/com.ibm.dtfj.*.jar"/>
-                    <include name="**/com.ibm.icu-*.jar"/>
-                    <include name="**/org.eclipse.core.runtime-*.jar"/>
-                    <include name="**/org.eclipse.birt.*.jar"/>
-                </fileset>
             </classpath>
             <!-- Change source attribute to the Java version with which we build standalone MAT -->
             <arg value="-Xmaxwarns"/>
diff --git a/plugins/org.eclipse.mat.ui.help/pom.xml b/plugins/org.eclipse.mat.ui.help/pom.xml
index cc1daa5..e82ef33 100644
--- a/plugins/org.eclipse.mat.ui.help/pom.xml
+++ b/plugins/org.eclipse.mat.ui.help/pom.xml
Binary files differ
