diff --git a/core/src/main/java/de/jplag/GreedyStringTiling.java b/core/src/main/java/de/jplag/GreedyStringTiling.java
index e00c62bcf7..557c2b4083 100644
--- a/core/src/main/java/de/jplag/GreedyStringTiling.java
+++ b/core/src/main/java/de/jplag/GreedyStringTiling.java
@@ -106,8 +106,8 @@ private JPlagComparison compareInternal(Submission leftSubmission, Submission ri
         int[] leftValues = tokenValueListFromSubmission(leftSubmission, commonContexts);
         int[] rightValues = tokenValueListFromSubmission(rightSubmission, commonContexts);
 
-        boolean[] leftMarked = calculateInitiallyMarked(leftSubmission);
-        boolean[] rightMarked = calculateInitiallyMarked(rightSubmission);
+        boolean[] leftMarked = calculateInitiallyMarked(leftSubmission, commonContexts);
+        boolean[] rightMarked = calculateInitiallyMarked(rightSubmission, commonContexts);
 
         SubsequenceHashLookupTable leftLookupTable = subsequenceHashLookupTableForSubmission(leftSubmission, leftMarked, commonContexts);
         SubsequenceHashLookupTable rightLookupTable = subsequenceHashLookupTableForSubmission(rightSubmission, rightMarked, commonContexts);
@@ -200,9 +200,9 @@ private void addMatchIfNotOverlapping(List<Match> matches, Match match) {
         matches.add(match);
     }
 
-    private boolean[] calculateInitiallyMarked(Submission submission) {
+    private boolean[] calculateInitiallyMarked(Submission submission, Set<Object> contexts) {
         Set<Token> baseCodeTokens = baseCodeMarkings.get(submission);
-        List<Token> tokens = submission.getTokenList();
+        List<Token> tokens = submission.getTokenList(contexts);
         boolean[] result = new boolean[tokens.size()];
         for (int i = 0; i < result.length; i++) {
             result[i] = tokens.get(i).getType().isExcludedFromMatching() || (baseCodeTokens != null && baseCodeTokens.contains(tokens.get(i)));
@@ -222,7 +222,7 @@ private SubsequenceHashLookupTable subsequenceHashLookupTableForSubmission(Submi
      */
     private int[] tokenValueListFromSubmission(Submission submission, Set<Object> contexts) {
         return cachedTokenValueLists.computeIfAbsent(submission, (key -> {
-            List<Token> tokens = key.getTokenList();
+            List<Token> tokens = key.getTokenList(contexts);
             int[] tokenValueList = new int[tokens.size()];
             for (int i = 0; i < tokens.size(); i++) {
                 TokenType type = tokens.get(i).getType().constrained(contexts);
diff --git a/core/src/main/java/de/jplag/Submission.java b/core/src/main/java/de/jplag/Submission.java
index 264fa17462..40ac5bb146 100644
--- a/core/src/main/java/de/jplag/Submission.java
+++ b/core/src/main/java/de/jplag/Submission.java
@@ -141,6 +141,10 @@ public List<Token> getTokenList() {
         return tokenList;
     }
 
+    public List<Token> getTokenList(Set<Object> contexts) {
+        return tokenList.stream().filter(it -> !it.getType().constrained(contexts).getAttributes().isEmpty()).toList();
+    }
+
     /**
      * @return Whether a comparison between the submission and the base code is available.
      */