Based on the upstream fix for the java8 compilation issue.
Simplified patch.
Upstream version of patch does not work with this source tree.

The issue is that in java8 it is an error to pass null to
removeAll. Results in null pointer exception. java7
behaviour was to return the list unmodified.

From 43867d50c05d1c06ab7220eb974a8874ae10c308 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
Date: Fri, 5 Jan 2018 19:08:24 +0100
Subject: [PATCH] Fix java8 complilation error.

---
 tool/src/main/java/org/antlr/tool/CompositeGrammar.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tool/src/main/java/org/antlr/tool/CompositeGrammar.java b/tool/src/main/java/org/antlr/tool/CompositeGrammar.java
index f34ea73..63740a6 100644
--- a/tool/src/main/java/org/antlr/tool/CompositeGrammar.java
+++ b/tool/src/main/java/org/antlr/tool/CompositeGrammar.java
@@ -226,7 +226,9 @@ public class CompositeGrammar {
 	public List<Grammar> getIndirectDelegates(Grammar g) {
 		List<Grammar> direct = getDirectDelegates(g);
 		List<Grammar> delegates = getDelegates(g);
-		delegates.removeAll(direct);
+		if(direct != null) {
+		        delegates.removeAll(direct);
+		}
 		return delegates;
 	}
 
-- 
2.15.1

