GROOVY-6094: Make the workaround more "local" to AntlrParserPlugin
diff --git a/src/main/org/codehaus/groovy/antlr/AntlrParserPlugin.java b/src/main/org/codehaus/groovy/antlr/AntlrParserPlugin.java
index 4fac26c..9b0e311 100644
--- a/src/main/org/codehaus/groovy/antlr/AntlrParserPlugin.java
+++ b/src/main/org/codehaus/groovy/antlr/AntlrParserPlugin.java
@@ -328,6 +328,9 @@
 
     protected void importDef(AST importNode) {
         try {
+            // GROOVY-6094
+            output.putNodeMetaData(ImportNode.class, ImportNode.class);
+
             boolean isStatic = importNode.getType() == STATIC_IMPORT;
             List<AnnotationNode> annotations = new ArrayList<AnnotationNode>();
 
@@ -390,11 +393,11 @@
         } finally {
             // we're using node metadata here in order to fix GROOVY-6094
             // without breaking external APIs
-            ImportNode node = (ImportNode) output.getNodeMetaData(ImportNode.class);
-            if (node!=null) {
-                configureAST(node, importNode);
-                output.removeNodeMetaData(ImportNode.class);
+            Object node = output.getNodeMetaData(ImportNode.class);
+            if (node!=null && node!=ImportNode.class) {
+                configureAST((ImportNode)node, importNode);
             }
+            output.removeNodeMetaData(ImportNode.class);
         }
     }
 
diff --git a/src/main/org/codehaus/groovy/ast/ModuleNode.java b/src/main/org/codehaus/groovy/ast/ModuleNode.java
index a10a5fc..47655d8 100644
--- a/src/main/org/codehaus/groovy/ast/ModuleNode.java
+++ b/src/main/org/codehaus/groovy/ast/ModuleNode.java
@@ -122,7 +122,7 @@
         ImportNode importNode = new ImportNode(type, alias);
         imports.put(alias, importNode);
         importNode.addAnnotations(annotations);
-        putNodeMetaData(ImportNode.class, importNode);
+        storeLastAddedImportNode(importNode);
     }
 
     public void addStarImport(String packageName) {
@@ -133,7 +133,7 @@
         ImportNode importNode = new ImportNode(packageName);
         importNode.addAnnotations(annotations);
         starImports.add(importNode);
-        putNodeMetaData(ImportNode.class, importNode);
+        storeLastAddedImportNode(importNode);
     }
 
     public void addStatement(Statement node) {
@@ -419,7 +419,7 @@
         ImportNode node = new ImportNode(type, fieldName, alias);
         node.addAnnotations(annotations);
         staticImports.put(alias, node);
-        putNodeMetaData(ImportNode.class, node);
+        storeLastAddedImportNode(node);
     }
 
     public void addStaticStarImport(String name, ClassNode type) {
@@ -430,9 +430,17 @@
         ImportNode node = new ImportNode(type);
         node.addAnnotations(annotations);
         staticStarImports.put(name, node);
-        putNodeMetaData(ImportNode.class, node);
+        storeLastAddedImportNode(node);
     }
-    
+
+    // This method only exists as a workaround for GROOVY-6094
+    // In order to keep binary compatibility
+    private void storeLastAddedImportNode(final ImportNode node) {
+        if (getNodeMetaData(ImportNode.class)==ImportNode.class) {
+            putNodeMetaData(ImportNode.class, node);
+        }
+    }
+
     public String getMainClassName() {
         return mainClassName;
     }