fix for GROOVY-2800. Ensures the stub compiler will not generate a generics signature if the user did not create one

git-svn-id: http://svn.codehaus.org/groovy/trunk/groovy/groovy-core@12207 a5544e8c-8a19-0410-ba12-f9af4593a198
diff --git a/src/main/org/codehaus/groovy/ast/ClassHelper.java b/src/main/org/codehaus/groovy/ast/ClassHelper.java
index cda9f03..7a48105 100644
--- a/src/main/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/org/codehaus/groovy/ast/ClassHelper.java
@@ -307,4 +307,11 @@
     public static ClassNode makeReference() {
         return make(Reference.class);
     }
+
+    public static boolean isCachedType(ClassNode type) {
+        for (int i=0;i<types.length; i++) {
+            if (types[i] == type) return true;
+        }
+        return false;
+    }
 }
diff --git a/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
index 7b855dc..bc7c9dc 100644
--- a/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
+++ b/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
@@ -506,7 +506,12 @@
     
     private void writeGenericsBounds(PrintWriter out, ClassNode type, boolean skipName) {
         if (!skipName) printTypeName(type,out);
-        if (java5 && !type.isGenericsPlaceHolder()) writeGenericsBounds(out,type.getGenericsTypes());
+        if (java5 &&
+            !type.isGenericsPlaceHolder() &&
+            !ClassHelper.isCachedType(type)
+        ) {
+            writeGenericsBounds(out,type.getGenericsTypes());
+        }
     }
     
     private void writeGenericsBounds(PrintWriter out, GenericsType[] genericsTypes) {