Furhter fixing of [JACKSON-757]

diff --git a/src/mapper/java/org/codehaus/jackson/map/introspect/AnnotatedClass.java b/src/mapper/java/org/codehaus/jackson/map/introspect/AnnotatedClass.java
index 42afb88..837d9ab 100644
--- a/src/mapper/java/org/codehaus/jackson/map/introspect/AnnotatedClass.java
+++ b/src/mapper/java/org/codehaus/jackson/map/introspect/AnnotatedClass.java
@@ -783,21 +783,20 @@
             // first, only applicable for member classes and then either:
 
             Class<?> dc = ctor.getDeclaringClass();
-            if (dc.isMemberClass()) {
-                // (a) just one annotation (for non-static inner classes)
+            // (a) is enum, which have two extra hidden params (name, index)
+            if (dc.isEnum() && (paramCount == paramAnns.length + 2)) {
+                Annotation[][] old = paramAnns;
+                paramAnns = new Annotation[old.length+2][];
+                System.arraycopy(old, 0, paramAnns, 2, old.length);
+                resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
+            } else if (dc.isMemberClass()) {
+                // (b) non-static inner classes, get implicit 'this' for parameter, not  annotation
                 if (paramCount == (paramAnns.length + 1)) {
                     // hack attack: prepend a null entry to make things match
                     Annotation[][] old = paramAnns;
                     paramAnns = new Annotation[old.length+1][];
                     System.arraycopy(old, 0, paramAnns, 1, old.length);
                     resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
-
-                    // (b) or is enum, which have two extra hidden params (but not for annotations!)
-                } else if (dc.isEnum() && (paramCount == paramAnns.length + 2)) {
-                    Annotation[][] old = paramAnns;
-                    paramAnns = new Annotation[old.length+2][];
-                    System.arraycopy(old, 0, paramAnns, 2, old.length);
-                    resolvedAnnotations = _collectRelevantAnnotations(paramAnns);
                 }
             }
             if (resolvedAnnotations == null) {
diff --git a/src/test/org/codehaus/jackson/map/ser/TestEnumSerialization.java b/src/test/org/codehaus/jackson/map/ser/TestEnumSerialization.java
index 4057676..c20897b 100644
--- a/src/test/org/codehaus/jackson/map/ser/TestEnumSerialization.java
+++ b/src/test/org/codehaus/jackson/map/ser/TestEnumSerialization.java
@@ -256,7 +256,17 @@
     public void testAnnotationsOnEnumCtor() throws Exception
     {
         ObjectMapper mapper = new ObjectMapper();
-        mapper.writeValueAsString(OK.V1);
-        mapper.writeValueAsString(NOT_OK.V1);
+        assertEquals(quote("V1"), mapper.writeValueAsString(OK.V1));
+        assertEquals(quote("V1"), mapper.writeValueAsString(NOT_OK.V1));
+        assertEquals(quote("V2"), mapper.writeValueAsString(NOT_OK2.V2));
     }
 }
+
+
+// [JACKSON-757], non-inner enum
+enum NOT_OK2 {
+    V2("v2"); 
+    protected String key;
+    // any runtime-persistent annotation is fine
+    NOT_OK2(@JsonProperty String key) { this.key = key; }
+}