             var gcIndex = -1;
             var nativeIndex = -1;
             var cppIndex = -1;
+            var gcmemberIndex = -1;
+
             if (!as3file) {
                 gcIndex = line.indexOf("GC_");
-                cppIndex = line.indexOf("#");
+                cppIndex = line.indexOf("#"); // #ifdef ?
+                gcmemberIndex = line.indexOf("GCMember"); // gcmember?
             }
             if (!cppfile)
                 nativeIndex = line.indexOf("[native");
-            if (gcIndex == -1 && cppIndex == -1 && nativeIndex == -1)
+            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;
 

        return deprecatedFieldTag.exec(line.substring(where));
    }

    function stackToCppPrefix() {
        var pfx="";
        for ( var i=0; i < cppClassStack.length; i++)

        return v;
    }

    function pushGCmembers(list, cls) {
        var members = [];
        var result = list.split(/,|;/);
        for(var i = 0; i < result.length - 1; i++) {
            var attr = [cls];
            attr[1] = result[i].replace(/^\s*|\s*$/g, "");
            specs.push(new constructors["GC_POINTER"]("GC_POINTER",attr,copyIfStack()));
        }
    }

    function positionalAttrs(tag, s, paren, cls) {
        var attr = splitAttrs(s, paren);
        for ( var i=0 ; i < attr.length ; i++ ) {
