Simplified the API for internal traceability links
diff --git a/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java
index 1ff2fd3..1584a37 100644
--- a/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java
@@ -41,16 +41,20 @@
 
 	/**
 	 * Used to get internal links connected to a selected element.
-	 * @param element 
-	 * 			the selected element
+	 * 
+	 * @param element
+	 *            the selected element
 	 * @param traceModel
-	 * 			the current trace model
+	 *            the current trace model
 	 * @param selectedRelationshipTypes
-	 * 			the selected relationship types from the filter, if the user has selected any
+	 *            the selected relationship types from the filter, if the user
+	 *            has selected any
 	 * @param maximumDepth
-	 * 			The maximum depth the transitivity should go. 0 means show all the links
+	 *            The maximum depth the transitivity should go. 0 means show all
+	 *            the links
 	 * @param existingTraces
-	 * 			The trace links that have been created manually by the user, these are obtained from the trace model
+	 *            The trace links that have been created manually by the user,
+	 *            these are obtained from the trace model
 	 */
 	public List<Connection> getInternalElementsTransitive(EObject element, EObject traceModel,
 			List<String> selectedRelationshipTypes, int maximumDepth, List<Connection> existingTraces) {
@@ -64,7 +68,6 @@
 			List<String> selectedRelationshipTypes, boolean traceLinksTransitive, int transitivityDepth,
 			List<Connection> existingTraces) {
 		List<Connection> allElements = new ArrayList<>();
-		ArrayList<Integer> duplicationCheck = new ArrayList<>();
 		List<Connection> directElements;
 		if (traceLinksTransitive) {
 			directElements = getTransitivelyConnectedElements(element, traceModel, selectedRelationshipTypes,
@@ -98,8 +101,8 @@
 			for (EObject o : conn.getTargets()) {
 				@SuppressWarnings("unchecked")
 				IArtifactHandler<Object> handler = (IArtifactHandler<Object>) artifactHelper.getHandler(o).orElse(null);
-				handler.addInternalLinks(o, allElements, duplicationCheck, selectedRelationshipTypes);
-				
+				allElements.addAll(handler.addInternalLinks(o, selectedRelationshipTypes));
+
 			}
 		}
 
@@ -107,22 +110,22 @@
 			@SuppressWarnings("unchecked")
 			IArtifactHandler<Object> handler = (IArtifactHandler<Object>) artifactHelper.getHandler(element)
 					.orElse(null);
-			handler.addInternalLinks(element, allElements, duplicationCheck, selectedRelationshipTypes);
+			allElements.addAll(handler.addInternalLinks(element, selectedRelationshipTypes));
 		}
 		return allElements;
 	}
 
 	@Override
 	public boolean isThereAnInternalTraceBetween(EObject first, EObject second) {
-		
-			ResourceSet resourceSet = new ResourceSetImpl();
-			TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
-			EObject artifactModel = persistenceAdapter.getArtifactWrappers(resourceSet);
-			ArtifactHelper artifactHelper = new ArtifactHelper(artifactModel);
-			IArtifactHandler<?> handlerFirstElement = artifactHelper.getHandler(first).orElse(null);
-			IArtifactHandler<?> handlerSecondElement = artifactHelper.getHandler(second).orElse(null);
 
-			return handlerFirstElement.isThereAnInternalTraceBetween(first, second)
-					|| handlerSecondElement.isThereAnInternalTraceBetween(first, second);
+		ResourceSet resourceSet = new ResourceSetImpl();
+		TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
+		EObject artifactModel = persistenceAdapter.getArtifactWrappers(resourceSet);
+		ArtifactHelper artifactHelper = new ArtifactHelper(artifactModel);
+		IArtifactHandler<?> handlerFirstElement = artifactHelper.getHandler(first).orElse(null);
+		IArtifactHandler<?> handlerSecondElement = artifactHelper.getHandler(second).orElse(null);
+
+		return handlerFirstElement.isThereAnInternalTraceBetween(first, second)
+				|| handlerSecondElement.isThereAnInternalTraceBetween(first, second);
 	}
 }
diff --git a/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java
index 39a3cad..1f3fd02 100644
--- a/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.capra.core.handlers;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.BiFunction;
@@ -104,7 +103,6 @@
 	 */
 	Class<T> getHandledClass();
 
-
 	/**
 	 * When a change in the resource occurs, it generates the message that is to
 	 * be displayed by the Capra marker.
@@ -113,26 +111,34 @@
 	 *            represents changes in the state of a resource
 	 * @param wrapperUri
 	 *            uri of the artifact that is associated with the change
-	 * @return the Capra marker message. Every marker must return a unique message.
-         *         If the message already exists it will be ignoored and a marker will 
-         *         not be created.
+	 * @return the Capra marker message. Every marker must return a unique
+	 *         message. If the message already exists it will be ignoored and a
+	 *         marker will not be created.
 	 */
 	String generateMarkerMessage(IResourceDelta delta, String wrapperUri);
-	
+
 	/**
-	 * Adds internal links related to a given element
+	 * Adds internal links related to a given element.
+	 * <p>
+	 * This is helpful if Eclipse Capra should include links within a DSL, e.g.,
+	 * associations between classes, in its visualisations and analysis. A
+	 * handler that implements this method should return a list of
+	 * {@code Connection}. This list will be used in visualisations and
+	 * analysis, but not persisted in Capra's own trace model.
 	 * 
 	 * @param investigatedElement
-	 *            Element currently under investigation for links
-	 * @param allElements
-	 *            List of all elements for Plant-uml view
-	 * @param duplicationCheck
-	 *            List of String for checking for duplication
-	 * @param selectedRelationshipTypes 
-	 * 			  relationship types selected by the user to be displayed in the plantUML view
+	 *            element currently under investigation for links
+	 * @param selectedRelationshipTypes
+	 *            relationship types selected by the user; this ensures that
+	 *            Capra only includes specific link types in the visualisation
+	 *            and analysis and implementation of the method should filter on
+	 *            this list
+	 * 
+	 * @return a list of {@link Connection} between the
+	 *         {@code investigatedElement} and other elements the handler takes
+	 *         care of
 	 */
-	void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes);
+	List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes);
 
 	/**
 	 * Decide if two objects have an internal link between them.
diff --git a/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java b/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
index 855eb87..af71df6 100644
--- a/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
+++ b/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.cdt;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.http.client.utils.URIBuilder;
@@ -33,7 +33,8 @@
  * Handler to allow tracing to and from elements of C such as files and
  * functions. Uses CDT as the foundation.
  * </p>
- * This handler encodes a locator to the C element in artifact URI:s in the following way:
+ * This handler encodes a locator to the C element in artifact URI:s in the
+ * following way:
  * {@code platform:/Project_name/path/to/file.c#classOrStructName/memberName}
  * <p/>
  * {@code platform:/Project_name/path/to/file.c#functionClassOrStructName}.
@@ -43,25 +44,25 @@
 	@Override
 	public EObject createWrapper(ICElement element, EObject artifactModel) {
 		ICompositeType type = (ICompositeType) element.getParent().getAncestor(ICElement.C_CLASS);
-		if (type == null) type = (ICompositeType) element.getParent().getAncestor(ICElement.C_STRUCT);
-		if (type == null) type = (ICompositeType) element.getParent().getAncestor(ICElement.C_UNION);
-		
+		if (type == null)
+			type = (ICompositeType) element.getParent().getAncestor(ICElement.C_STRUCT);
+		if (type == null)
+			type = (ICompositeType) element.getParent().getAncestor(ICElement.C_UNION);
+
 		// TODO: Will this be unique? I don't know.
 		String typePrefix = type == null ? "" : type.getName() + "/";
 
-		// TODO: This does not take C++ function overloading on argument types into account when
+		// TODO: This does not take C++ function overloading on argument types
+		// into account when
 		// constructing the URI
-		String uri = new URIBuilder()
-			.setScheme("platform")
-			.setPath("/resource" + element.getPath())
-			.setFragment(typePrefix + element.getElementName())
-			.toString();
+		String uri = new URIBuilder().setScheme("platform").setPath("/resource" + element.getPath())
+				.setFragment(typePrefix + element.getElementName()).toString();
 
-			ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
-			EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(),
-					uri, element.getHandleIdentifier(), element.getElementName(), element.getPath().toString());
+		ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+		EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(), uri,
+				element.getHandleIdentifier(), element.getElementName(), element.getPath().toString());
 
-			return wrapper;
+		return wrapper;
 	}
 
 	@Override
@@ -78,11 +79,12 @@
 	@Override
 	public void annotateArtifact(EObject wrapper, String annotation) throws AnnotationException {
 		IEclipsePreferences preferences = CDTPreferences.getPreferences();
-		
-		if (!preferences.getBoolean(CDTPreferences.ANNOTATE_CDT, CDTPreferences.ANNOTATE_CDT_DEFAULT)) return;
-		
+
+		if (!preferences.getBoolean(CDTPreferences.ANNOTATE_CDT, CDTPreferences.ANNOTATE_CDT_DEFAULT))
+			return;
+
 		ICElement handle = resolveWrapper(wrapper);
-		
+
 		try {
 			CDTAnnotate.annotateArtifact(handle, annotation);
 		} catch (CoreException e) {
@@ -96,9 +98,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for C code
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for C code
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java b/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java
index 97b4304..f9581eb 100644
--- a/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java
+++ b/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.emf;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.Connection;
@@ -45,9 +45,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for EMF models
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.featureide/src/org/eclipse/capra/handler/featureide/FeatureIdeHandler.java b/org.eclipse.capra.handler.featureide/src/org/eclipse/capra/handler/featureide/FeatureIdeHandler.java
index 7758d85..3f0c698 100644
--- a/org.eclipse.capra.handler.featureide/src/org/eclipse/capra/handler/featureide/FeatureIdeHandler.java
+++ b/org.eclipse.capra.handler.featureide/src/org/eclipse/capra/handler/featureide/FeatureIdeHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.featureide;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -49,10 +49,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
 		// Method currently left empty to wait for user requirements of relevant
-		// internal links for feature models
+		// internal links for FeatureIDE models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java b/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
index da4bcba..e2ba325 100644
--- a/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
+++ b/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.file;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -18,9 +18,9 @@
 import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
 import org.eclipse.capra.core.helpers.ExtensionPointHelper;
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -57,9 +57,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for Files
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java b/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java
index c8f014a..f5f3826 100644
--- a/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java
+++ b/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.gef;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.Connection;
@@ -48,9 +48,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for GEF models
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java
index 052d53a..98e5fde 100644
--- a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java
+++ b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.hudson;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -22,8 +22,8 @@
 import org.eclipse.mylyn.builds.internal.core.BuildElement;
 
 /**
- * A handler to allow tracing to and from build elements handled by the continuous
- * integration server Hudson via the integrated Mylyn facilities.
+ * A handler to allow tracing to and from build elements handled by the
+ * continuous integration server Hudson via the integrated Mylyn facilities.
  */
 public class BuildElementHandler extends AbstractArtifactHandler<BuildElement> {
 
@@ -53,9 +53,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for Build Elements
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java
index 6a3f45b..ddba107 100644
--- a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java
+++ b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.hudson;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -22,8 +22,8 @@
 import org.eclipse.mylyn.builds.internal.core.TestElement;
 
 /**
- * A handler to allow tracing to and from test elements handled by the continuous
- * integration server Hudson via the integrated Mylyn facilities.
+ * A handler to allow tracing to and from test elements handled by the
+ * continuous integration server Hudson via the integrated Mylyn facilities.
  */
 public class TestElementHandler extends AbstractArtifactHandler<TestElement> {
 
@@ -54,9 +54,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for Test Elements
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java b/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
index 8c87fb0..0acd3d1 100644
--- a/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
+++ b/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
@@ -12,7 +12,7 @@
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -41,7 +41,8 @@
  * A handler to allow creating traces to and from java elements such as classes
  * and methods based on JDT.
  * </p>
- * This handler encodes a locator to the Java element in artifact URI:s in the following way:
+ * This handler encodes a locator to the Java element in artifact URI:s in the
+ * following way:
  * {@code platform:/Project_name/path/to/file.java#com.pack.ClassName/methodName}.
  */
 public class JavaElementHandler extends AbstractArtifactHandler<IJavaElement> implements IAnnotateArtifact {
@@ -49,34 +50,32 @@
 	@Override
 	public EObject createWrapper(IJavaElement element, EObject artifactModel) {
 		IType type = (IType) element.getParent().getAncestor(IJavaElement.TYPE);
-		
+
 		String fragment;
 		if (type == null) {
 			if (element.getElementType() == IJavaElement.TYPE) {
 				// Top level classes get their fully qualified name
 				fragment = ((IType) element).getFullyQualifiedName();
 			} else {
-				// This will probably never happen, if something doesn't 
+				// This will probably never happen, if something doesn't
 				// have a type ancestor it is always a type itself
 				fragment = element.getElementName();
 			}
 		} else {
-			// Case for members: A list of '/' separated type names, followed by a member name
+			// Case for members: A list of '/' separated type names, followed by
+			// a member name
 			fragment = type.getFullyQualifiedName().replaceAll("\\$", "/") + "/" + element.getElementName();
 		}
-		
-		URIBuilder uriBuilder = new URIBuilder()
-			.setScheme("platform")
-			.setPath("/resource" + element.getPath())
-			.setFragment(fragment);
+
+		URIBuilder uriBuilder = new URIBuilder().setScheme("platform").setPath("/resource" + element.getPath())
+				.setFragment(fragment);
 
 		ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
 
 		String displayName = (type == null ? "" : (type.getElementName() + ".")) + element.getElementName();
-		
-		EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(), 
-			uriBuilder.toString(), element.getHandleIdentifier(), 
-			displayName,  element.getPath().toString());
+
+		EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(), uriBuilder.toString(),
+				element.getHandleIdentifier(), displayName, element.getPath().toString());
 
 		return wrapper;
 	}
@@ -161,9 +160,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for Java code
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.marker/src/org/eclipse/capra/handler/marker/MarkerHandler.java b/org.eclipse.capra.handler.marker/src/org/eclipse/capra/handler/marker/MarkerHandler.java
index 9e342d1..70e124a 100644
--- a/org.eclipse.capra.handler.marker/src/org/eclipse/capra/handler/marker/MarkerHandler.java
+++ b/org.eclipse.capra.handler.marker/src/org/eclipse/capra/handler/marker/MarkerHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.marker;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -70,10 +70,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Intentionally do nothing
-
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java b/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
index addb961..ee0868a 100644
--- a/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
+++ b/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.mylyn;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -51,9 +51,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for Mylyn tasks
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for EMF models
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java b/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java
index 345a26c..2921717 100644
--- a/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java
+++ b/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java
@@ -11,7 +11,7 @@
 
 package org.eclipse.capra.handler.office;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -62,9 +62,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for Office files
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for Office documents.
+		return Collections.emptyList();
 	}
 
 	@Override
@@ -72,5 +73,4 @@
 		return false;
 	}
 
-	
 }
diff --git a/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java b/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java
index cf2f413..0e11538 100644
--- a/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java
+++ b/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.papyrus;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.Connection;
@@ -26,7 +26,6 @@
  */
 public class PapyrusHandler extends AbstractArtifactHandler<EObjectTreeElement> {
 
-
 	@Override
 	public EObject createWrapper(EObjectTreeElement artifact, EObject artifactModel) {
 		// Returns the EObject corresponding to the input object if the input is
@@ -44,17 +43,19 @@
 		EObject sel = EMFHelper.getEObject(artifact);
 		return org.eclipse.capra.core.helpers.EMFHelper.getIdentifier(sel); // TODO
 	}
-	
+
 	@Override
 	public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
 		return null;
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links specific for Papyrus models. 
-		//Currently, UML links such as association and those from the SYSML Profile are handled by the UML Handler	
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links specific for Papyrus models.
+		// Currently, UML links such as association and those from the SYSML
+		// Profile are handled by the UML Handler.
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java b/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
index 2e5981e..b3020fc 100644
--- a/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
+++ b/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
@@ -1,6 +1,6 @@
 package org.eclipse.capra.handler.php;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
@@ -41,9 +41,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for PHP Code
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for PHP code.
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java b/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
index 6de0265..fc41431 100644
--- a/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
+++ b/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.capra.handler.reqif;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.capra.core.adapters.Connection;
@@ -46,9 +46,10 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
-		// Method currently left empty to wait for user requirements of relevant internal links for REQIF requirements
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		// Method currently left empty to wait for user requirements of relevant
+		// internal links for REQIF requirements.
+		return Collections.emptyList();
 	}
 
 	@Override
diff --git a/org.eclipse.capra.handler.uml/src/org/eclipse/capra/handler/uml/UMLHandler.java b/org.eclipse.capra.handler.uml/src/org/eclipse/capra/handler/uml/UMLHandler.java
index bddad2c..fd40013 100644
--- a/org.eclipse.capra.handler.uml/src/org/eclipse/capra/handler/uml/UMLHandler.java
+++ b/org.eclipse.capra.handler.uml/src/org/eclipse/capra/handler/uml/UMLHandler.java
@@ -55,8 +55,9 @@
 	}
 
 	@Override
-	public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
-			ArrayList<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+	public List<Connection> addInternalLinks(EObject investigatedElement, List<String> selectedRelationshipTypes) {
+		List<Integer> duplicationCheck = new ArrayList<>();
+		List<Connection> allElements = new ArrayList<>();
 		if (Relationship.class.isAssignableFrom(investigatedElement.getClass())) {
 			if (selectedRelationshipTypes.size() == 0
 					|| selectedRelationshipTypes.contains(investigatedElement.eClass().getName())) {
@@ -329,6 +330,7 @@
 				}
 			}
 		}
+		return allElements;
 	}
 
 	@Override
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
index 883374b..6901732 100644
--- a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
Binary files differ