                 }
             }
 
+            // Filters for GCMember edge cases
+            if(gcmemberIndex >= 0) {
+                line = line.replace(/GCMember\s*</g, "GCMember<");
+                var singlelineCommentIndex = line.indexOf("//");
+                // GCMember inside a single line comment: " uint64_t* GC_POINTER( m_invocationCounts ); // GCMember<> does not work.... "
+                if(singlelineCommentIndex >=0 && gcmemberIndex > singlelineCommentIndex)
+                    gcmemberIndex = -1;
+
+                var slashStarStartIndex = line.indexOf("/*");
+                var slashStarEndIndex = line.indexOf("*/");
+                // GCMember inside a single line comment: " uint64_t* GC_POINTER( m_invocationCounts ); /* GCMember<> does not work */ "
+                if(gcmemberIndex > slashStarStartIndex && gcmemberIndex < slashStarEndIndex)
+                    gcmemberIndex = -1;
+
+                if(gcmemberIndex != -1) {
+                    gcmemberIndex = line.indexOf("GCMember<");
+                    if(gcmemberIndex == -1) {
+                        print(line);
+                        fail("GCMember incorrectly formatted. Must provide the member name on the same line!!");
+                    }
+                }
+            }
+
             // For line matching of GC_ directives we match only at
             // the start of the line after taking the substring
             // starting at the known-good index.  This yields the same

                }
                else if ((result = matchCppFieldTag(line, gcIndex)) != null) {
                    reportMatch(line);
                    var v = positionalAttrs(result[1], result[2], ")", currentClassName());
                    specs.push(v);
                }
                else {
                    if(line.indexOf("_IF") >= 0 && matchDeprecatedFieldTag(line, gcIndex) != null) {
                        print(line);
                        fail("The above annotation has _IF/_IFDEF/_IFNDEF!! _IF etc. are no longer required on member annotations and should be removed.");
                    }
                }
            }


            var gcIndex = -1;
            var nativeIndex = -1;
            var cppIndex = -1;
            var gcmemberIndex = -1;

            if (!as3file) {
                gcIndex = line.indexOf("GC_");
                cppIndex = line.indexOf("#"); // #ifdef ?
                gcmemberIndex = line.indexOf("GCMember"); // gcmember?
            }
            if (!cppfile)
                nativeIndex = line.indexOf("[native");
            if (gcIndex == -1 && cppIndex == -1 && nativeIndex == -1 && gcmemberIndex == -1)
                continue;

            // The start we found above may be inside a comment.  Here we handle
            // line comments; it would be better if we could handle block comments too.
            // Bugzilla 649333 tracks the block comment issue.

            if (line.match(/^\s*\/\//))
                continue;

