Detailed results for test suite 2006-12-11T20:01:59Z

Cxx.ConstEvaluator

Cxx.ConstEvaluator.enum

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.ConstEvaluator.variables

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.Encoding

Cxx.Encoding.simple

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.Parser

Cxx.Parser.simple

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup

Cxx.SymbolLookup.declaration-4

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.definitions-3a

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/definitions-3a.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/definitions-3a.cc"
  

Cxx.SymbolLookup.definitions-3b

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/definitions-3b.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/definitions-3b.cc"
  

Cxx.SymbolLookup.definitions-4a

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/definitions-4a.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/definitions-4a.cc"
  

Cxx.SymbolLookup.definitions-4b

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/definitions-4b.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/definitions-4b.cc"
  

Cxx.SymbolLookup.initialization-2-2

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.lifetime-5a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.lifetime-5b

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.lifetime-5c

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.lifetime-7

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.lifetime-8

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.lifetime-9a

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/lifetime-9a.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/lifetime-9a.cc"
  

Cxx.SymbolLookup.lifetime-9b

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/lifetime-9b.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/lifetime-9b.cc"
  

Cxx.SymbolLookup.linkage-6

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.linkage-7a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.linkage-7b

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.linkage-7c

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.qualified-1a

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-1b

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-3a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.qualified-3b

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.qualified-5

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/qualified-5.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/qualified-5.cc"
  

Cxx.SymbolLookup.qualified-namespace-2a

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-2b

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-2c

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-3

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-4

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-5a

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-5b

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-6a

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.qualified-namespace-6b

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.scope-0-2

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-1

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-2

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-3

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-4

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-class-1-5a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-namespace-1a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-namespace-1b

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.scope-namespace-1c

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.storage-auto-1

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/storage-auto-1.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/storage-auto-1.cc"
  

Cxx.SymbolLookup.template-parameters-2

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/template-parameters-2.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/template-parameters-2.cc"
  

Cxx.SymbolLookup.template-parameters-3

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.types-2

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.types-3

Annotation Value
qmtest.cause
   "program killed with signal 6"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.command
   "Cxx/bin/SymbolLookup Cxx/SymbolLookup/output/types-3.out /group/synopsis/workspace/Synopsis/tests/Cxx/SymbolLookup/input/types-3.cc"
  

Cxx.SymbolLookup.types-7

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-10

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-6a

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-6b

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-6c

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-6d

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-6e

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-7a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-7b

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-7c

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-7d

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-7e

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-7f

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.unqualified-8a

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-8b

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-8c

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-8d

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-8e

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-8f

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.unqualified-8g

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.SymbolLookup.using-directive-1a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.SymbolLookup.using-directive-2a

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Cxx.TypeAnalysis

Cxx.TypeAnalysis.simple

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Parsers.C.simple

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Parsers.Cpp.include

Annotation Value
qmtest.expected_cause
   "incorrect output"
  
qmtest.expected_outcome
   "FAIL"
  

Parsers.Cpp.macros

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Parsers.Cxx.cast

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Parsers.Cxx.comment_proximity

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,84 +1,96 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="3" name="test1" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="1" suspect="1">
-     <text>
-      // Comment at start
-
-     </text>
-    </instance>
-   </comments>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="3" name="test1" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Base" language="C++" name="int"/>
    </vtype>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // Comment at start
+     </item>
+     <item/>
+    </value>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="7" name="test2" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="5" suspect="0">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="7" name="test2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test2: This should have a comment, unlike test1
 // It should also have two lines
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="12" name="test3" type="global variable">
    <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="12" name="test3" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="9" suspect="1">
-     <text>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       /* A comment by itself
  * Over multiple lines. */
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+     <item/>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="18" name="test4" type="global variable">
    <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="18" name="test4" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="14" suspect="1">
-     <text>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       /* This comment should be ignored.
  */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="16" suspect="0">
-     <text>
+     </item>
+     <item>
       /* Test4: Should have a comment
  * */
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="23" name="test5" type="global variable">
    <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="23" name="test5" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="20" suspect="0">
-     <text>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       /* Test5: This should have a comment, unlike test 3
  * Which had a gap.
  */
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
+     </item>
+    </value>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="24" name="EOS" type="EOS">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="24" suspect="1">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comment_proximity.cc" line="24" name="EOS" type="EOS">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       //&lt; This should still be tail-appended!
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+     <item/>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -102,8 +114,16 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/comment_proximity.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/comment_proximity.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="3" name="test1" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="1" suspect="1">
     <text>
      // Comment at start

     </text>
    </instance>
   </comments>
   <vtype>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="7" name="test2" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="5" suspect="0">
     <text>
      // Test2: This should have a comment, unlike test1
// It should also have two lines

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="12" name="test3" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="9" suspect="1">
     <text>
      /* A comment by itself
 * Over multiple lines. */

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="18" name="test4" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="14" suspect="1">
     <text>
      /* This comment should be ignored.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="16" suspect="0">
     <text>
      /* Test4: Should have a comment
 * */

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="23" name="test5" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="20" suspect="0">
     <text>
      /* Test5: This should have a comment, unlike test 3
 * Which had a gap.
 */

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comment_proximity.cc" language="C++" line="24" name="EOS" type="EOS">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comment_proximity.cc" line="24" suspect="1">
     <text>
      //&lt; This should still be tail-appended!

     </text>
    </instance>
   </comments>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/comment_proximity.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="3" name="test1" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Comment at start
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="7" name="test2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test2: This should have a comment, unlike test1
// It should also have two lines
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="12" name="test3" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      /* A comment by itself
 * Over multiple lines. */
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="18" name="test4" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      /* This comment should be ignored.
 */
     </item>
     <item>
      /* Test4: Should have a comment
 * */
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/comment_proximity.cc" line="23" name="test5" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      /* Test5: This should have a comment, unlike test 3
 * Which had a gap.
 */
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comment_proximity.cc" line="24" name="EOS" type="EOS">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      //&lt; This should still be tail-appended!
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/comment_proximity.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.comments

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,54 +1,39 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comments.cc" language="C++" line="1" name="EOS" type="EOS">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="1" suspect="1">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comments.cc" line="1" name="EOS" type="EOS">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // 1. Comments Test: One line cpp test
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="3" suspect="1">
-     <text>
+     </item>
+     <item>
       // 2. Two line cpp test
 // Second line of test
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="6" suspect="1">
-     <text>
+     </item>
+     <item>
       /* 3. One line c test */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="7" suspect="1">
-     <text>
+     </item>
+     <item>
       /* 4. Another c test */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="8" suspect="0">
-     <text>
+     </item>
+     <item>
       /* 5. Two on one */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="8" suspect="1">
-     <text>
+     </item>
+     <item>
       /* 6. line */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="9" suspect="1">
-     <text>
+     </item>
+     <item>
       /* 7. Multi
  * line
  */
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+     <item/>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -57,8 +42,11 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/comments.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/comments.cc" primary="1">
+   <declarations>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comments.cc" language="C++" line="1" name="EOS" type="EOS">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="1" suspect="1">
     <text>
      // 1. Comments Test: One line cpp test

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="3" suspect="1">
     <text>
      // 2. Two line cpp test
// Second line of test

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="6" suspect="1">
     <text>
      /* 3. One line c test */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="7" suspect="1">
     <text>
      /* 4. Another c test */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="8" suspect="0">
     <text>
      /* 5. Two on one */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="8" suspect="1">
     <text>
      /* 6. line */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/comments.cc" line="9" suspect="1">
     <text>
      /* 7. Multi
 * line
 */

     </text>
    </instance>
   </comments>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/comments.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/comments.cc" line="1" name="EOS" type="EOS">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // 1. Comments Test: One line cpp test
     </item>
     <item>
      // 2. Two line cpp test
// Second line of test
     </item>
     <item>
      /* 3. One line c test */
     </item>
     <item>
      /* 4. Another c test */
     </item>
     <item>
      /* 5. Two on one */
     </item>
     <item>
      /* 6. line */
     </item>
     <item>
      /* 7. Multi
 * line
 */
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/comments.cc" primary="1">
   <declarations>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.condition

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,36 +1,96 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" language="C++" line="2" name="X" type="struct">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/condition.cc" line="1" suspect="0">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" line="2" name="X" type="struct">
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" line="4" name="X.(bool)()const" realname="(bool)" type="member function">
+      <postmodifier>
+       <item>
+        const
+       </item>
+      </postmodifier>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" line="5" name="X.Y" type="struct">
+      <declarations>
+       <item>
+        <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" line="7" name="X.Y.(bool)()const" realname="(bool)" type="member function">
+         <postmodifier>
+          <item>
+           const
+          </item>
+         </postmodifier>
+         <returnType/>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" line="7" name="EOS" type="EOS">
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+      </declarations>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" line="7" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Tests the ability to use a declaration in the condition of an if or switch
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" language="C++" line="4" name="X.(bool)()const" realname="(bool)" type="member function">
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" language="C++" line="5" name="X.Y" type="struct">
-     <declarations>
-      <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" language="C++" line="7" name="X.Y.(bool)()const" realname="(bool)" type="member function">
-       <returnType/>
-      </instance>
-      <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" language="C++" line="7" name="EOS" type="EOS"/>
-     </declarations>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" language="C++" line="7" name="EOS" type="EOS"/>
-   </declarations>
+     </item>
+    </value>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/condition.cc" language="C++" line="10" name="foo()" realname="foo" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/condition.cc" line="10" name="foo()" realname="foo" type="function">
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -54,8 +114,17 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/condition.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/condition.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" language="C++" line="2" name="X" type="struct">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/condition.cc" line="1" suspect="0">
     <text>
      // Tests the ability to use a declaration in the condition of an if or switch

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" language="C++" line="4" name="X.(bool)()const" realname="(bool)" type="member function">
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" language="C++" line="5" name="X.Y" type="struct">
     <declarations>
      <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" language="C++" line="7" name="X.Y.(bool)()const" realname="(bool)" type="member function">
       <returnType/>
      </instance>
      <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" language="C++" line="7" name="EOS" type="EOS"/>
     </declarations>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" language="C++" line="7" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/condition.cc" language="C++" line="10" name="foo()" realname="foo" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.(bool)()const">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.Y">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.Y.(bool)()const">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/condition.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" line="2" name="X" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" line="4" name="X.(bool)()const" realname="(bool)" type="member function">
      <postmodifier>
       <item>
        const
       </item>
      </postmodifier>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Class" file="Parsers/Cxx/input/condition.cc" line="5" name="X.Y" type="struct">
      <declarations>
       <item>
        <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/condition.cc" line="7" name="X.Y.(bool)()const" realname="(bool)" type="member function">
         <postmodifier>
          <item>
           const
          </item>
         </postmodifier>
         <returnType/>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" line="7" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/condition.cc" line="7" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Tests the ability to use a declaration in the condition of an if or switch
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/condition.cc" line="10" name="foo()" realname="foo" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.(bool)()const">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.Y">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.Y.(bool)()const">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/condition.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.const

Annotation Value
qmtest.cause
   "incorrect output"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,33 +1,70 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/const.cc" language="C++" line="1" name="Foo" type="struct">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/const.cc" line="1" name="Foo" type="struct">
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" language="C++" line="3" name="Foo.foo(int)" realname="foo" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="param" value="">
-       <type>
-        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-       </type>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" language="C++" line="4" name="Foo.foo(int)const" realname="foo" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="param" value="">
-       <type/>
-      </instance>
-     </parameters>
-     <postmodifier>
-      const
-     </postmodifier>
-     <returnType/>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/const.cc" language="C++" line="4" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" line="3" name="Foo.foo(int)" realname="foo" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="param" value="">
+         <type>
+          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" line="4" name="Foo.foo(int)const" realname="foo" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="param" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <postmodifier>
+       <item>
+        const
+       </item>
+      </postmodifier>
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/const.cc" line="4" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -45,8 +82,14 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/const.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/const.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/const.cc" language="C++" line="1" name="Foo" type="struct">
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" language="C++" line="3" name="Foo.foo(int)" realname="foo" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="param" value="">
       <type>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </type>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" language="C++" line="4" name="Foo.foo(int)const" realname="foo" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="param" value="">
       <type/>
      </instance>
     </parameters>
     <postmodifier>
      const
     </postmodifier>
     <returnType/>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/const.cc" language="C++" line="4" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.foo(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.foo(int)const">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/const.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/const.cc" line="1" name="Foo" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" line="3" name="Foo.foo(int)" realname="foo" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="param" value="">
         <type>
          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
         </type>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/const.cc" line="4" name="Foo.foo(int)const" realname="foo" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="param" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <postmodifier>
       <item>
        const
       </item>
      </postmodifier>
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/const.cc" line="4" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.foo(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.foo(int)const">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/const.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.for

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,10 +1,16 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/for.cc" language="C++" line="1" name="func()" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/for.cc" line="1" name="func()" realname="func" type="function">
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -13,8 +19,11 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/for.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/for.cc" primary="1">
+   <declarations>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/for.cc" language="C++" line="1" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/for.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/for.cc" line="1" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/for.cc" primary="1">
   <declarations>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.forward_class

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,81 +1,166 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="1" name="X" type="class">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/forward_class.cc" line="1" name="X" type="class">
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="4" name="X.f(int)" realname="f" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-       </type>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="5" name="X.a" type="data member">
-     <vtype/>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="5" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/forward_class.cc" line="4" name="X.f(int)" realname="f" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="5" name="X.a" type="data member">
+      <vtype/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/forward_class.cc" line="5" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="9" name="pmi" type="global variable">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="9" name="pmi" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
      <link>
-      X::*
-     </link>
-    </instance>
-   </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="10" name="pmf" type="global variable">
+      <item>
+       X::*
+      </item>
+     </link>
+    </instance>
+   </vtype>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="10" name="pmf" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
      <link>
-      X::*
-     </link>
-    </instance>
-   </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="11" name="pmd" type="global variable">
+      <item>
+       X::*
+      </item>
+     </link>
+    </instance>
+   </vtype>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="11" name="pmd" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
      <link>
-      X::*
-     </link>
-    </instance>
-   </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="12" name="pmc" type="global variable">
+      <item>
+       X::*
+      </item>
+     </link>
+    </instance>
+   </vtype>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="12" name="pmc" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Unknown" language="C++" name="Y::*">
      <link>
-      Y::*
-     </link>
-    </instance>
-   </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="13" name="obj" type="global variable">
+      <item>
+       Y::*
+      </item>
+     </link>
+    </instance>
+   </vtype>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="13" name="obj" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Declared" language="C++" name="X">
      <declaration/>
     </instance>
    </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="14" name="pobj" type="global variable">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="14" name="pobj" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Modifier" language="C++">
      <alias/>
      <postmod>
-      *
+      <item>
+       *
+      </item>
      </postmod>
     </instance>
    </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="15" name="foo()" realname="foo" type="function">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/forward_class.cc" line="15" name="foo()" realname="foo" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -111,8 +196,21 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/forward_class.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/forward_class.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="1" name="X" type="class">
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="4" name="X.f(int)" realname="f" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </type>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="5" name="X.a" type="data member">
     <vtype/>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="5" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="9" name="pmi" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
     <link>
      X::*
     </link>
    </instance>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="10" name="pmf" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
     <link>
      X::*
     </link>
    </instance>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="11" name="pmd" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
     <link>
      X::*
     </link>
    </instance>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="12" name="pmc" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="Y::*">
     <link>
      Y::*
     </link>
    </instance>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="13" name="obj" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Declared" language="C++" name="X">
     <declaration/>
    </instance>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="14" name="pobj" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Modifier" language="C++">
     <alias/>
     <postmod>
      *
     </postmod>
    </instance>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/forward_class.cc" language="C++" line="15" name="foo()" realname="foo" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.a">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.f(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="obj">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmc">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmd">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmf">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmi">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pobj">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/forward_class.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/forward_class.cc" line="1" name="X" type="class">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/forward_class.cc" line="4" name="X.f(int)" realname="f" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
         </type>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="5" name="X.a" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/forward_class.cc" line="5" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="9" name="pmi" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
     <link>
      <item>
       X::*
      </item>
     </link>
    </instance>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="10" name="pmf" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
     <link>
      <item>
       X::*
      </item>
     </link>
    </instance>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="11" name="pmd" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="X::*">
     <link>
      <item>
       X::*
      </item>
     </link>
    </instance>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="12" name="pmc" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Unknown" language="C++" name="Y::*">
     <link>
      <item>
       Y::*
      </item>
     </link>
    </instance>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="13" name="obj" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Declared" language="C++" name="X">
     <declaration/>
    </instance>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/forward_class.cc" line="14" name="pobj" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Modifier" language="C++">
     <alias/>
     <postmod>
      <item>
       *
      </item>
     </postmod>
    </instance>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/forward_class.cc" line="15" name="foo()" realname="foo" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.a">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="X.f(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="obj">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmc">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmd">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmf">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pmi">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="pobj">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/forward_class.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.func

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,58 +1,100 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="1" name="func(char)" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="1" name="func(char)" realname="func" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Base" language="C++" name="char"/>
-     </type>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Base" language="C++" name="char"/>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="2" name="func(int)" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="2" name="func(int)" realname="func" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </type>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="3" name="func(double)" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="3" name="func(double)" realname="func" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Base" language="C++" name="double"/>
-     </type>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Base" language="C++" name="double"/>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="4" name="func(const char*)" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="4" name="func(const char*)" realname="func" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        *
-       </postmod>
-       <premod>
-        const
-       </premod>
-      </instance>
-     </type>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
+          *
+         </item>
+        </postmod>
+        <premod>
+         <item>
+          const
+         </item>
+        </premod>
+       </instance>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="6" name="test()" realname="test" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="6" name="test()" realname="test" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -73,8 +115,15 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="1" name="func(char)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Base" language="C++" name="char"/>
     </type>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="2" name="func(int)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </type>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="3" name="func(double)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Base" language="C++" name="double"/>
     </type>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="4" name="func(const char*)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        *
       </postmod>
       <premod>
        const
       </premod>
      </instance>
     </type>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" language="C++" line="6" name="test()" realname="test" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(char)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(const char*)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(double)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="1" name="func(char)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Base" language="C++" name="char"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="2" name="func(int)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="3" name="func(double)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Base" language="C++" name="double"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="4" name="func(const char*)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          *
         </item>
        </postmod>
        <premod>
         <item>
          const
         </item>
        </premod>
       </instance>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func.cc" line="6" name="test()" realname="test" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(char)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(const char*)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(double)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.func_ptr

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,148 +1,199 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="3" name="PyObject" type="typedef">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="1" suspect="1">
-     <text>
-      // Tests function pointers
-
-     </text>
-    </instance>
-   </comments>
+  <instance accessibility="0" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/func_ptr.cc" line="3" name="PyObject" type="typedef">
    <alias>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </alias>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="6" name="insert(void*(*)(PyObject*),bool)" realname="insert" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="5" suspect="0">
-     <text>
-      // A function which takes a func ptr as a parameter
-
-     </text>
-    </instance>
-   </comments>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // Tests function pointers
+     </item>
+     <item/>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="6" name="insert(void*(*)(PyObject*),bool)" realname="insert" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
-     <type>
-      <instance class="Synopsis.Type.Function" language="C++">
-       <params>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias>
-          <instance class="Synopsis.Type.Declared" language="C++" name="PyObject">
-           <declaration/>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
+      <type>
+       <instance class="Synopsis.Type.Function" language="C++">
+        <params>
+         <item>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias>
+            <instance class="Synopsis.Type.Declared" language="C++" name="PyObject">
+             <declaration/>
+            </instance>
+           </alias>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
           </instance>
-         </alias>
-         <postmod>
+         </item>
+        </params>
+        <premod>
+         <item>
           *
-         </postmod>
-        </instance>
-       </params>
-       <premod>
-        *
-       </premod>
-       <returnType>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </returnType>
-      </instance>
-     </type>
-    </instance>
-    <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
-     <type>
-      <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
-     </type>
-    </instance>
+         </item>
+        </premod>
+        <returnType>
+         <instance class="Synopsis.Type.Modifier" language="C++">
+          <alias/>
+          <postmod>
+           <item>
+            *
+           </item>
+          </postmod>
+         </instance>
+        </returnType>
+       </instance>
+      </type>
+     </instance>
+    </item>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
+      <type>
+       <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="9" name="insert(void*(*)(PyObject*,int),bool)" realname="insert" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="8" suspect="0">
-     <text>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // A function which takes a func ptr as a parameter
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="9" name="insert(void*(*)(PyObject*,int),bool)" realname="insert" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
-     <type>
-      <instance class="Synopsis.Type.Function" language="C++">
-       <params>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
+      <type>
+       <instance class="Synopsis.Type.Function" language="C++">
+        <params>
+         <item>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </item>
+         <item>
+          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+         </item>
+        </params>
+        <premod>
+         <item>
           *
-         </postmod>
-        </instance>
-        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-       </params>
-       <premod>
-        *
-       </premod>
-       <returnType>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </returnType>
-      </instance>
-     </type>
-    </instance>
-    <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
-     <type/>
-    </instance>
+         </item>
+        </premod>
+        <returnType>
+         <instance class="Synopsis.Type.Modifier" language="C++">
+          <alias/>
+          <postmod>
+           <item>
+            *
+           </item>
+          </postmod>
+         </instance>
+        </returnType>
+       </instance>
+      </type>
+     </instance>
+    </item>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="12" name="insert2(int)" realname="insert2" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="11" suspect="0">
-     <text>
-      // A function which returns a func ptr
-
-     </text>
-    </instance>
-   </comments>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // A function which takes a func ptr as a parameter
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="12" name="insert2(int)" realname="insert2" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type/>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Function" language="C++">
      <params>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        *
-       </postmod>
-      </instance>
+      <item>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
+          *
+         </item>
+        </postmod>
+       </instance>
+      </item>
      </params>
      <premod>
-      *
+      <item>
+       *
+      </item>
      </premod>
      <returnType>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
-        *
+        <item>
+         *
+        </item>
        </postmod>
       </instance>
      </returnType>
     </instance>
    </returnType>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="14" name="main()" realname="main" type="function">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // A function which returns a func ptr
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="14" name="main()" realname="main" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -160,8 +211,15 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func_ptr.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func_ptr.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="3" name="PyObject" type="typedef">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="1" suspect="1">
     <text>
      // Tests function pointers

     </text>
    </instance>
   </comments>
   <alias>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </alias>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="6" name="insert(void*(*)(PyObject*),bool)" realname="insert" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="5" suspect="0">
     <text>
      // A function which takes a func ptr as a parameter

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
     <type>
      <instance class="Synopsis.Type.Function" language="C++">
       <params>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias>
          <instance class="Synopsis.Type.Declared" language="C++" name="PyObject">
           <declaration/>
          </instance>
         </alias>
         <postmod>
          *
         </postmod>
        </instance>
       </params>
       <premod>
        *
       </premod>
       <returnType>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </returnType>
      </instance>
     </type>
    </instance>
    <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
     <type>
      <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
     </type>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="9" name="insert(void*(*)(PyObject*,int),bool)" realname="insert" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="8" suspect="0">
     <text>
      // A function which takes a func ptr as a parameter

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
     <type>
      <instance class="Synopsis.Type.Function" language="C++">
       <params>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </params>
       <premod>
        *
       </premod>
       <returnType>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </returnType>
      </instance>
     </type>
    </instance>
    <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
     <type/>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="12" name="insert2(int)" realname="insert2" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_ptr.cc" line="11" suspect="0">
     <text>
      // A function which returns a func ptr

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type/>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Function" language="C++">
     <params>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        *
       </postmod>
      </instance>
     </params>
     <premod>
      *
     </premod>
     <returnType>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        *
       </postmod>
      </instance>
     </returnType>
    </instance>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" language="C++" line="14" name="main()" realname="main" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="insert(void*(*)(PyObject*),bool)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="insert(void*(*)(PyObject*,int),bool)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="insert2(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="main()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func_ptr.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/func_ptr.cc" line="3" name="PyObject" type="typedef">
   <alias>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </alias>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Tests function pointers
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="6" name="insert(void*(*)(PyObject*),bool)" realname="insert" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
      <type>
       <instance class="Synopsis.Type.Function" language="C++">
        <params>
         <item>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias>
            <instance class="Synopsis.Type.Declared" language="C++" name="PyObject">
             <declaration/>
            </instance>
           </alias>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </item>
        </params>
        <premod>
         <item>
          *
         </item>
        </premod>
        <returnType>
         <instance class="Synopsis.Type.Modifier" language="C++">
          <alias/>
          <postmod>
           <item>
            *
           </item>
          </postmod>
         </instance>
        </returnType>
       </instance>
      </type>
     </instance>
    </item>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
      <type>
       <instance class="Synopsis.Type.Base" language="C++" name="bool"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // A function which takes a func ptr as a parameter
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="9" name="insert(void*(*)(PyObject*,int),bool)" realname="insert" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="convert" value="">
      <type>
       <instance class="Synopsis.Type.Function" language="C++">
        <params>
         <item>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </item>
         <item>
          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
         </item>
        </params>
        <premod>
         <item>
          *
         </item>
        </premod>
        <returnType>
         <instance class="Synopsis.Type.Modifier" language="C++">
          <alias/>
          <postmod>
           <item>
            *
           </item>
          </postmod>
         </instance>
        </returnType>
       </instance>
      </type>
     </instance>
    </item>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="yesno" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // A function which takes a func ptr as a parameter
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="12" name="insert2(int)" realname="insert2" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Function" language="C++">
     <params>
      <item>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          *
         </item>
        </postmod>
       </instance>
      </item>
     </params>
     <premod>
      <item>
       *
      </item>
     </premod>
     <returnType>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        <item>
         *
        </item>
       </postmod>
      </instance>
     </returnType>
    </instance>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // A function which returns a func ptr
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_ptr.cc" line="14" name="main()" realname="main" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="insert(void*(*)(PyObject*),bool)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="insert(void*(*)(PyObject*,int),bool)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="insert2(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="main()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func_ptr.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.func_template

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,122 +1,188 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="5" name="func1(A)" realname="func1" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="1" suspect="1">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="5" name="func1(A)" realname="func1" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
+      <type>
+       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
+      </type>
+     </instance>
+    </item>
+   </parameters>
+   <returnType>
+    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+   </returnType>
+   <template>
+    <instance class="Synopsis.Type.Template" language="C++" name="func1(A)">
+     <declaration/>
+     <parameters>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test function templates
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="3" suspect="0">
-     <text>
+     </item>
+     <item>
       // Test template arg
-
-     </text>
-    </instance>
-   </comments>
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
-     <type>
-      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
-     </type>
-    </instance>
-   </parameters>
-   <returnType>
-    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-   </returnType>
-   <template>
-    <instance class="Synopsis.Type.Template" language="C++" name="func1(A)">
-     <declaration/>
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="9" name="func2(int)" realname="func2" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="7" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="9" name="func2(int)" realname="func2" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="i" value="">
+      <type/>
+     </instance>
+    </item>
+   </parameters>
+   <returnType>
+    <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
+   </returnType>
+   <template>
+    <instance class="Synopsis.Type.Template" language="C++" name="func2(int)">
+     <declaration/>
+     <parameters>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template return
-
-     </text>
-    </instance>
-   </comments>
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="i" value="">
-     <type/>
-    </instance>
-   </parameters>
-   <returnType>
-    <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
-   </returnType>
-   <template>
-    <instance class="Synopsis.Type.Template" language="C++" name="func2(int)">
-     <declaration/>
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="13" name="func2(A)" realname="func2" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="11" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="13" name="func2(A)" realname="func2" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
+      <type>
+       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
+      </type>
+     </instance>
+    </item>
+   </parameters>
+   <returnType/>
+   <template>
+    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
+     <declaration/>
+     <parameters>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template arg and return
-
-     </text>
-    </instance>
-   </comments>
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
-     <type>
-      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
-     </type>
-    </instance>
-   </parameters>
-   <returnType/>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="17" name="func2(A)" realname="func2" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
+      <type>
+       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
+      </type>
+     </instance>
+    </item>
+   </parameters>
+   <returnType>
+    <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
+   </returnType>
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="17" name="func2(A)" realname="func2" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="15" suspect="0">
-     <text>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template arg and return w/ different types
-
-     </text>
-    </instance>
-   </comments>
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
-     <type>
-      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
-     </type>
-    </instance>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="21" name="func2(A)" realname="func2" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
+      <type>
+       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
@@ -125,60 +191,39 @@
     <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="21" name="func2(A)" realname="func2" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="19" suspect="0">
-     <text>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type/>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template arg and return w/ different types. Function declaration
-
-     </text>
-    </instance>
-   </comments>
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
-     <type>
-      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
-     </type>
-    </instance>
-   </parameters>
-   <returnType>
-    <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
-   </returnType>
-   <template>
-    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
-     <declaration/>
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
+     </item>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -193,8 +238,15 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func_template.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func_template.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="5" name="func1(A)" realname="func1" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="1" suspect="1">
     <text>
      // Test function templates

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="3" suspect="0">
     <text>
      // Test template arg

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
     <type>
      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
     </type>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func1(A)">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
     </parameters>
    </instance>
   </template>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="9" name="func2(int)" realname="func2" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="7" suspect="0">
     <text>
      // Test template return

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="i" value="">
     <type/>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(int)">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
     </parameters>
    </instance>
   </template>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="13" name="func2(A)" realname="func2" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="11" suspect="0">
     <text>
      // Test template arg and return

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
     <type>
      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
     </type>
    </instance>
   </parameters>
   <returnType/>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
     </parameters>
    </instance>
   </template>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="17" name="func2(A)" realname="func2" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="15" suspect="0">
     <text>
      // Test template arg and return w/ different types

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
     <type>
      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
     </type>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
     </parameters>
    </instance>
   </template>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" language="C++" line="21" name="func2(A)" realname="func2" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template.cc" line="19" suspect="0">
     <text>
      // Test template arg and return w/ different types. Function declaration

     </text>
    </instance>
   </comments>
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="a" value="">
     <type>
      <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
     </type>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type/>
      </instance>
     </parameters>
    </instance>
   </template>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func1(A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func2(A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func2(int)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func_template.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="5" name="func1(A)" realname="func1" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
      <type>
       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func1(A)">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test function templates
     </item>
     <item>
      // Test template arg
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="9" name="func2(int)" realname="func2" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="i" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(int)">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template return
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="13" name="func2(A)" realname="func2" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
      <type>
       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template arg and return
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="17" name="func2(A)" realname="func2" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
      <type>
       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template arg and return w/ different types
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/func_template.cc" line="21" name="func2(A)" realname="func2" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="a" value="">
      <type>
       <instance class="Synopsis.Type.Dependent" language="C++" name="A"/>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Dependent" language="C++" name="B"/>
   </returnType>
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="func2(A)">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type/>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template arg and return w/ different types. Function declaration
     </item>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func1(A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func2(A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func2(int)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func_template.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.func_template_arg

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,126 +1,191 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="4" name="function" type="struct">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="4" name="function" type="struct">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="function">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="Foo"/>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="1" suspect="1">
-     <text>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="Foo"/>
+        </type>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="4" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test function pointers as template arguments
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="1" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="9" name="function&lt;void()(A1,A2)&gt;" type="struct">
+     </item>
+     <item/>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="9" name="function&lt;void()(A1,A2)&gt;" type="struct">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="function&lt;void()(A1,A2)&gt;">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="A1"/>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="A2"/>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="6" suspect="0">
-     <text>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="A1"/>
+        </type>
+       </instance>
+      </item>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="A2"/>
+        </type>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="9" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template class with function argument
 // (not really a template function)
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="6" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="13" name="function&lt;R()(void)&gt;" type="struct">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="13" name="function&lt;R()(void)&gt;" type="struct">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="function&lt;R()(void)&gt;">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="11" suspect="0">
-     <text>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
+        </type>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="13" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test return type fptr
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="11" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="17" name="function&lt;R()(int,int)&gt;" type="struct">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="17" name="function&lt;R()(int,int)&gt;" type="struct">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="function&lt;R()(int,int)&gt;">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        class
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-   </template>
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="15" suspect="0">
-     <text>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          class
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
+        </type>
+       </instance>
+      </item>
+     </parameters>
+    </instance>
+   </template>
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="17" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test return type fptr
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="15" name="EOS" type="EOS"/>
-   </declarations>
+     </item>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -141,8 +206,18 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func_template_arg.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func_template_arg.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="4" name="function" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="Foo"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="1" suspect="1">
     <text>
      // Test function pointers as template arguments

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="1" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="9" name="function&lt;void()(A1,A2)&gt;" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function&lt;void()(A1,A2)&gt;">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="A1"/>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="A2"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="6" suspect="0">
     <text>
      // Test template class with function argument
// (not really a template function)

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="6" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="13" name="function&lt;R()(void)&gt;" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function&lt;R()(void)&gt;">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="11" suspect="0">
     <text>
      // Test return type fptr

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="11" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="17" name="function&lt;R()(int,int)&gt;" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function&lt;R()(int,int)&gt;">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        class
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/func_template_arg.cc" line="15" suspect="0">
     <text>
      // Test return type fptr

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" language="C++" line="15" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function&lt;R()(int,int)&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function&lt;R()(void)&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function&lt;void()(A1,A2)&gt;">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/func_template_arg.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="4" name="function" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="Foo"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="4" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test function pointers as template arguments
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="9" name="function&lt;void()(A1,A2)&gt;" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function&lt;void()(A1,A2)&gt;">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="A1"/>
        </type>
       </instance>
      </item>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="A2"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="9" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template class with function argument
// (not really a template function)
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="13" name="function&lt;R()(void)&gt;" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function&lt;R()(void)&gt;">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="13" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test return type fptr
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/func_template_arg.cc" line="17" name="function&lt;R()(int,int)&gt;" type="struct">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="function&lt;R()(int,int)&gt;">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          class
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="R"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/func_template_arg.cc" line="17" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test return type fptr
     </item>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function&lt;R()(int,int)&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function&lt;R()(void)&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="function&lt;void()(A1,A2)&gt;">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/func_template_arg.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.groups

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,129 +1,156 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups.cc" language="C++" line="8" name="foo" type="struct">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="1" suspect="1">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups.cc" line="8" name="foo" type="struct">
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" line="8" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // group documentation
 // @group first group {
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="4" suspect="1">
-     <text>
+     </item>
+     <item>
       // some comment
 // extending over multiple lines
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="7" suspect="0">
-     <text>
+     </item>
+     <item>
       // another comment
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" language="C++" line="7" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="11" name="test1" type="global variable">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="11" name="test1" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Base" language="C++" name="int"/>
    </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="12" name="test2" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="14" name="bar" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="13" suspect="0">
-     <text>
-      // }
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="17" name="test3" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="15" suspect="0">
-     <text>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="12" name="test2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="14" name="bar" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // }
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="17" name="test3" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // another group
 // @group tests {
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="18" name="test4" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="24" name="f" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="19" suspect="1">
-     <text>
-      // }
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="21" suspect="1">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="18" name="test4" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="24" name="f" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // }
+     </item>
+     <item>
       // @group outer {
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="23" suspect="0">
-     <text>
+     </item>
+     <item>
       // @group inner {
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="26" name="test5" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="25" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="26" name="test5" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // @group xxx { not a group
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="30" name="test6" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="27" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="30" name="test6" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // } and not a group end
 // }
 // and not a group either
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" language="C++" line="31" name="EOS" type="EOS">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="31" suspect="1">
-     <text>
-      // }
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="33" suspect="1">
-     <text>
-      // }
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" line="31" name="EOS" type="EOS">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // }
+     </item>
+     <item>
+      // }
+     </item>
+     <item/>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -159,8 +186,21 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/groups.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/groups.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups.cc" language="C++" line="8" name="foo" type="struct">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="1" suspect="1">
     <text>
      // group documentation
// @group first group {

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="4" suspect="1">
     <text>
      // some comment
// extending over multiple lines

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="7" suspect="0">
     <text>
      // another comment

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" language="C++" line="7" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="11" name="test1" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="12" name="test2" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="14" name="bar" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="13" suspect="0">
     <text>
      // }

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="17" name="test3" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="15" suspect="0">
     <text>
      // another group
// @group tests {

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="18" name="test4" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="24" name="f" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="19" suspect="1">
     <text>
      // }

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="21" suspect="1">
     <text>
      // @group outer {

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="23" suspect="0">
     <text>
      // @group inner {

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="26" name="test5" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="25" suspect="0">
     <text>
      // @group xxx { not a group

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" language="C++" line="30" name="test6" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="27" suspect="0">
     <text>
      // } and not a group end
// }
// and not a group either

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" language="C++" line="31" name="EOS" type="EOS">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="31" suspect="1">
     <text>
      // }

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups.cc" line="33" suspect="1">
     <text>
      // }

     </text>
    </instance>
   </comments>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="bar">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test6">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/groups.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups.cc" line="8" name="foo" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" line="8" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // group documentation
// @group first group {
     </item>
     <item>
      // some comment
// extending over multiple lines
     </item>
     <item>
      // another comment
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="11" name="test1" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="12" name="test2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="14" name="bar" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // }
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="17" name="test3" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // another group
// @group tests {
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="18" name="test4" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="24" name="f" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // }
     </item>
     <item>
      // @group outer {
     </item>
     <item>
      // @group inner {
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="26" name="test5" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // @group xxx { not a group
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups.cc" line="30" name="test6" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // } and not a group end
// }
// and not a group either
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups.cc" line="31" name="EOS" type="EOS">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // }
     </item>
     <item>
      // }
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="bar">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test6">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/groups.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.groups2

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,176 +1,205 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups2.cc" language="C++" line="8" name="foo" type="struct">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="1" suspect="1">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups2.cc" line="8" name="foo" type="struct">
+   <declarations>
+    <item>
+     <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" line="18" name="foo.make_fn()" realname="make_fn" type="member function">
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value>
+        <item>
+         // helper functions
+        </item>
+        <item>
+         // blabla
+  //
+  // @group make_fn {
+        </item>
+        <item>
+         // bla.
+  // blabla
+        </item>
+       </value>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" line="21" name="foo.make_fn(int)" realname="make_fn" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value>
+        <item>
+         // bla.
+  // blabla
+        </item>
+       </value>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="3" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" line="21" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value>
+        <item>
+         // }
+  // @group } is this lost ?
+        </item>
+       </value>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // group documentation
 // @group first group { some comment
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="4" suspect="1">
-     <text>
+     </item>
+     <item>
       // continued and
 // extending over multiple lines
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="7" suspect="0">
-     <text>
+     </item>
+     <item>
       // another comment
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" language="C++" line="18" name="foo.make_fn()" realname="make_fn" type="member function">
-     <comments>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="10" suspect="1">
-       <text>
-        // helper functions
-
-       </text>
-      </instance>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="12" suspect="1">
-       <text>
-        // blabla
-  //
-  // @group make_fn {
-
-       </text>
-      </instance>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="16" suspect="0">
-       <text>
-        // bla.
-  // blabla
-
-       </text>
-      </instance>
-     </comments>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </returnType>
-    </instance>
-    <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" language="C++" line="21" name="foo.make_fn(int)" realname="make_fn" type="member function">
-     <comments>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="19" suspect="0">
-       <text>
-        // bla.
-  // blabla
-
-       </text>
-      </instance>
-     </comments>
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type/>
-      </instance>
-     </parameters>
-     <returnType/>
-    </instance>
-    <instance accessibility="3" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" language="C++" line="19" name="EOS" type="EOS">
-     <comments>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="22" suspect="0">
-       <text>
-        // }
-  // @group } is this lost ?
-
-       </text>
-      </instance>
-     </comments>
-    </instance>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="25" name="test1" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="26" name="test2" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="28" name="bar" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="27" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="25" name="test1" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="26" name="test2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="28" name="bar" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // @group }
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="31" name="test3" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="29" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="31" name="test3" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // another group
 // @group tests {
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="32" name="test4" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="38" name="f" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="33" suspect="1">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="32" name="test4" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="38" name="f" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // @group }
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="35" suspect="1">
-     <text>
+     </item>
+     <item>
       // @group outer {
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="37" suspect="0">
-     <text>
+     </item>
+     <item>
       // @group inner {
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="40" name="test5" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="39" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="40" name="test5" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // @group xxx { not a group
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="44" name="test6" type="global variable">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="41" suspect="0">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="44" name="test6" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // @group } this is accepted
 // @group }
 // and this too
-
-     </text>
-    </instance>
-   </comments>
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" language="C++" line="45" name="EOS" type="EOS">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="45" suspect="1">
-     <text>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" line="45" name="EOS" type="EOS">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // @group }
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+     <item/>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -212,8 +241,23 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/groups2.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/groups2.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups2.cc" language="C++" line="8" name="foo" type="struct">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="1" suspect="1">
     <text>
      // group documentation
// @group first group { some comment

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="4" suspect="1">
     <text>
      // continued and
// extending over multiple lines

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="7" suspect="0">
     <text>
      // another comment

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" language="C++" line="18" name="foo.make_fn()" realname="make_fn" type="member function">
     <comments>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="10" suspect="1">
       <text>
        // helper functions

       </text>
      </instance>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="12" suspect="1">
       <text>
        // blabla
  //
  // @group make_fn {

       </text>
      </instance>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="16" suspect="0">
       <text>
        // bla.
  // blabla

       </text>
      </instance>
     </comments>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </returnType>
    </instance>
    <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" language="C++" line="21" name="foo.make_fn(int)" realname="make_fn" type="member function">
     <comments>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="19" suspect="0">
       <text>
        // bla.
  // blabla

       </text>
      </instance>
     </comments>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type/>
      </instance>
     </parameters>
     <returnType/>
    </instance>
    <instance accessibility="3" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" language="C++" line="19" name="EOS" type="EOS">
     <comments>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="22" suspect="0">
       <text>
        // }
  // @group } is this lost ?

       </text>
      </instance>
     </comments>
    </instance>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="25" name="test1" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="26" name="test2" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="28" name="bar" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="27" suspect="0">
     <text>
      // @group }

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="31" name="test3" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="29" suspect="0">
     <text>
      // another group
// @group tests {

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="32" name="test4" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="38" name="f" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="33" suspect="1">
     <text>
      // @group }

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="35" suspect="1">
     <text>
      // @group outer {

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="37" suspect="0">
     <text>
      // @group inner {

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="40" name="test5" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="39" suspect="0">
     <text>
      // @group xxx { not a group

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" language="C++" line="44" name="test6" type="global variable">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="41" suspect="0">
     <text>
      // @group } this is accepted
// @group }
// and this too

     </text>
    </instance>
   </comments>
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" language="C++" line="45" name="EOS" type="EOS">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/groups2.cc" line="45" suspect="1">
     <text>
      // @group }

     </text>
    </instance>
   </comments>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="bar">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo.make_fn()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo.make_fn(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test6">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/groups2.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/groups2.cc" line="8" name="foo" type="struct">
   <declarations>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" line="18" name="foo.make_fn()" realname="make_fn" type="member function">
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         // helper functions
        </item>
        <item>
         // blabla
  //
  // @group make_fn {
        </item>
        <item>
         // bla.
  // blabla
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/groups2.cc" line="21" name="foo.make_fn(int)" realname="make_fn" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         // bla.
  // blabla
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" line="21" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         // }
  // @group } is this lost ?
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // group documentation
// @group first group { some comment
     </item>
     <item>
      // continued and
// extending over multiple lines
     </item>
     <item>
      // another comment
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="25" name="test1" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="26" name="test2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="28" name="bar" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // @group }
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="31" name="test3" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // another group
// @group tests {
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="32" name="test4" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="38" name="f" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // @group }
     </item>
     <item>
      // @group outer {
     </item>
     <item>
      // @group inner {
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="40" name="test5" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // @group xxx { not a group
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/groups2.cc" line="44" name="test6" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // @group } this is accepted
// @group }
// and this too
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/groups2.cc" line="45" name="EOS" type="EOS">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // @group }
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="bar">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo.make_fn()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo.make_fn(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test6">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/groups2.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.if

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,18 +1,20 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/if.cc" language="C++" line="2" name="func()" realname="func" type="function">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/if.cc" line="1" suspect="0">
-     <text>
-      // If test
-
-     </text>
-    </instance>
-   </comments>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/if.cc" line="2" name="func()" realname="func" type="function">
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // If test
+     </item>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -21,8 +23,11 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/if.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/if.cc" primary="1">
+   <declarations>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/if.cc" language="C++" line="2" name="func()" realname="func" type="function">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/if.cc" line="1" suspect="0">
     <text>
      // If test

     </text>
    </instance>
   </comments>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/if.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/if.cc" line="2" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // If test
     </item>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/if.cc" primary="1">
   <declarations>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.koenig

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,50 +1,110 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/koenig.cc" language="C++" line="0" name="NS" type="namespace">
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/koenig.cc" line="0" name="NS" type="namespace">
    <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/koenig.cc" language="C++" line="3" name="NS.A" type="struct">
-     <declarations>
-      <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" language="C++" line="3" name="EOS" type="EOS"/>
-     </declarations>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" language="C++" line="4" name="NS.operator+(A,A)" realname="operator+" type="function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Declared" language="C++" name="NS.A">
-         <declaration/>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/koenig.cc" line="3" name="NS.A" type="struct">
+      <declarations>
+       <item>
+        <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" line="3" name="EOS" type="EOS">
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
         </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type/>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </returnType>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" language="C++" line="4" name="EOS" type="EOS"/>
+       </item>
+      </declarations>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" line="4" name="NS.operator+(A,A)" realname="operator+" type="function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Declared" language="C++" name="NS.A">
+           <declaration/>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" line="4" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" language="C++" line="7" name="func(int)" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" line="7" name="func(int)" realname="func" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type/>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" language="C++" line="8" name="func(NS::A)" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" line="8" name="func(NS::A)" realname="func" type="function">
    <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type/>
-    </instance>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -65,8 +125,17 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/koenig.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/koenig.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/koenig.cc" language="C++" line="0" name="NS" type="namespace">
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/koenig.cc" language="C++" line="3" name="NS.A" type="struct">
     <declarations>
      <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" language="C++" line="3" name="EOS" type="EOS"/>
     </declarations>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" language="C++" line="4" name="NS.operator+(A,A)" realname="operator+" type="function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Declared" language="C++" name="NS.A">
         <declaration/>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type/>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </returnType>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" language="C++" line="4" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" language="C++" line="7" name="func(int)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type/>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" language="C++" line="8" name="func(NS::A)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type/>
    </instance>
   </parameters>
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="NS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="NS.operator+(A,A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(NS::A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(int)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/koenig.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/koenig.cc" line="0" name="NS" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/koenig.cc" line="3" name="NS.A" type="struct">
      <declarations>
       <item>
        <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" line="3" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" line="4" name="NS.operator+(A,A)" realname="operator+" type="function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Declared" language="C++" name="NS.A">
           <declaration/>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/koenig.cc" line="4" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" line="7" name="func(int)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/koenig.cc" line="8" name="func(NS::A)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="NS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="NS.operator+(A,A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(NS::A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(int)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/koenig.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.macro

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,44 +1,111 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="4" name="LONGER" text="12345678" type="macro"/>
-  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="5" name="SHORTER" text="1234" type="macro"/>
-  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="6" name="LINKINSIDE" text="x" type="macro"/>
-  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="7" name="ARGS" text="x" type="macro">
+  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="4" name="LONGER" text="12345678" type="macro">
+   <annotations/>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="5" name="SHORTER" text="1234" type="macro">
+   <annotations/>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="6" name="LINKINSIDE" text="x" type="macro">
+   <annotations/>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="7" name="ARGS" text="x" type="macro">
    <parameters>
-    a
-    b
-    c
+    <item>
+     a
+    </item>
+    <item>
+     b
+    </item>
+    <item>
+     c
+    </item>
    </parameters>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="1" name="x" type="global variable">
+   <annotations/>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="1" name="x" type="global variable">
    <vtype>
     <instance class="Synopsis.Type.Base" language="C++" name="int"/>
    </vtype>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="8" name="A" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="8" name="A2" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="9" name="B" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="9" name="B2" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="10" name="C" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="10" name="C2" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="11" name="D" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="11" name="D2" type="global variable">
-   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="8" name="A" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="8" name="A2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="9" name="B" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="9" name="B2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="10" name="C" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="10" name="C2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="11" name="D" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="11" name="D2" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -83,32 +150,51 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/macro.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/macro.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls>
     <key>
      8
     </key>
     <value>
-     <instance class="Synopsis.AST.MacroCall" diff="-4" end="18" name="LONGER" start="8"/>
+     <item>
+      <instance class="Synopsis.SourceFile.MacroCall" diff="-4" end="18" name="LONGER" start="8"/>
+     </item>
     </value>
     <key>
      9
     </key>
     <value>
-     <instance class="Synopsis.AST.MacroCall" diff="1" end="14" name="SHORTER" start="8"/>
+     <item>
+      <instance class="Synopsis.SourceFile.MacroCall" diff="1" end="14" name="SHORTER" start="8"/>
+     </item>
     </value>
     <key>
      10
     </key>
     <value>
-     <instance class="Synopsis.AST.MacroCall" diff="7" end="11" name="LINKINSIDE" start="8"/>
+     <item>
+      <instance class="Synopsis.SourceFile.MacroCall" diff="7" end="11" name="LINKINSIDE" start="8"/>
+     </item>
     </value>
     <key>
      11
     </key>
     <value>
-     <instance class="Synopsis.AST.MacroCall" diff="10" end="11" name="ARGS" start="8"/>
+     <item>
+      <instance class="Synopsis.SourceFile.MacroCall" diff="10" end="11" name="ARGS" start="8"/>
+     </item>
     </value>
    </macro_calls>
   </instance>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="4" name="LONGER" text="12345678" type="macro"/>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="5" name="SHORTER" text="1234" type="macro"/>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="6" name="LINKINSIDE" text="x" type="macro"/>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" language="C++" line="7" name="ARGS" text="x" type="macro">
   <parameters>
    a
    b
    c
   </parameters>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="1" name="x" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </vtype>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="8" name="A" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="8" name="A2" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="9" name="B" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="9" name="B2" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="10" name="C" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="10" name="C2" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="11" name="D" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" language="C++" line="11" name="D2" type="global variable">
   <vtype/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="A">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="ARGS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="C">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="C2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="LINKINSIDE">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="LONGER">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="SHORTER">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="x">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/macro.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls>
    <key>
     8
    </key>
    <value>
     <instance class="Synopsis.AST.MacroCall" diff="-4" end="18" name="LONGER" start="8"/>
    </value>
    <key>
     9
    </key>
    <value>
     <instance class="Synopsis.AST.MacroCall" diff="1" end="14" name="SHORTER" start="8"/>
    </value>
    <key>
     10
    </key>
    <value>
     <instance class="Synopsis.AST.MacroCall" diff="7" end="11" name="LINKINSIDE" start="8"/>
    </value>
    <key>
     11
    </key>
    <value>
     <instance class="Synopsis.AST.MacroCall" diff="10" end="11" name="ARGS" start="8"/>
    </value>
   </macro_calls>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="4" name="LONGER" text="12345678" type="macro">
   <annotations/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="5" name="SHORTER" text="1234" type="macro">
   <annotations/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="6" name="LINKINSIDE" text="x" type="macro">
   <annotations/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Macro" file="Parsers/Cxx/input/macro.cc" line="7" name="ARGS" text="x" type="macro">
   <parameters>
    <item>
     a
    </item>
    <item>
     b
    </item>
    <item>
     c
    </item>
   </parameters>
   <annotations/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="1" name="x" type="global variable">
   <vtype>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </vtype>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="8" name="A" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="8" name="A2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="9" name="B" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="9" name="B2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="10" name="C" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="10" name="C2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="11" name="D" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/macro.cc" line="11" name="D2" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="A">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="ARGS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="C">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="C2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="LINKINSIDE">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="LONGER">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="SHORTER">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="x">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/macro.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls>
    <key>
     8
    </key>
    <value>
     <item>
      <instance class="Synopsis.SourceFile.MacroCall" diff="-4" end="18" name="LONGER" start="8"/>
     </item>
    </value>
    <key>
     9
    </key>
    <value>
     <item>
      <instance class="Synopsis.SourceFile.MacroCall" diff="1" end="14" name="SHORTER" start="8"/>
     </item>
    </value>
    <key>
     10
    </key>
    <value>
     <item>
      <instance class="Synopsis.SourceFile.MacroCall" diff="7" end="11" name="LINKINSIDE" start="8"/>
     </item>
    </value>
    <key>
     11
    </key>
    <value>
     <item>
      <instance class="Synopsis.SourceFile.MacroCall" diff="10" end="11" name="ARGS" start="8"/>
     </item>
    </value>
   </macro_calls>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.operator

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,116 +1,212 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" language="C++" line="1" name="A" type="struct">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" line="1" name="A" type="struct">
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" language="C++" line="1" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" line="1" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" language="C++" line="2" name="B" type="struct">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" line="2" name="B" type="struct">
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" language="C++" line="2" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" line="2" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="3" name="operator+(const B&amp;,const B&amp;)" realname="operator+" type="function">
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias>
-        <instance class="Synopsis.Type.Declared" language="C++" name="B">
-         <declaration/>
-        </instance>
-       </alias>
-       <postmod>
-        &amp;
-       </postmod>
-       <premod>
-        const
-       </premod>
-      </instance>
-     </type>
-    </instance>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        &amp;
-       </postmod>
-       <premod>
-        const
-       </premod>
-      </instance>
-     </type>
-    </instance>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="3" name="operator+(const B&amp;,const B&amp;)" realname="operator+" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias>
+         <instance class="Synopsis.Type.Declared" language="C++" name="B">
+          <declaration/>
+         </instance>
+        </alias>
+        <postmod>
+         <item>
+          &amp;
+         </item>
+        </postmod>
+        <premod>
+         <item>
+          const
+         </item>
+        </premod>
+       </instance>
+      </type>
+     </instance>
+    </item>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
+          &amp;
+         </item>
+        </postmod>
+        <premod>
+         <item>
+          const
+         </item>
+        </premod>
+       </instance>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Declared" language="C++" name="A">
      <declaration/>
     </instance>
    </returnType>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="4" name="operator+(const A&amp;,const A&amp;)" realname="operator+" type="function">
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        &amp;
-       </postmod>
-       <premod>
-        const
-       </premod>
-      </instance>
-     </type>
-    </instance>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        &amp;
-       </postmod>
-       <premod>
-        const
-       </premod>
-      </instance>
-     </type>
-    </instance>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="4" name="operator+(const A&amp;,const A&amp;)" realname="operator+" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
+          &amp;
+         </item>
+        </postmod>
+        <premod>
+         <item>
+          const
+         </item>
+        </premod>
+       </instance>
+      </type>
+     </instance>
+    </item>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
+          &amp;
+         </item>
+        </postmod>
+        <premod>
+         <item>
+          const
+         </item>
+        </premod>
+       </instance>
+      </type>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="int"/>
    </returnType>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="5" name="func(A)" realname="func" type="function">
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type/>
-    </instance>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="5" name="func(A)" realname="func" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="6" name="func(B)" realname="func" type="function">
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type/>
-    </instance>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="6" name="func(B)" realname="func" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="7" name="func(int)" realname="func" type="function">
-   <parameters>
-    <instance class="Synopsis.AST.Parameter" identifier="" value="">
-     <type/>
-    </instance>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="7" name="func(int)" realname="func" type="function">
+   <parameters>
+    <item>
+     <instance class="Synopsis.AST.Parameter" identifier="" value="">
+      <type/>
+     </instance>
+    </item>
    </parameters>
    <returnType/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="8" name="main()" realname="main" type="function">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="8" name="main()" realname="main" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -137,8 +233,20 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/operator.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/operator.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" language="C++" line="1" name="A" type="struct">
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" language="C++" line="1" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" language="C++" line="2" name="B" type="struct">
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" language="C++" line="2" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="3" name="operator+(const B&amp;,const B&amp;)" realname="operator+" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias>
        <instance class="Synopsis.Type.Declared" language="C++" name="B">
         <declaration/>
        </instance>
       </alias>
       <postmod>
        &amp;
       </postmod>
       <premod>
        const
       </premod>
      </instance>
     </type>
    </instance>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        &amp;
       </postmod>
       <premod>
        const
       </premod>
      </instance>
     </type>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Declared" language="C++" name="A">
     <declaration/>
    </instance>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="4" name="operator+(const A&amp;,const A&amp;)" realname="operator+" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        &amp;
       </postmod>
       <premod>
        const
       </premod>
      </instance>
     </type>
    </instance>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        &amp;
       </postmod>
       <premod>
        const
       </premod>
      </instance>
     </type>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="5" name="func(A)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type/>
    </instance>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="6" name="func(B)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type/>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="7" name="func(int)" realname="func" type="function">
   <parameters>
    <instance class="Synopsis.AST.Parameter" identifier="" value="">
     <type/>
    </instance>
   </parameters>
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" language="C++" line="8" name="main()" realname="main" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(B)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="main()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="operator+(const A&amp;,const A&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="operator+(const B&amp;,const B&amp;)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/operator.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" line="1" name="A" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" line="1" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/operator.cc" line="2" name="B" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/operator.cc" line="2" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="3" name="operator+(const B&amp;,const B&amp;)" realname="operator+" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias>
         <instance class="Synopsis.Type.Declared" language="C++" name="B">
          <declaration/>
         </instance>
        </alias>
        <postmod>
         <item>
          &amp;
         </item>
        </postmod>
        <premod>
         <item>
          const
         </item>
        </premod>
       </instance>
      </type>
     </instance>
    </item>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          &amp;
         </item>
        </postmod>
        <premod>
         <item>
          const
         </item>
        </premod>
       </instance>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Declared" language="C++" name="A">
     <declaration/>
    </instance>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="4" name="operator+(const A&amp;,const A&amp;)" realname="operator+" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          &amp;
         </item>
        </postmod>
        <premod>
         <item>
          const
         </item>
        </premod>
       </instance>
      </type>
     </instance>
    </item>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          &amp;
         </item>
        </postmod>
        <premod>
         <item>
          const
         </item>
        </premod>
       </instance>
      </type>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="int"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="5" name="func(A)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="6" name="func(B)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="7" name="func(int)" realname="func" type="function">
   <parameters>
    <item>
     <instance class="Synopsis.AST.Parameter" identifier="" value="">
      <type/>
     </instance>
    </item>
   </parameters>
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/operator.cc" line="8" name="main()" realname="main" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(A)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(B)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="main()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="operator+(const A&amp;,const A&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="operator+(const B&amp;,const B&amp;)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/operator.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.std

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_cause
   "incorrect output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,67 +1,45 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="/usr/include/c++/3.2.2/bits/stl_bvector.h" language="C++" line="0" name="std" type="namespace">
-   <comments>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/cstring
-     </file>
-     <text>
-      // Get rid of those macros defined in &lt;string.h&gt; in lieu of real functions.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/cstdlib
-     </file>
-     <text>
-      // Get rid of those macros defined in &lt;stdlib.h&gt; in lieu of real functions.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/exception
-     </file>
-     <text>
-      // Exception Handling support header for -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/exception
-     </file>
-     <text>
-      // Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002
-// Free Software Foundation
+  <instance accessibility="0" class="Synopsis.AST.Module" file="/group/fresco/local/include/c++/3.3/bits/vector.tcc" line="0" name="std" type="namespace">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
+      // namespace std 
+     </item>
+     <item>
+      // Local Variables:
+// mode:C++
+// End:
+     </item>
+     <item>
+      // Vector implementation (out of line) -*- C++ -*-
+     </item>
+     <item>
+      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 //
-// This file is part of GNU CC.
-//
-// GNU CC is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2, or (at your option)
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
 // any later version.
-// 
-// GNU CC is distributed in the hope that it will be useful,
+     </item>
+     <item>
+      // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with GNU CC; see the file COPYING.  If not, write to
-// the Free Software Foundation, 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/exception
-     </file>
-     <text>
+     </item>
+     <item>
+      // You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+     </item>
+     <item>
       // As a special exception, you may use this file as part of a free software
 // library without restriction.  Specifically, if other files instantiate
 // templates or use macros or inline functions from this file, or you compile
@@ -70,306 +48,8 @@
 // the GNU General Public License.  This exception does not however
 // invalidate any other reasons why the executable file might be covered by
 // the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/exception
-     </file>
-     <text>
-      /** @file exception
- *  This header defines several types and functions relating to the
- *  handling of exceptions in a C++ program.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      // String support -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      //
-// ISO C++ 14882: 21 Strings library
-//
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stringfwd.h
-     </file>
-     <text>
-      /** @file stringfwd.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/cstdio
-     </file>
-     <text>
-      // Get rid of those macros defined in &lt;stdio.h&gt; in lieu of real functions.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      // -*- C++ -*- forwarding header.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      //
-// ISO C++ 14882: 20.5  Date and time
-//
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      /** @file ctime
- *  This is a Standard C++ Library file.  You should @c #include this file
- *  in your programs, rather than any of the &quot;*.h&quot; implementation files.
- *
- *  This is the C++ version of the Standard C Library header @c time.h,
- *  and its contents are (mostly) the same as that header, but are all
- *  contained in the namespace @c std.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/ctime
-     </file>
-     <text>
-      // Get rid of those macros defined in &lt;time.h&gt; in lieu of real functions.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/cwchar
-     </file>
-     <text>
-      // Need to do a bit of trickery here with mbstate_t as char_traits
-// assumes it is in wchar.h, regardless of wchar_t specializations.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/cwchar
-     </file>
-     <text>
-      // Get rid of those macros defined in &lt;wchar.h&gt; in lieu of real functions.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
-      // Pair implementation -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
-      // Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
+     </item>
+     <item>
       /*
  *
  * Copyright (c) 1994
@@ -384,7 +64,7 @@
  * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
  *
  *
- * Copyright (c) 1996,1997
+ * Copyright (c) 1996
  * Silicon Graphics Computer Systems, Inc.
  *
  * Permission to use, copy, modify, distribute and sell this software
@@ -392,782 +72,112 @@
  * provided that the above copyright notice appear in all copies and
  * that both that copyright notice and this permission notice appear
  * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
+ * representations about the suitability of this  software for any
  * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
  */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_pair.h
-     </file>
-     <text>
-      /** @file stl_pair.h
+     </item>
+     <item>
+      /** @file vector.tcc
  *  This is an internal header file, included by other library headers.
  *  You should not attempt to use it directly.
  */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      // Types used in iterator implementation -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      /*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-     </file>
-     <text>
-      /** @file stl_iterator_base_types.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- *
- *  This file contains all of the general iterator-related utility types,
- *  such as iterator_traits and struct iterator.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="0">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator_base_funcs.h
-     </file>
-     <text>
-      // Since this entire file is within namespace std, there's no reason to
-// waste two spaces along the left column.  Thus the leading indentation is
-// slightly violated from here on.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      // Iterators -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      /*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      /** @file stl_iterator.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- *
- *  This file implements reverse_iterator, back_insert_iterator,
- *  front_insert_iterator, insert_iterator, __normal_iterator, and their
- *  supporting functions and overloaded operators.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      // Threading support -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      // Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      /*
- * Copyright (c) 1997-1999
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      /** @file stl_threads.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_threads.h
-     </file>
-     <text>
-      // The only supported threading model is GCC's own gthr.h abstraction layer.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      // nonstandard construct and destroy functions -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      /*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_construct.h
-     </file>
-     <text>
-      /** @file stl_construct.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      // Raw memory manipulators -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      // Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      /*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-     </file>
-     <text>
-      /** @file stl_uninitialized.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      // bit_vector and vector&lt;bool&gt; specialization -*- C++ -*-
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      // This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      // You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      // As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      /*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1999
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      /** @file stl_bvector.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
+     </item>
+     <item/>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="/group/fresco/local/include/c++/3.3/bits/stl_iterator.h" line="0" name="__gnu_cxx" type="namespace">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // namespace std
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_bvector.h
-     </file>
-     <text>
-      // Declare a partial specialization of vector&lt;T, Alloc&gt;.
-
-     </text>
-    </instance>
-   </comments>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="/usr/include/c++/3.2.2/bits/stl_iterator.h" language="C++" line="0" name="__gnu_cxx" type="namespace">
-   <comments>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/exception
-     </file>
-     <text>
+     </item>
+     <item/>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/std.cc" line="0" name="Foo" type="namespace">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/std.cc" line="5" name="Foo.func(std::vector&lt;int&gt;)" realname="func" type="function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="array" value="">
+         <type>
+          <instance class="Synopsis.Type.Parametrized" language="C++">
+           <parameters>
+            <item>
+             <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+            </item>
+           </parameters>
+           <template>
+            <instance class="Synopsis.Type.Unknown" language="C++" name="std.vector">
+             <link>
+              <item>
+               std
+              </item>
+              <item>
+               vector
+              </item>
+             </link>
+            </instance>
+           </template>
+          </instance>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/std.cc" line="5" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // namespace std
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="0">
-     <file>
-      /usr/include/c++/3.2.2/bits/type_traits.h
-     </file>
-     <text>
-      // Forward declaration hack, should really include this from somewhere.
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
-     <file>
-      /usr/include/c++/3.2.2/bits/stl_iterator.h
-     </file>
-     <text>
-      // namespace std
-
-     </text>
-    </instance>
-   </comments>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/std.cc" language="C++" line="0" name="Foo" type="namespace">
-   <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/std.cc" language="C++" line="5" name="Foo.func(std::vector&lt;int&gt;)" realname="func" type="function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="array" value="">
-       <type>
-        <instance class="Synopsis.Type.Parametrized" language="C++">
-         <parameters>
-          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-         </parameters>
-         <template>
-          <instance class="Synopsis.Type.Unknown" language="C++" name="std.vector">
-           <link>
-            std
-            vector
-           </link>
-          </instance>
-         </template>
-        </instance>
-       </type>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-     </returnType>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/std.cc" language="C++" line="5" name="EOS" type="EOS"/>
-   </declarations>
+     </item>
+     <item/>
+    </value>
+   </annotations>
   </instance>
  </declarations>
  <types>
   <instance class="Synopsis.Type.Unknown" language="C++" name="__gnu_cxx">
    <link>
-    __gnu_cxx
+    <item>
+     __gnu_cxx
+    </item>
    </link>
   </instance>
   <instance class="Synopsis.Type.Unknown" language="C++" name="std">
    <link>
-    std
+    <item>
+     std
+    </item>
    </link>
   </instance>
   <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
@@ -1181,254 +191,325 @@
   </instance>
  </types>
  <files>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_iterator_base_funcs.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/i386-redhat-linux/bits/c++config.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/cstddef
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/fpos.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_alloc.h
-  </file>
-  <file>
-   /usr/include/bits/sigthread.h
-  </file>
-  <file>
-   /usr/include/xlocale.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_bvector.h
-  </file>
-  <file>
-   /usr/include/bits/sigset.h
-  </file>
-  <file>
-   /usr/include/bits/xopen_lim.h
-  </file>
-  <file>
-   /usr/include/bits/local_lim.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/exception
-  </file>
-  <file>
-   /usr/include/sys/sysmacros.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/iosfwd
-  </file>
-  <file>
-   /usr/include/_G_config.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_threads.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_construct.h
-  </file>
-  <file>
-   /usr/include/signal.h
-  </file>
-  <file>
-   /usr/include/sys/cdefs.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/i386-redhat-linux/bits/gthr-default.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_uninitialized.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/new
-  </file>
-  <file>
-   /usr/include/bits/posix2_lim.h
-  </file>
-  <file>
-   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stddef.h
-  </file>
-  <file>
-   /usr/include/string.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/i386-redhat-linux/bits/atomicity.h
-  </file>
-  <file>
-   /usr/include/stdlib.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/cstdlib
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/i386-redhat-linux/bits/c++io.h
-  </file>
-  <file>
-   /usr/include/gnu/stubs.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/functexcept.h
-  </file>
-  <file>
-   /usr/include/bits/waitflags.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/i386-redhat-linux/bits/gthr.h
-  </file>
-  <file>
-   /usr/include/bits/waitstatus.h
-  </file>
-  <file>
-   /usr/include/bits/endian.h
-  </file>
-  <file>
-   /usr/include/limits.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_vector.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stringfwd.h
-  </file>
-  <file>
-   /usr/include/bits/posix1_lim.h
-  </file>
-  <file>
-   /usr/include/bits/typesizes.h
-  </file>
-  <file>
-   /usr/include/bits/sched.h
-  </file>
-  <file>
-   /usr/include/pthread.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_iterator.h
-  </file>
-  <file>
-   /usr/include/wchar.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/climits
-  </file>
-  <file>
-   /usr/include/libio.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_algobase.h
-  </file>
-  <file>
-   /usr/include/bits/wchar.h
-  </file>
-  <file>
-   /usr/include/features.h
-  </file>
-  <file>
-   /usr/include/bits/sys_errlist.h
-  </file>
-  <file>
-   /usr/include/bits/pthreadtypes.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/exception_defines.h
-  </file>
-  <file>
-   /usr/include/bits/select.h
-  </file>
-  <file>
-   /usr/include/alloca.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/ctime
-  </file>
-  <file>
-   /usr/include/bits/types.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/cwchar
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/cassert
-  </file>
-  <file>
-   /usr/include/bits/stdio_lim.h
-  </file>
-  <file>
-   /usr/include/bits/initspin.h
-  </file>
-  <file>
-   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stdarg.h
-  </file>
-  <file>
-   Parsers/Cxx/input/std.cc
-  </file>
-  <file>
-   /usr/include/bits/time.h
-  </file>
-  <file>
-   /usr/include/time.h
-  </file>
-  <file>
-   /usr/include/linux/limits.h
-  </file>
-  <file>
-   /usr/include/assert.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/i386-redhat-linux/bits/os_defines.h
-  </file>
-  <file>
-   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/limits.h
-  </file>
-  <file>
-   /usr/include/gconv.h
-  </file>
-  <file>
-   /usr/include/sys/types.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/type_traits.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/concept_check.h
-  </file>
-  <file>
-   /usr/include/endian.h
-  </file>
-  <file>
-   /usr/include/sched.h
-  </file>
-  <file>
-   /usr/include/bits/wordsize.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/vector
-  </file>
-  <file>
-   /usr/include/sys/select.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/cstdio
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/bits/stl_pair.h
-  </file>
-  <file>
-   /usr/include/c++/3.2.2/cstring
-  </file>
-  <file>
-   /usr/include/stdio.h
-  </file>
-  <file>
-   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/syslimits.h
-  </file>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/atomicity.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/clocale" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/c++io.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_iterator.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/gthr-default.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/libio.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/locale.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/ctime" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/sigset.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_threads.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_vector.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstddef" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/locale.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/_G_config.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/sched.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_uninitialized.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/sys/types.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/stdlib.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/new" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/xlocale.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_alloc.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/ctype.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/gconv.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/waitstatus.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_construct.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/string.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cwchar" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/bits/sigthread.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/fpos.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstring" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/sched.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_iterator_base_types.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/iosfwd" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/time.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/stddef.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_pair.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstdlib" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/type_traits.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/stdio.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/vector" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/time.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/sys/select.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/alloca.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/vector.tcc" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/types.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/unistd.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/getopt.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/std.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes>
+    <item>
+     <instance class="Synopsis.SourceFile.Include" is_macro="0" is_next="0" name="&lt;vector&gt;">
+      <target/>
+     </instance>
+    </item>
+   </includes>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/confname.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_iterator_base_funcs.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_algobase.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/pthreadtypes.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cctype" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_bvector.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stringfwd.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/c++locale.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/pthread.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/functexcept.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/exception" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/wchar.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstdio" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/stdarg.h" primary="False">
+   <declarations/>
+   <includes/>
+   <macro_calls/>
+  </instance>
  </files>
 </ast>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="/usr/include/c++/3.2.2/bits/stl_bvector.h" language="C++" line="0" name="std" type="namespace">
   <comments>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/cstring
     </file>
     <text>
      // Get rid of those macros defined in &lt;string.h&gt; in lieu of real functions.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/cstdlib
     </file>
     <text>
      // Get rid of those macros defined in &lt;stdlib.h&gt; in lieu of real functions.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/exception
     </file>
     <text>
      // Exception Handling support header for -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/exception
     </file>
     <text>
      // Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002
// Free Software Foundation
//
// This file is part of GNU CC.
//
// GNU CC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// 
// GNU CC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with GNU CC; see the file COPYING.  If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/exception
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/exception
     </file>
     <text>
      /** @file exception
 *  This header defines several types and functions relating to the
 *  handling of exceptions in a C++ program.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      // String support -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      //
// ISO C++ 14882: 21 Strings library
//

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stringfwd.h
     </file>
     <text>
      /** @file stringfwd.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/cstdio
     </file>
     <text>
      // Get rid of those macros defined in &lt;stdio.h&gt; in lieu of real functions.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      // -*- C++ -*- forwarding header.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      //
// ISO C++ 14882: 20.5  Date and time
//

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      /** @file ctime
 *  This is a Standard C++ Library file.  You should @c #include this file
 *  in your programs, rather than any of the &quot;*.h&quot; implementation files.
 *
 *  This is the C++ version of the Standard C Library header @c time.h,
 *  and its contents are (mostly) the same as that header, but are all
 *  contained in the namespace @c std.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/ctime
     </file>
     <text>
      // Get rid of those macros defined in &lt;time.h&gt; in lieu of real functions.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/cwchar
     </file>
     <text>
      // Need to do a bit of trickery here with mbstate_t as char_traits
// assumes it is in wchar.h, regardless of wchar_t specializations.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/cwchar
     </file>
     <text>
      // Get rid of those macros defined in &lt;wchar.h&gt; in lieu of real functions.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      // Pair implementation -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      // Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996,1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_pair.h
     </file>
     <text>
      /** @file stl_pair.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      // Types used in iterator implementation -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996-1998
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
     </file>
     <text>
      /** @file stl_iterator_base_types.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 *
 *  This file contains all of the general iterator-related utility types,
 *  such as iterator_traits and struct iterator.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="0">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator_base_funcs.h
     </file>
     <text>
      // Since this entire file is within namespace std, there's no reason to
// waste two spaces along the left column.  Thus the leading indentation is
// slightly violated from here on.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      // Iterators -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996-1998
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      /** @file stl_iterator.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 *
 *  This file implements reverse_iterator, back_insert_iterator,
 *  front_insert_iterator, insert_iterator, __normal_iterator, and their
 *  supporting functions and overloaded operators.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      // Threading support -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      // Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      /*
 * Copyright (c) 1997-1999
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      /** @file stl_threads.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_threads.h
     </file>
     <text>
      // The only supported threading model is GCC's own gthr.h abstraction layer.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      // nonstandard construct and destroy functions -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996,1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_construct.h
     </file>
     <text>
      /** @file stl_construct.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      // Raw memory manipulators -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      // Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996,1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_uninitialized.h
     </file>
     <text>
      /** @file stl_uninitialized.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // bit_vector and vector&lt;bool&gt; specialization -*- C++ -*-

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996-1999
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      /** @file stl_bvector.h
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // namespace std

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_bvector.h
     </file>
     <text>
      // Declare a partial specialization of vector&lt;T, Alloc&gt;.

     </text>
    </instance>
   </comments>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="/usr/include/c++/3.2.2/bits/stl_iterator.h" language="C++" line="0" name="__gnu_cxx" type="namespace">
   <comments>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/exception
     </file>
     <text>
      // namespace std

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="0">
     <file>
      /usr/include/c++/3.2.2/bits/type_traits.h
     </file>
     <text>
      // Forward declaration hack, should really include this from somewhere.

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" line="0" suspect="1">
     <file>
      /usr/include/c++/3.2.2/bits/stl_iterator.h
     </file>
     <text>
      // namespace std

     </text>
    </instance>
   </comments>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/std.cc" language="C++" line="0" name="Foo" type="namespace">
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/std.cc" language="C++" line="5" name="Foo.func(std::vector&lt;int&gt;)" realname="func" type="function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="array" value="">
       <type>
        <instance class="Synopsis.Type.Parametrized" language="C++">
         <parameters>
          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
         </parameters>
         <template>
          <instance class="Synopsis.Type.Unknown" language="C++" name="std.vector">
           <link>
            std
            vector
           </link>
          </instance>
         </template>
        </instance>
       </type>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
     </returnType>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/std.cc" language="C++" line="5" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Unknown" language="C++" name="__gnu_cxx">
   <link>
    __gnu_cxx
   </link>
  </instance>
  <instance class="Synopsis.Type.Unknown" language="C++" name="std">
   <link>
    std
   </link>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.func(std::vector&lt;int&gt;)">
   <declaration/>
  </instance>
 </types>
 <files>
  <file>
   /usr/include/c++/3.2.2/bits/stl_iterator_base_funcs.h
  </file>
  <file>
   /usr/include/c++/3.2.2/i386-redhat-linux/bits/c++config.h
  </file>
  <file>
   /usr/include/c++/3.2.2/cstddef
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/fpos.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_alloc.h
  </file>
  <file>
   /usr/include/bits/sigthread.h
  </file>
  <file>
   /usr/include/xlocale.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_bvector.h
  </file>
  <file>
   /usr/include/bits/sigset.h
  </file>
  <file>
   /usr/include/bits/xopen_lim.h
  </file>
  <file>
   /usr/include/bits/local_lim.h
  </file>
  <file>
   /usr/include/c++/3.2.2/exception
  </file>
  <file>
   /usr/include/sys/sysmacros.h
  </file>
  <file>
   /usr/include/c++/3.2.2/iosfwd
  </file>
  <file>
   /usr/include/_G_config.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_threads.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_construct.h
  </file>
  <file>
   /usr/include/signal.h
  </file>
  <file>
   /usr/include/sys/cdefs.h
  </file>
  <file>
   /usr/include/c++/3.2.2/i386-redhat-linux/bits/gthr-default.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_uninitialized.h
  </file>
  <file>
   /usr/include/c++/3.2.2/new
  </file>
  <file>
   /usr/include/bits/posix2_lim.h
  </file>
  <file>
   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stddef.h
  </file>
  <file>
   /usr/include/string.h
  </file>
  <file>
   /usr/include/c++/3.2.2/i386-redhat-linux/bits/atomicity.h
  </file>
  <file>
   /usr/include/stdlib.h
  </file>
  <file>
   /usr/include/c++/3.2.2/cstdlib
  </file>
  <file>
   /usr/include/c++/3.2.2/i386-redhat-linux/bits/c++io.h
  </file>
  <file>
   /usr/include/gnu/stubs.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/functexcept.h
  </file>
  <file>
   /usr/include/bits/waitflags.h
  </file>
  <file>
   /usr/include/c++/3.2.2/i386-redhat-linux/bits/gthr.h
  </file>
  <file>
   /usr/include/bits/waitstatus.h
  </file>
  <file>
   /usr/include/bits/endian.h
  </file>
  <file>
   /usr/include/limits.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_vector.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stringfwd.h
  </file>
  <file>
   /usr/include/bits/posix1_lim.h
  </file>
  <file>
   /usr/include/bits/typesizes.h
  </file>
  <file>
   /usr/include/bits/sched.h
  </file>
  <file>
   /usr/include/pthread.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_iterator.h
  </file>
  <file>
   /usr/include/wchar.h
  </file>
  <file>
   /usr/include/c++/3.2.2/climits
  </file>
  <file>
   /usr/include/libio.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_algobase.h
  </file>
  <file>
   /usr/include/bits/wchar.h
  </file>
  <file>
   /usr/include/features.h
  </file>
  <file>
   /usr/include/bits/sys_errlist.h
  </file>
  <file>
   /usr/include/bits/pthreadtypes.h
  </file>
  <file>
   /usr/include/c++/3.2.2/exception_defines.h
  </file>
  <file>
   /usr/include/bits/select.h
  </file>
  <file>
   /usr/include/alloca.h
  </file>
  <file>
   /usr/include/c++/3.2.2/ctime
  </file>
  <file>
   /usr/include/bits/types.h
  </file>
  <file>
   /usr/include/c++/3.2.2/cwchar
  </file>
  <file>
   /usr/include/c++/3.2.2/cassert
  </file>
  <file>
   /usr/include/bits/stdio_lim.h
  </file>
  <file>
   /usr/include/bits/initspin.h
  </file>
  <file>
   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stdarg.h
  </file>
  <file>
   Parsers/Cxx/input/std.cc
  </file>
  <file>
   /usr/include/bits/time.h
  </file>
  <file>
   /usr/include/time.h
  </file>
  <file>
   /usr/include/linux/limits.h
  </file>
  <file>
   /usr/include/assert.h
  </file>
  <file>
   /usr/include/c++/3.2.2/i386-redhat-linux/bits/os_defines.h
  </file>
  <file>
   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/limits.h
  </file>
  <file>
   /usr/include/gconv.h
  </file>
  <file>
   /usr/include/sys/types.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/type_traits.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/concept_check.h
  </file>
  <file>
   /usr/include/endian.h
  </file>
  <file>
   /usr/include/sched.h
  </file>
  <file>
   /usr/include/bits/wordsize.h
  </file>
  <file>
   /usr/include/c++/3.2.2/vector
  </file>
  <file>
   /usr/include/sys/select.h
  </file>
  <file>
   /usr/include/c++/3.2.2/cstdio
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_iterator_base_types.h
  </file>
  <file>
   /usr/include/c++/3.2.2/bits/stl_pair.h
  </file>
  <file>
   /usr/include/c++/3.2.2/cstring
  </file>
  <file>
   /usr/include/stdio.h
  </file>
  <file>
   /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/syslimits.h
  </file>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="/group/fresco/local/include/c++/3.3/bits/vector.tcc" line="0" name="std" type="namespace">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // namespace std 
     </item>
     <item>
      // Local Variables:
// mode:C++
// End:
     </item>
     <item>
      // Vector implementation (out of line) -*- C++ -*-
     </item>
     <item>
      // Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
     </item>
     <item>
      // This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
     </item>
     <item>
      // You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
     </item>
     <item>
      // As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
     </item>
     <item>
      /*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Hewlett-Packard Company makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 *
 *
 * Copyright (c) 1996
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this  software for any
 * purpose.  It is provided &quot;as is&quot; without express or implied warranty.
 */
     </item>
     <item>
      /** @file vector.tcc
 *  This is an internal header file, included by other library headers.
 *  You should not attempt to use it directly.
 */
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="/group/fresco/local/include/c++/3.3/bits/stl_iterator.h" line="0" name="__gnu_cxx" type="namespace">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // namespace std
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/std.cc" line="0" name="Foo" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/std.cc" line="5" name="Foo.func(std::vector&lt;int&gt;)" realname="func" type="function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="array" value="">
         <type>
          <instance class="Synopsis.Type.Parametrized" language="C++">
           <parameters>
            <item>
             <instance class="Synopsis.Type.Base" language="C++" name="int"/>
            </item>
           </parameters>
           <template>
            <instance class="Synopsis.Type.Unknown" language="C++" name="std.vector">
             <link>
              <item>
               std
              </item>
              <item>
               vector
              </item>
             </link>
            </instance>
           </template>
          </instance>
         </type>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/std.cc" line="5" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // namespace std
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Unknown" language="C++" name="__gnu_cxx">
   <link>
    <item>
     __gnu_cxx
    </item>
   </link>
  </instance>
  <instance class="Synopsis.Type.Unknown" language="C++" name="std">
   <link>
    <item>
     std
    </item>
   </link>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.func(std::vector&lt;int&gt;)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/atomicity.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/clocale" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/c++io.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_iterator.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/gthr-default.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/libio.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/locale.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/ctime" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/sigset.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_threads.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_vector.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstddef" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/locale.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/_G_config.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/sched.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_uninitialized.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/sys/types.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/stdlib.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/new" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/xlocale.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_alloc.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/ctype.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/gconv.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/waitstatus.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_construct.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/string.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cwchar" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/bits/sigthread.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/fpos.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstring" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/sched.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_iterator_base_types.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/iosfwd" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/time.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/stddef.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_pair.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstdlib" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/type_traits.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/stdio.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/vector" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/time.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/sys/select.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/alloca.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/vector.tcc" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/types.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/unistd.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/getopt.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/std.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes>
    <item>
     <instance class="Synopsis.SourceFile.Include" is_macro="0" is_next="0" name="&lt;vector&gt;">
      <target/>
     </instance>
    </item>
   </includes>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/confname.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_iterator_base_funcs.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_algobase.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/bits/pthreadtypes.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cctype" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stl_bvector.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/stringfwd.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/i686-pc-linux-gnu/bits/c++locale.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/pthread.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/bits/functexcept.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/exception" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/usr/include/wchar.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/include/c++/3.3/cstdio" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/fresco/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include/stdarg.h" primary="False">
   <declarations/>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.stdarg

Annotation Value
qmtest.cause
   "error reading expected output"
  
qmtest.expected_cause
   "error reading expected output"
  
qmtest.expected_outcome
   "FAIL"
  
synopsis_test.error
   "No such file or directory"
  

Parsers.Cxx.template

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,161 +1,331 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" language="C++" line="1" name="Object" type="struct">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" line="1" name="Object" type="struct">
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" language="C++" line="3" name="Object.f" type="data member">
-     <vtype>
-      <instance class="Synopsis.Type.Base" language="C++" name="float"/>
-     </vtype>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="4" name="Object.func()" realname="func" type="member function">
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="double"/>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="5" name="Object.Object()" realname="Object" type="member function"/>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="6" name="Object.Object(const Object&amp;)" realname="Object" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias>
-          <instance class="Synopsis.Type.Declared" language="C++" name="Object">
-           <declaration/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" line="3" name="Object.f" type="data member">
+      <vtype>
+       <instance class="Synopsis.Type.Base" language="C++" name="float"/>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="4" name="Object.func()" realname="func" type="member function">
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="double"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="5" name="Object.Object()" realname="Object" type="member function">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="6" name="Object.Object(const Object&amp;)" realname="Object" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias>
+            <instance class="Synopsis.Type.Declared" language="C++" name="Object">
+             <declaration/>
+            </instance>
+           </alias>
+           <postmod>
+            <item>
+             &amp;
+            </item>
+           </postmod>
+           <premod>
+            <item>
+             const
+            </item>
+           </premod>
           </instance>
-         </alias>
-         <postmod>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="7" name="Object.operator=(const Object&amp;)" realname="operator=" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             &amp;
+            </item>
+           </postmod>
+           <premod>
+            <item>
+             const
+            </item>
+           </premod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
           &amp;
-         </postmod>
-         <premod>
-          const
-         </premod>
-        </instance>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="7" name="Object.operator=(const Object&amp;)" realname="operator=" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          &amp;
-         </postmod>
-         <premod>
-          const
-         </premod>
-        </instance>
-       </type>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        &amp;
-       </postmod>
-      </instance>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" language="C++" line="7" name="EOS" type="EOS"/>
+         </item>
+        </postmod>
+       </instance>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" line="7" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" language="C++" line="11" name="list" type="class">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" line="11" name="list" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        typename
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
-       </type>
-      </instance>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          typename
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
+        </type>
+       </instance>
+      </item>
      </parameters>
     </instance>
    </template>
    <declarations>
-    <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" language="C++" line="13" name="list.m_array" type="data member">
-     <vtype>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        *
-       </postmod>
-      </instance>
-     </vtype>
-    </instance>
-    <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" language="C++" line="14" name="list.m_size" type="data member">
-     <vtype>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </vtype>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="16" name="list.list()" realname="list" type="member function"/>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="17" name="list.list(T*)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
+    <item>
+     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" line="13" name="list.m_array" type="data member">
+      <vtype>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
           *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="19" name="list.operator[](int)" realname="operator[]" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="index" value="">
-       <type/>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias/>
-       <postmod>
-        &amp;
-       </postmod>
-      </instance>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="20" name="list.size()" realname="size" type="member function">
-     <returnType/>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="22" name="list.replace(int,const T&amp;)" realname="replace" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="index" value="">
-       <type/>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="with" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
+         </item>
+        </postmod>
+       </instance>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" line="14" name="list.m_size" type="data member">
+      <vtype>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="16" name="list.list()" realname="list" type="member function">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="17" name="list.list(T*)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="19" name="list.operator[](int)" realname="operator[]" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="index" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias/>
+        <postmod>
+         <item>
           &amp;
-         </postmod>
-         <premod>
-          const
-         </premod>
-        </instance>
-       </type>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-     </returnType>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" language="C++" line="22" name="EOS" type="EOS"/>
+         </item>
+        </postmod>
+       </instance>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="20" name="list.size()" realname="size" type="member function">
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="22" name="list.replace(int,const T&amp;)" realname="replace" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="index" value="">
+         <type/>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="with" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             &amp;
+            </item>
+           </postmod>
+           <premod>
+            <item>
+             const
+            </item>
+           </premod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" line="22" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/template.cc" language="C++" line="25" name="main()" realname="main" type="function">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/template.cc" line="25" name="main()" realname="main" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -209,8 +379,27 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/template.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/template.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" language="C++" line="1" name="Object" type="struct">
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" language="C++" line="3" name="Object.f" type="data member">
     <vtype>
      <instance class="Synopsis.Type.Base" language="C++" name="float"/>
     </vtype>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="4" name="Object.func()" realname="func" type="member function">
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="double"/>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="5" name="Object.Object()" realname="Object" type="member function"/>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="6" name="Object.Object(const Object&amp;)" realname="Object" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias>
          <instance class="Synopsis.Type.Declared" language="C++" name="Object">
           <declaration/>
          </instance>
         </alias>
         <postmod>
          &amp;
         </postmod>
         <premod>
          const
         </premod>
        </instance>
       </type>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="7" name="Object.operator=(const Object&amp;)" realname="operator=" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          &amp;
         </postmod>
         <premod>
          const
         </premod>
        </instance>
       </type>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        &amp;
       </postmod>
      </instance>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" language="C++" line="7" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" language="C++" line="11" name="list" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        typename
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <declarations>
    <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" language="C++" line="13" name="list.m_array" type="data member">
     <vtype>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        *
       </postmod>
      </instance>
     </vtype>
    </instance>
    <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" language="C++" line="14" name="list.m_size" type="data member">
     <vtype>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </vtype>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="16" name="list.list()" realname="list" type="member function"/>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="17" name="list.list(T*)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="19" name="list.operator[](int)" realname="operator[]" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="index" value="">
       <type/>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias/>
       <postmod>
        &amp;
       </postmod>
      </instance>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="20" name="list.size()" realname="size" type="member function">
     <returnType/>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" language="C++" line="22" name="list.replace(int,const T&amp;)" realname="replace" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="index" value="">
       <type/>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="with" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          &amp;
         </postmod>
         <premod>
          const
         </premod>
        </instance>
       </type>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
     </returnType>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" language="C++" line="22" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/template.cc" language="C++" line="25" name="main()" realname="main" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.Object()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.Object(const Object&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.func()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.operator=(const Object&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list(T*)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.m_array">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.m_size">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.operator[](int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.replace(int,const T&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.size()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="main()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/template.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" line="1" name="Object" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" line="3" name="Object.f" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="float"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="4" name="Object.func()" realname="func" type="member function">
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="double"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="5" name="Object.Object()" realname="Object" type="member function">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="6" name="Object.Object(const Object&amp;)" realname="Object" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias>
            <instance class="Synopsis.Type.Declared" language="C++" name="Object">
             <declaration/>
            </instance>
           </alias>
           <postmod>
            <item>
             &amp;
            </item>
           </postmod>
           <premod>
            <item>
             const
            </item>
           </premod>
          </instance>
         </type>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="7" name="Object.operator=(const Object&amp;)" realname="operator=" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             &amp;
            </item>
           </postmod>
           <premod>
            <item>
             const
            </item>
           </premod>
          </instance>
         </type>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          &amp;
         </item>
        </postmod>
       </instance>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" line="7" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template.cc" line="11" name="list" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          typename
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" line="13" name="list.m_array" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          *
         </item>
        </postmod>
       </instance>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/template.cc" line="14" name="list.m_size" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="16" name="list.list()" realname="list" type="member function">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="17" name="list.list(T*)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="19" name="list.operator[](int)" realname="operator[]" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="index" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias/>
        <postmod>
         <item>
          &amp;
         </item>
        </postmod>
       </instance>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="20" name="list.size()" realname="size" type="member function">
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template.cc" line="22" name="list.replace(int,const T&amp;)" realname="replace" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="index" value="">
         <type/>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="with" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             &amp;
            </item>
           </postmod>
           <premod>
            <item>
             const
            </item>
           </premod>
          </instance>
         </type>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template.cc" line="22" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/template.cc" line="25" name="main()" realname="main" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.Object()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.Object(const Object&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.func()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Object.operator=(const Object&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list(T*)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.m_array">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.m_size">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.operator[](int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.replace(int,const T&amp;)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.size()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="main()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/template.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.template_spec

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,108 +1,195 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="3" name="list" type="class">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" line="3" name="list" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        typename
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
-       </type>
-      </instance>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          typename
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
+        </type>
+       </instance>
+      </item>
      </parameters>
     </instance>
    </template>
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/template_spec.cc" line="1" suspect="0">
-     <text>
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" line="6" name="list.list(T*,int)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
+         <type>
+          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" line="6" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template specializations
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="6" name="list.list(T*,int)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
-       <type>
-        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-       </type>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="6" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="10" name="list&lt;void&gt;" type="class">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" line="10" name="list&lt;void&gt;" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list&lt;void&gt;">
      <declaration/>
     </instance>
    </template>
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="13" name="list&lt;void&gt;.list(void*,int)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias>
-          <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-         </alias>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="13" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="17" name="list&lt;int&gt;" type="class">
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" line="13" name="list&lt;void&gt;.list(void*,int)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias>
+            <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+           </alias>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" line="13" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" line="17" name="list&lt;int&gt;" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list&lt;int&gt;">
      <declaration/>
     </instance>
    </template>
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="20" name="list&lt;int&gt;.list(int*,int)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="20" name="EOS" type="EOS"/>
-   </declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" line="20" name="list&lt;int&gt;.list(int*,int)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" line="20" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -129,8 +216,19 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/template_spec.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/template_spec.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="3" name="list" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        typename
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/template_spec.cc" line="1" suspect="0">
     <text>
      // Test template specializations

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="6" name="list.list(T*,int)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
       <type>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </type>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="6" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="10" name="list&lt;void&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;void&gt;">
     <declaration/>
    </instance>
   </template>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="13" name="list&lt;void&gt;.list(void*,int)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias>
          <instance class="Synopsis.Type.Base" language="C++" name="void"/>
         </alias>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
       <type/>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="13" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="17" name="list&lt;int&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;int&gt;">
     <declaration/>
    </instance>
   </template>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="20" name="list&lt;int&gt;.list(int*,int)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
       <type/>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" language="C++" line="20" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list(T*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int&gt;.list(int*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;void&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;void&gt;.list(void*,int)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/template_spec.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" line="3" name="list" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          typename
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" line="6" name="list.list(T*,int)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
         <type>
          <instance class="Synopsis.Type.Base" language="C++" name="int"/>
         </type>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" line="6" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template specializations
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" line="10" name="list&lt;void&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;void&gt;">
     <declaration/>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" line="13" name="list&lt;void&gt;.list(void*,int)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias>
            <instance class="Synopsis.Type.Base" language="C++" name="void"/>
           </alias>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" line="13" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec.cc" line="17" name="list&lt;int&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;int&gt;">
     <declaration/>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec.cc" line="20" name="list&lt;int&gt;.list(int*,int)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec.cc" line="20" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list(T*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int&gt;.list(int*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;void&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;void&gt;.list(void*,int)">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/template_spec.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.template_spec2

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,135 +1,254 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="3" name="list" type="class">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" line="3" name="list" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        typename
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="I" value="4">
-       <type>
-        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-       </type>
-      </instance>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          typename
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
+        </type>
+       </instance>
+      </item>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="I" value="4">
+        <type>
+         <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+        </type>
+       </instance>
+      </item>
      </parameters>
     </instance>
    </template>
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/template_spec2.cc" line="1" suspect="0">
-     <text>
+   <declarations>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="6" name="list.list(T*,int)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="7" name="list.size()" realname="size" type="member function">
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" line="7" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // Test template specializations #2
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="6" name="list.list(T*,int)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="7" name="list.size()" realname="size" type="member function">
-     <returnType/>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="7" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="11" name="list&lt;T,0&gt;" type="class">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" line="11" name="list&lt;T,0&gt;" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list&lt;T,0&gt;">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <premodifier>
-        typename
-       </premodifier>
-       <type>
-        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
-       </type>
-      </instance>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="" value="">
+        <premodifier>
+         <item>
+          typename
+         </item>
+        </premodifier>
+        <type>
+         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
+        </type>
+       </instance>
+      </item>
      </parameters>
     </instance>
    </template>
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="14" name="list&lt;T,0&gt;.list(void*,int)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias>
-          <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-         </alias>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="15" name="list&lt;T,0&gt;.size()" realname="size" type="member function">
-     <returnType/>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="15" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="14" name="list&lt;T,0&gt;.list(void*,int)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias>
+            <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+           </alias>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="15" name="list&lt;T,0&gt;.size()" realname="size" type="member function">
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" line="15" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="19" name="list&lt;int,I&gt;" type="class">
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" line="19" name="list&lt;int,I&gt;" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="list&lt;int,I&gt;">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="I" value="">
-       <type/>
-      </instance>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="I" value="">
+        <type/>
+       </instance>
+      </item>
      </parameters>
     </instance>
    </template>
    <declarations>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="22" name="list&lt;int,I&gt;.list(int*,int)" realname="list" type="member function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Modifier" language="C++">
-         <alias/>
-         <postmod>
-          *
-         </postmod>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
-       <type/>
-      </instance>
-     </parameters>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="23" name="list&lt;int,I&gt;.size()" realname="size" type="member function">
-     <returnType/>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="23" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="22" name="list&lt;int,I&gt;.list(int*,int)" realname="list" type="member function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Modifier" language="C++">
+           <alias/>
+           <postmod>
+            <item>
+             *
+            </item>
+           </postmod>
+          </instance>
+         </type>
+        </instance>
+       </item>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="23" name="list&lt;int,I&gt;.size()" realname="size" type="member function">
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" line="23" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -165,8 +284,22 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/template_spec2.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/template_spec2.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="3" name="list" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        typename
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="I" value="4">
       <type>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/template_spec2.cc" line="1" suspect="0">
     <text>
      // Test template specializations #2

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="6" name="list.list(T*,int)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
       <type/>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="7" name="list.size()" realname="size" type="member function">
     <returnType/>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="7" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="11" name="list&lt;T,0&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;T,0&gt;">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <premodifier>
        typename
       </premodifier>
       <type>
        <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="14" name="list&lt;T,0&gt;.list(void*,int)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias>
          <instance class="Synopsis.Type.Base" language="C++" name="void"/>
         </alias>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
       <type/>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="15" name="list&lt;T,0&gt;.size()" realname="size" type="member function">
     <returnType/>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="15" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="19" name="list&lt;int,I&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;int,I&gt;">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="I" value="">
       <type/>
      </instance>
     </parameters>
    </instance>
   </template>
   <declarations>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="22" name="list&lt;int,I&gt;.list(int*,int)" realname="list" type="member function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Modifier" language="C++">
         <alias/>
         <postmod>
          *
         </postmod>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="size" value="">
       <type/>
      </instance>
     </parameters>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="23" name="list&lt;int,I&gt;.size()" realname="size" type="member function">
     <returnType/>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" language="C++" line="23" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list(T*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.size()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;T,0&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;T,0&gt;.list(void*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;T,0&gt;.size()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int,I&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int,I&gt;.list(int*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int,I&gt;.size()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/template_spec2.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" line="3" name="list" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          typename
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
        </type>
       </instance>
      </item>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="I" value="4">
        <type>
         <instance class="Synopsis.Type.Base" language="C++" name="int"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="6" name="list.list(T*,int)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="7" name="list.size()" realname="size" type="member function">
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" line="7" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // Test template specializations #2
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" line="11" name="list&lt;T,0&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;T,0&gt;">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="" value="">
        <premodifier>
         <item>
          typename
         </item>
        </premodifier>
        <type>
         <instance class="Synopsis.Type.Dependent" language="C++" name="T"/>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="14" name="list&lt;T,0&gt;.list(void*,int)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias>
            <instance class="Synopsis.Type.Base" language="C++" name="void"/>
           </alias>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="15" name="list&lt;T,0&gt;.size()" realname="size" type="member function">
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" line="15" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/template_spec2.cc" line="19" name="list&lt;int,I&gt;" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="list&lt;int,I&gt;">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="I" value="">
        <type/>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="22" name="list&lt;int,I&gt;.list(int*,int)" realname="list" type="member function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Modifier" language="C++">
           <alias/>
           <postmod>
            <item>
             *
            </item>
           </postmod>
          </instance>
         </type>
        </instance>
       </item>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="size" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Operation" file="Parsers/Cxx/input/template_spec2.cc" line="23" name="list&lt;int,I&gt;.size()" realname="size" type="member function">
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/template_spec2.cc" line="23" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.list(T*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list.size()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;T,0&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;T,0&gt;.list(void*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;T,0&gt;.size()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int,I&gt;">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int,I&gt;.list(int*,int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="list&lt;int,I&gt;.size()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/template_spec2.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.try

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,10 +1,16 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/try.cc" language="C++" line="1" name="func()" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/try.cc" line="1" name="func()" realname="func" type="function">
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -13,8 +19,11 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/try.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/try.cc" primary="1">
+   <declarations>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/try.cc" language="C++" line="1" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/try.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/try.cc" line="1" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/try.cc" primary="1">
   <declarations>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.typename

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,97 +1,148 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/typename.cc" language="C++" line="2" name="crc_optimal" type="class">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/typename.cc" line="2" name="crc_optimal" type="class">
    <template>
     <instance class="Synopsis.Type.Template" language="C++" name="crc_optimal">
      <declaration/>
      <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="Bits" value="">
-       <type>
-        <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
-         <link>
-          std
-          size_t
-         </link>
-        </instance>
-       </type>
-      </instance>
-      <instance class="Synopsis.AST.Parameter" identifier="TruncPoly" value="">
-       <type>
-        <instance class="Synopsis.Type.Unknown" language="C++" name="::boost::uint_t::fast">
-         <link>
-          ::boost::uint_t::fast
-         </link>
-        </instance>
-       </type>
-      </instance>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="Bits" value="">
+        <type>
+         <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
+          <link>
+           <item>
+            std
+           </item>
+           <item>
+            size_t
+           </item>
+          </link>
+         </instance>
+        </type>
+       </instance>
+      </item>
+      <item>
+       <instance class="Synopsis.AST.Parameter" identifier="TruncPoly" value="">
+        <type>
+         <instance class="Synopsis.Type.Unknown" language="C++" name="::boost::uint_t::fast">
+          <link>
+           <item>
+            ::boost::uint_t::fast
+           </item>
+          </link>
+         </instance>
+        </type>
+       </instance>
+      </item>
      </parameters>
     </instance>
    </template>
    <declarations>
-    <instance accessibility="3" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" language="C++" line="5" name="crc_optimal.masking_type" type="typedef">
-     <comments>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/typename.cc" line="4" suspect="0">
-       <text>
-        // Implementation type
-
-       </text>
-      </instance>
-     </comments>
-     <alias>
-      <instance class="Synopsis.Type.Unknown" language="C++" name="detail.mask_uint_t">
-       <link>
-        detail
-        mask_uint_t
-       </link>
-      </instance>
-     </alias>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" language="C++" line="9" name="crc_optimal.value_type" type="typedef">
-     <comments>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/typename.cc" line="8" suspect="0">
-       <text>
-        // Type
-
-       </text>
-      </instance>
-     </comments>
-     <alias>
-      <instance class="Synopsis.Type.Unknown" language="C++" name="masking_type.fast">
-       <link>
-        masking_type
-        fast
-       </link>
-      </instance>
-     </alias>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/typename.cc" language="C++" line="12" name="crc_optimal.bit_count" type="data member">
-     <comments>
-      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/typename.cc" line="11" suspect="0">
-       <text>
-        // Constants for the template parameters
-
-       </text>
-      </instance>
-     </comments>
-     <vtype>
-      <instance class="Synopsis.Type.Modifier" language="C++">
-       <alias>
-        <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
-         <link>
-          std
-          size_t
-         </link>
-        </instance>
-       </alias>
-       <premod>
-        const
-       </premod>
-      </instance>
-     </vtype>
-    </instance>
-    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/typename.cc" language="C++" line="11" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="3" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" line="5" name="crc_optimal.masking_type" type="typedef">
+      <alias>
+       <instance class="Synopsis.Type.Unknown" language="C++" name="detail.mask_uint_t">
+        <link>
+         <item>
+          detail
+         </item>
+         <item>
+          mask_uint_t
+         </item>
+        </link>
+       </instance>
+      </alias>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value>
+        <item>
+         // Implementation type
+        </item>
+       </value>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" line="9" name="crc_optimal.value_type" type="typedef">
+      <alias>
+       <instance class="Synopsis.Type.Unknown" language="C++" name="masking_type.fast">
+        <link>
+         <item>
+          masking_type
+         </item>
+         <item>
+          fast
+         </item>
+        </link>
+       </instance>
+      </alias>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value>
+        <item>
+         // Type
+        </item>
+       </value>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/typename.cc" line="12" name="crc_optimal.bit_count" type="data member">
+      <vtype>
+       <instance class="Synopsis.Type.Modifier" language="C++">
+        <alias>
+         <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
+          <link>
+           <item>
+            std
+           </item>
+           <item>
+            size_t
+           </item>
+          </link>
+         </instance>
+        </alias>
+        <premod>
+         <item>
+          const
+         </item>
+        </premod>
+       </instance>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value>
+        <item>
+         // Constants for the template parameters
+        </item>
+       </value>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/typename.cc" line="12" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -112,8 +163,15 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/typename.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/typename.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/typename.cc" language="C++" line="2" name="crc_optimal" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="crc_optimal">
     <declaration/>
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="Bits" value="">
       <type>
        <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
         <link>
          std
          size_t
         </link>
        </instance>
       </type>
      </instance>
      <instance class="Synopsis.AST.Parameter" identifier="TruncPoly" value="">
       <type>
        <instance class="Synopsis.Type.Unknown" language="C++" name="::boost::uint_t::fast">
         <link>
          ::boost::uint_t::fast
         </link>
        </instance>
       </type>
      </instance>
     </parameters>
    </instance>
   </template>
   <declarations>
    <instance accessibility="3" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" language="C++" line="5" name="crc_optimal.masking_type" type="typedef">
     <comments>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/typename.cc" line="4" suspect="0">
       <text>
        // Implementation type

       </text>
      </instance>
     </comments>
     <alias>
      <instance class="Synopsis.Type.Unknown" language="C++" name="detail.mask_uint_t">
       <link>
        detail
        mask_uint_t
       </link>
      </instance>
     </alias>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" language="C++" line="9" name="crc_optimal.value_type" type="typedef">
     <comments>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/typename.cc" line="8" suspect="0">
       <text>
        // Type

       </text>
      </instance>
     </comments>
     <alias>
      <instance class="Synopsis.Type.Unknown" language="C++" name="masking_type.fast">
       <link>
        masking_type
        fast
       </link>
      </instance>
     </alias>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/typename.cc" language="C++" line="12" name="crc_optimal.bit_count" type="data member">
     <comments>
      <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/typename.cc" line="11" suspect="0">
       <text>
        // Constants for the template parameters

       </text>
      </instance>
     </comments>
     <vtype>
      <instance class="Synopsis.Type.Modifier" language="C++">
       <alias>
        <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
         <link>
          std
          size_t
         </link>
        </instance>
       </alias>
       <premod>
        const
       </premod>
      </instance>
     </vtype>
    </instance>
    <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/typename.cc" language="C++" line="11" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal.bit_count">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal.masking_type">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal.value_type">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/typename.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Parsers/Cxx/input/typename.cc" line="2" name="crc_optimal" type="class">
   <template>
    <instance class="Synopsis.Type.Template" language="C++" name="crc_optimal">
     <declaration/>
     <parameters>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="Bits" value="">
        <type>
         <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
          <link>
           <item>
            std
           </item>
           <item>
            size_t
           </item>
          </link>
         </instance>
        </type>
       </instance>
      </item>
      <item>
       <instance class="Synopsis.AST.Parameter" identifier="TruncPoly" value="">
        <type>
         <instance class="Synopsis.Type.Unknown" language="C++" name="::boost::uint_t::fast">
          <link>
           <item>
            ::boost::uint_t::fast
           </item>
          </link>
         </instance>
        </type>
       </instance>
      </item>
     </parameters>
    </instance>
   </template>
   <declarations>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" line="5" name="crc_optimal.masking_type" type="typedef">
      <alias>
       <instance class="Synopsis.Type.Unknown" language="C++" name="detail.mask_uint_t">
        <link>
         <item>
          detail
         </item>
         <item>
          mask_uint_t
         </item>
        </link>
       </instance>
      </alias>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         // Implementation type
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Typedef" constr="0" file="Parsers/Cxx/input/typename.cc" line="9" name="crc_optimal.value_type" type="typedef">
      <alias>
       <instance class="Synopsis.Type.Unknown" language="C++" name="masking_type.fast">
        <link>
         <item>
          masking_type
         </item>
         <item>
          fast
         </item>
        </link>
       </instance>
      </alias>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         // Type
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/typename.cc" line="12" name="crc_optimal.bit_count" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Modifier" language="C++">
        <alias>
         <instance class="Synopsis.Type.Unknown" language="C++" name="std.size_t">
          <link>
           <item>
            std
           </item>
           <item>
            size_t
           </item>
          </link>
         </instance>
        </alias>
        <premod>
         <item>
          const
         </item>
        </premod>
       </instance>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         // Constants for the template parameters
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/typename.cc" line="12" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal.bit_count">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal.masking_type">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="crc_optimal.value_type">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/typename.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.using

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,29 +1,76 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using.cc" language="C++" line="0" name="Foo" type="namespace">
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using.cc" line="0" name="Foo" type="namespace">
    <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using.cc" language="C++" line="3" name="Foo.x" type="namespace variable">
-     <vtype>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </vtype>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using.cc" language="C++" line="3" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using.cc" line="3" name="Foo.x" type="namespace variable">
+      <vtype>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using.cc" line="3" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="6" name="func()" realname="func" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="6" name="func()" realname="func" type="function">
    <returnType>
     <instance class="Synopsis.Type.Base" language="C++" name="void"/>
    </returnType>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="12" name="func2()" realname="func2" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="12" name="func2()" realname="func2" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="18" name="func3()" realname="func3" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="18" name="func3()" realname="func3" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="23" name="func4()" realname="func4" type="function">
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="23" name="func4()" realname="func4" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -50,8 +97,17 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using.cc" language="C++" line="0" name="Foo" type="namespace">
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using.cc" language="C++" line="3" name="Foo.x" type="namespace variable">
     <vtype>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </vtype>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using.cc" language="C++" line="3" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="6" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="12" name="func2()" realname="func2" type="function">
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="18" name="func3()" realname="func3" type="function">
   <returnType/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" language="C++" line="23" name="func4()" realname="func4" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.x">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func2()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func3()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func4()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using.cc" line="0" name="Foo" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using.cc" line="3" name="Foo.x" type="namespace variable">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using.cc" line="3" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="6" name="func()" realname="func" type="function">
   <returnType>
    <instance class="Synopsis.Type.Base" language="C++" name="void"/>
   </returnType>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="12" name="func2()" realname="func2" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="18" name="func3()" realname="func3" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using.cc" line="23" name="func4()" realname="func4" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.x">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func2()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func3()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="func4()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.using2

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,55 +1,163 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A" type="namespace">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using2.cc" line="1" suspect="0">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A" type="namespace">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" line="4" name="A.i" type="namespace variable">
+      <vtype>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A.B" type="namespace">
+      <declarations>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A.B.C" type="namespace">
+         <declarations>
+          <item>
+           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" line="9" name="A.B.C.i" type="namespace variable">
+            <vtype/>
+            <annotations>
+             <key>
+              comments
+             </key>
+             <value/>
+            </annotations>
+           </instance>
+          </item>
+          <item>
+           <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="9" name="EOS" type="EOS">
+            <annotations>
+             <key>
+              comments
+             </key>
+             <value/>
+            </annotations>
+           </instance>
+          </item>
+         </declarations>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="12" name="A.B.f1()" realname="f1" type="function">
+         <returnType>
+          <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+         </returnType>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="12" name="EOS" type="EOS">
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+      </declarations>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A.D" type="namespace">
+      <declarations>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="21" name="A.D.f2()" realname="f2" type="function">
+         <returnType/>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="21" name="EOS" type="EOS">
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+      </declarations>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="26" name="A.f3()" realname="f3" type="function">
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="26" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // From C++WD'96 7.4.3.2 Example
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" language="C++" line="4" name="A.i" type="namespace variable">
-     <vtype>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </vtype>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A.B" type="namespace">
-     <declarations>
-      <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A.B.C" type="namespace">
-       <declarations>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" language="C++" line="9" name="A.B.C.i" type="namespace variable">
-         <vtype/>
-        </instance>
-        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="9" name="EOS" type="EOS"/>
-       </declarations>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="12" name="A.B.f1()" realname="f1" type="function">
-       <returnType>
-        <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-       </returnType>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="12" name="EOS" type="EOS"/>
-     </declarations>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A.D" type="namespace">
-     <declarations>
-      <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="21" name="A.D.f2()" realname="f2" type="function">
-       <returnType/>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="21" name="EOS" type="EOS"/>
-     </declarations>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="26" name="A.f3()" realname="f3" type="function">
-     <returnType/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="26" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="32" name="f4()" realname="f4" type="function">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="32" name="f4()" realname="f4" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -88,8 +196,24 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using2.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using2.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A" type="namespace">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using2.cc" line="1" suspect="0">
     <text>
      // From C++WD'96 7.4.3.2 Example

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" language="C++" line="4" name="A.i" type="namespace variable">
     <vtype>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </vtype>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A.B" type="namespace">
     <declarations>
      <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A.B.C" type="namespace">
       <declarations>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" language="C++" line="9" name="A.B.C.i" type="namespace variable">
         <vtype/>
        </instance>
        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="9" name="EOS" type="EOS"/>
       </declarations>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="12" name="A.B.f1()" realname="f1" type="function">
       <returnType>
        <instance class="Synopsis.Type.Base" language="C++" name="void"/>
       </returnType>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="12" name="EOS" type="EOS"/>
     </declarations>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" language="C++" line="0" name="A.D" type="namespace">
     <declarations>
      <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="21" name="A.D.f2()" realname="f2" type="function">
       <returnType/>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="21" name="EOS" type="EOS"/>
     </declarations>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="26" name="A.f3()" realname="f3" type="function">
     <returnType/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" language="C++" line="26" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" language="C++" line="32" name="f4()" realname="f4" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="A">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B.C">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B.C.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B.f1()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.D.f2()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.f3()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f4()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using2.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" line="4" name="A.i" type="namespace variable">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A.B" type="namespace">
      <declarations>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A.B.C" type="namespace">
         <declarations>
          <item>
           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using2.cc" line="9" name="A.B.C.i" type="namespace variable">
            <vtype/>
            <annotations>
             <key>
              comments
             </key>
             <value/>
            </annotations>
           </instance>
          </item>
          <item>
           <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="9" name="EOS" type="EOS">
            <annotations>
             <key>
              comments
             </key>
             <value/>
            </annotations>
           </instance>
          </item>
         </declarations>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="12" name="A.B.f1()" realname="f1" type="function">
         <returnType>
          <instance class="Synopsis.Type.Base" language="C++" name="void"/>
         </returnType>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="12" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using2.cc" line="0" name="A.D" type="namespace">
      <declarations>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="21" name="A.D.f2()" realname="f2" type="function">
         <returnType/>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="21" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="26" name="A.f3()" realname="f3" type="function">
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using2.cc" line="26" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // From C++WD'96 7.4.3.2 Example
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using2.cc" line="32" name="f4()" realname="f4" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="A">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B.C">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B.C.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.B.f1()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.D.f2()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.f3()">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f4()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using2.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.using3

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,107 +1,225 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="A" type="namespace">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="1" suspect="0">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="A" type="namespace">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="4" name="A.i" type="namespace variable">
+      <vtype>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="4" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // From C++WD'96 7.4.3.3 Example 2
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="B" type="namespace">
    <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="4" name="A.i" type="namespace variable">
-     <vtype>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </vtype>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="4" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="9" name="B.i" type="namespace variable">
+      <vtype/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="10" name="B.j" type="namespace variable">
+      <vtype/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="B.C" type="namespace">
+      <declarations>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="B.C.D" type="namespace">
+         <declarations>
+          <item>
+           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="16" name="B.C.D.j" type="namespace variable">
+            <vtype/>
+            <annotations>
+             <key>
+              comments
+             </key>
+             <value/>
+            </annotations>
+           </instance>
+          </item>
+          <item>
+           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="17" name="B.C.D.k" type="namespace variable">
+            <vtype/>
+            <annotations>
+             <key>
+              comments
+             </key>
+             <value/>
+            </annotations>
+           </instance>
+          </item>
+          <item>
+           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="18" name="B.C.D.a" type="namespace variable">
+            <vtype/>
+            <annotations>
+             <key>
+              comments
+             </key>
+             <value/>
+            </annotations>
+           </instance>
+          </item>
+          <item>
+           <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="18" name="EOS" type="EOS">
+            <annotations>
+             <key>
+              comments
+             </key>
+             <value>
+              <item>
+               // B::i hides A::i
+              </item>
+             </value>
+            </annotations>
+           </instance>
+          </item>
+         </declarations>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="21" name="B.C.k" type="namespace variable">
+         <vtype/>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value/>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="22" name="B.C.l" type="namespace variable">
+         <vtype/>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value>
+           <item>
+            // no problem yet
+           </item>
+          </value>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="23" name="B.C.m" type="namespace variable">
+         <vtype/>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value>
+           <item>
+            // ambiguous: C::k or D::k
+           </item>
+          </value>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="24" name="B.C.n" type="namespace variable">
+         <vtype/>
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value>
+           <item>
+            // B::i hides A::i
+           </item>
+          </value>
+         </annotations>
+        </instance>
+       </item>
+       <item>
+        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="24" name="EOS" type="EOS">
+         <annotations>
+          <key>
+           comments
+          </key>
+          <value>
+           <item>
+            // D::j hides B::j
+           </item>
+          </value>
+         </annotations>
+        </instance>
+       </item>
+      </declarations>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="24" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="B" type="namespace">
-   <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="9" name="B.i" type="namespace variable">
-     <vtype/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="10" name="B.j" type="namespace variable">
-     <vtype/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="B.C" type="namespace">
-     <declarations>
-      <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="B.C.D" type="namespace">
-       <declarations>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="16" name="B.C.D.j" type="namespace variable">
-         <vtype/>
-        </instance>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="17" name="B.C.D.k" type="namespace variable">
-         <vtype/>
-        </instance>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="18" name="B.C.D.a" type="namespace variable">
-         <vtype/>
-        </instance>
-        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="18" name="EOS" type="EOS">
-         <comments>
-          <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="18" suspect="0">
-           <text>
-            // B::i hides A::i
-
-           </text>
-          </instance>
-         </comments>
-        </instance>
-       </declarations>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="21" name="B.C.k" type="namespace variable">
-       <vtype/>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="22" name="B.C.l" type="namespace variable">
-       <comments>
-        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="21" suspect="0">
-         <text>
-          // no problem yet
-
-         </text>
-        </instance>
-       </comments>
-       <vtype/>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="23" name="B.C.m" type="namespace variable">
-       <comments>
-        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="22" suspect="0">
-         <text>
-          // ambiguous: C::k or D::k
-
-         </text>
-        </instance>
-       </comments>
-       <vtype/>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="24" name="B.C.n" type="namespace variable">
-       <comments>
-        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="23" suspect="0">
-         <text>
-          // B::i hides A::i
-
-         </text>
-        </instance>
-       </comments>
-       <vtype/>
-      </instance>
-      <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="23" name="EOS" type="EOS">
-       <comments>
-        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="24" suspect="0">
-         <text>
-          // D::j hides B::j
-
-         </text>
-        </instance>
-       </comments>
-      </instance>
-     </declarations>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="24" name="EOS" type="EOS"/>
-   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -152,8 +270,28 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using3.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using3.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="A" type="namespace">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="1" suspect="0">
     <text>
      // From C++WD'96 7.4.3.3 Example 2

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="4" name="A.i" type="namespace variable">
     <vtype>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </vtype>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="4" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="B" type="namespace">
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="9" name="B.i" type="namespace variable">
     <vtype/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="10" name="B.j" type="namespace variable">
     <vtype/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="B.C" type="namespace">
     <declarations>
      <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" language="C++" line="0" name="B.C.D" type="namespace">
       <declarations>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="16" name="B.C.D.j" type="namespace variable">
         <vtype/>
        </instance>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="17" name="B.C.D.k" type="namespace variable">
         <vtype/>
        </instance>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="18" name="B.C.D.a" type="namespace variable">
         <vtype/>
        </instance>
        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="18" name="EOS" type="EOS">
         <comments>
          <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="18" suspect="0">
           <text>
            // B::i hides A::i

           </text>
          </instance>
         </comments>
        </instance>
       </declarations>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="21" name="B.C.k" type="namespace variable">
       <vtype/>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="22" name="B.C.l" type="namespace variable">
       <comments>
        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="21" suspect="0">
         <text>
          // no problem yet

         </text>
        </instance>
       </comments>
       <vtype/>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="23" name="B.C.m" type="namespace variable">
       <comments>
        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="22" suspect="0">
         <text>
          // ambiguous: C::k or D::k

         </text>
        </instance>
       </comments>
       <vtype/>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" language="C++" line="24" name="B.C.n" type="namespace variable">
       <comments>
        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="23" suspect="0">
         <text>
          // B::i hides A::i

         </text>
        </instance>
       </comments>
       <vtype/>
      </instance>
      <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="23" name="EOS" type="EOS">
       <comments>
        <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using3.cc" line="24" suspect="0">
         <text>
          // D::j hides B::j

         </text>
        </instance>
       </comments>
      </instance>
     </declarations>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" language="C++" line="24" name="EOS" type="EOS"/>
   </declarations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="A">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D.a">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D.j">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D.k">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.k">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.l">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.m">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.n">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.j">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using3.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="A" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="4" name="A.i" type="namespace variable">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="4" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // From C++WD'96 7.4.3.3 Example 2
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="B" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="9" name="B.i" type="namespace variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="10" name="B.j" type="namespace variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="B.C" type="namespace">
      <declarations>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using3.cc" line="0" name="B.C.D" type="namespace">
         <declarations>
          <item>
           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="16" name="B.C.D.j" type="namespace variable">
            <vtype/>
            <annotations>
             <key>
              comments
             </key>
             <value/>
            </annotations>
           </instance>
          </item>
          <item>
           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="17" name="B.C.D.k" type="namespace variable">
            <vtype/>
            <annotations>
             <key>
              comments
             </key>
             <value/>
            </annotations>
           </instance>
          </item>
          <item>
           <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="18" name="B.C.D.a" type="namespace variable">
            <vtype/>
            <annotations>
             <key>
              comments
             </key>
             <value/>
            </annotations>
           </instance>
          </item>
          <item>
           <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="18" name="EOS" type="EOS">
            <annotations>
             <key>
              comments
             </key>
             <value>
              <item>
               // B::i hides A::i
              </item>
             </value>
            </annotations>
           </instance>
          </item>
         </declarations>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="21" name="B.C.k" type="namespace variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="22" name="B.C.l" type="namespace variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            // no problem yet
           </item>
          </value>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="23" name="B.C.m" type="namespace variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            // ambiguous: C::k or D::k
           </item>
          </value>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using3.cc" line="24" name="B.C.n" type="namespace variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            // B::i hides A::i
           </item>
          </value>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="24" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            // D::j hides B::j
           </item>
          </value>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using3.cc" line="24" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="A">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="A.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D.a">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D.j">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.D.k">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.k">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.l">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.m">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.C.n">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.i">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="B.j">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using3.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.Cxx.using4

Annotation Value
qmtest.cause
   "incorrect output"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,83 +1,174 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" language="C++" line="0" name="D" type="namespace">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using4.cc" line="1" suspect="0">
-     <text>
-      // From C++WD'96 7.4.3.6 Example
-
-     </text>
-    </instance>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using4.cc" line="16" suspect="0">
-     <text>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" line="0" name="D" type="namespace">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="4" name="D.d1" type="namespace variable">
+      <vtype>
+       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
+      </vtype>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="5" name="D.f(char)" realname="f" type="function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type>
+          <instance class="Synopsis.Type.Base" language="C++" name="char"/>
+         </type>
+        </instance>
+       </item>
+      </parameters>
+      <returnType>
+       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
+      </returnType>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" line="5" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="18" name="D.d2" type="namespace variable">
+      <vtype/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="20" name="D.f(int)" realname="f" type="function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" line="20" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+   </declarations>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // namespace extension
-
-     </text>
-    </instance>
-   </comments>
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="9" name="d1" type="global variable">
+   <vtype/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" line="0" name="E" type="namespace">
    <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="4" name="D.d1" type="namespace variable">
-     <vtype>
-      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
-     </vtype>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="5" name="D.f(char)" realname="f" type="function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type>
-        <instance class="Synopsis.Type.Base" language="C++" name="char"/>
-       </type>
-      </instance>
-     </parameters>
-     <returnType>
-      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
-     </returnType>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" language="C++" line="5" name="EOS" type="EOS"/>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="18" name="D.d2" type="namespace variable">
-     <vtype/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="20" name="D.f(int)" realname="f" type="function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type/>
-      </instance>
-     </parameters>
-     <returnType/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" language="C++" line="20" name="EOS" type="EOS"/>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="12" name="E.e" type="namespace variable">
+      <vtype/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="13" name="E.f(int)" realname="f" type="function">
+      <parameters>
+       <item>
+        <instance class="Synopsis.AST.Parameter" identifier="" value="">
+         <type/>
+        </instance>
+       </item>
+      </parameters>
+      <returnType/>
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" line="13" name="EOS" type="EOS">
+      <annotations>
+       <key>
+        comments
+       </key>
+       <value/>
+      </annotations>
+     </instance>
+    </item>
    </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="9" name="d1" type="global variable">
-   <vtype/>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" language="C++" line="0" name="E" type="namespace">
-   <comments>
-    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using4.cc" line="9" suspect="0">
-     <text>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value>
+     <item>
       // ok, no conflict with D::d1
-
-     </text>
-    </instance>
-   </comments>
-   <declarations>
-    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="12" name="E.e" type="namespace variable">
-     <vtype/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="13" name="E.f(int)" realname="f" type="function">
-     <parameters>
-      <instance class="Synopsis.AST.Parameter" identifier="" value="">
-       <type/>
-      </instance>
-     </parameters>
-     <returnType/>
-    </instance>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" language="C++" line="13" name="EOS" type="EOS"/>
-   </declarations>
-  </instance>
-  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="23" name="f()" realname="f" type="function">
+     </item>
+    </value>
+   </annotations>
+  </instance>
+  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="23" name="f()" realname="f" type="function">
    <returnType/>
+   <annotations>
+    <key>
+     comments
+    </key>
+    <value/>
+   </annotations>
   </instance>
  </declarations>
  <types>
@@ -116,8 +207,23 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using4.cc" is_main="1" language="C++">
-   <declarations/>
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using4.cc" primary="1">
+   <declarations>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+    <item/>
+   </declarations>
+   <includes/>
    <macro_calls/>
   </instance>
  </files>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" language="C++" line="0" name="D" type="namespace">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using4.cc" line="1" suspect="0">
     <text>
      // From C++WD'96 7.4.3.6 Example

     </text>
    </instance>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using4.cc" line="16" suspect="0">
     <text>
      // namespace extension

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="4" name="D.d1" type="namespace variable">
     <vtype>
      <instance class="Synopsis.Type.Base" language="C++" name="int"/>
     </vtype>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="5" name="D.f(char)" realname="f" type="function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type>
        <instance class="Synopsis.Type.Base" language="C++" name="char"/>
       </type>
      </instance>
     </parameters>
     <returnType>
      <instance class="Synopsis.Type.Base" language="C++" name="void"/>
     </returnType>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" language="C++" line="5" name="EOS" type="EOS"/>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="18" name="D.d2" type="namespace variable">
     <vtype/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="20" name="D.f(int)" realname="f" type="function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type/>
      </instance>
     </parameters>
     <returnType/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" language="C++" line="20" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="9" name="d1" type="global variable">
   <vtype/>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" language="C++" line="0" name="E" type="namespace">
   <comments>
    <instance class="Synopsis.AST.Comment" file="Parsers/Cxx/input/using4.cc" line="9" suspect="0">
     <text>
      // ok, no conflict with D::d1

     </text>
    </instance>
   </comments>
   <declarations>
    <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" language="C++" line="12" name="E.e" type="namespace variable">
     <vtype/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="13" name="E.f(int)" realname="f" type="function">
     <parameters>
      <instance class="Synopsis.AST.Parameter" identifier="" value="">
       <type/>
      </instance>
     </parameters>
     <returnType/>
    </instance>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" language="C++" line="13" name="EOS" type="EOS"/>
   </declarations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" language="C++" line="23" name="f()" realname="f" type="function">
   <returnType/>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.d1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.d2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.f(char)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.f(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="E">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="E.e">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="E.f(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="d1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.AST.SourceFile" filename="Parsers/Cxx/input/using4.cc" is_main="1" language="C++">
   <declarations/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" line="0" name="D" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="4" name="D.d1" type="namespace variable">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="5" name="D.f(char)" realname="f" type="function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type>
          <instance class="Synopsis.Type.Base" language="C++" name="char"/>
         </type>
        </instance>
       </item>
      </parameters>
      <returnType>
       <instance class="Synopsis.Type.Base" language="C++" name="void"/>
      </returnType>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" line="5" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="18" name="D.d2" type="namespace variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="20" name="D.f(int)" realname="f" type="function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" line="20" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // namespace extension
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="9" name="d1" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Module" file="Parsers/Cxx/input/using4.cc" line="0" name="E" type="namespace">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Parsers/Cxx/input/using4.cc" line="12" name="E.e" type="namespace variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="13" name="E.f(int)" realname="f" type="function">
      <parameters>
       <item>
        <instance class="Synopsis.AST.Parameter" identifier="" value="">
         <type/>
        </instance>
       </item>
      </parameters>
      <returnType/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Builtin" file="Parsers/Cxx/input/using4.cc" line="13" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      // ok, no conflict with D::d1
     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Function" file="Parsers/Cxx/input/using4.cc" line="23" name="f()" realname="f" type="function">
   <returnType/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="D">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.d1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.d2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.f(char)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="D.f(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="E">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="E.e">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="E.f(int)">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="d1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f()">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Parsers/Cxx/input/using4.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Parsers.IDL.CosLifeCycle

Parsers.IDL.CosNaming

Annotation Value
qmtest.expected_cause
   "unable to run"
  
qmtest.expected_outcome
   "FAIL"
  

Parsers.Python.class

Annotation Value
qmtest.cause
   "unable to run"
  
qmtest.expected_outcome
   "PASS"
  
synopsis_test.command
   "
python Parsers/Python/synopsis.py parse --output=Parsers/Python/output/class.xml /group/synopsis/workspace/Synopsis/tests/Parsers/Python/input/class.py
"
synopsis_test.error
   "
InvalidArgument: "Parsers" is not a package
"

Processors.Comments.groups

Annotation Value
qmtest.cause
   "incorrect output"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,13 +1,13 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="11" name="first group " type="group">
-   <declarations>
-    <item>
-     <instance accessibility="0" class="Synopsis.AST.Class" file="Processors/Comments/input/groups.cc" line="11" name="foo" type="struct">
+  <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="11" name="first group " type="group">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Class" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="11" name="foo" type="struct">
       <declarations>
        <item>
-        <instance accessibility="1" class="Synopsis.AST.Builtin" file="Processors/Comments/input/groups.cc" line="11" name="EOS" type="EOS">
+        <instance accessibility="1" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="11" name="EOS" type="EOS">
          <annotations>
           <key>
            comments
@@ -34,7 +34,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="14" name="test1" type="global variable">
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="14" name="test1" type="global variable">
       <vtype>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </vtype>
@@ -47,7 +47,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="15" name="test2" type="global variable">
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="15" name="test2" type="global variable">
       <vtype/>
       <annotations>
        <key>
@@ -74,7 +74,7 @@
     </value>
    </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="17" name="bar" type="global variable">
+  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="17" name="bar" type="global variable">
    <vtype/>
    <annotations>
     <key>
@@ -83,10 +83,10 @@
     <value/>
    </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="20" name="tests " type="group">
-   <declarations>
-    <item>
-     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="20" name="test3" type="global variable">
+  <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="20" name="tests " type="group">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="20" name="test3" type="global variable">
       <vtype/>
       <annotations>
        <key>
@@ -97,7 +97,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="21" name="test4" type="global variable">
+     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="21" name="test4" type="global variable">
       <vtype/>
       <annotations>
        <key>
@@ -120,13 +120,13 @@
     </value>
    </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="27" name="outer " type="group">
-   <declarations>
-    <item>
-     <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="27" name="inner " type="group">
+  <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="27" name="outer " type="group">
+   <declarations>
+    <item>
+     <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="27" name="inner " type="group">
       <declarations>
        <item>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="27" name="f" type="global variable">
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="27" name="f" type="global variable">
          <vtype/>
          <annotations>
           <key>
@@ -137,7 +137,7 @@
         </instance>
        </item>
        <item>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="29" name="test5" type="global variable">
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="29" name="test5" type="global variable">
          <vtype/>
          <annotations>
           <key>
@@ -152,7 +152,7 @@
         </instance>
        </item>
        <item>
-        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="33" name="test6" type="global variable">
+        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="33" name="test6" type="global variable">
          <vtype/>
          <annotations>
           <key>
@@ -185,7 +185,7 @@
     <value/>
    </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Processors/Comments/input/groups.cc" line="34" name="EOS" type="EOS">
+  <instance accessibility="0" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="34" name="EOS" type="EOS">
    <annotations>
     <key>
      comments
@@ -229,7 +229,7 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Processors/Comments/input/groups.cc" primary="1">
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" primary="1">
    <declarations>
     <item/>
     <item/>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="11" name="first group " type="group">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Class" file="Processors/Comments/input/groups.cc" line="11" name="foo" type="struct">
      <declarations>
       <item>
        <instance accessibility="1" class="Synopsis.AST.Builtin" file="Processors/Comments/input/groups.cc" line="11" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         some comment
extending over multiple lines
        </item>
        <item>
         another comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="14" name="test1" type="global variable">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="15" name="test2" type="global variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      -*- Comments.SSFilter -*-
-*- Comments.Grouper -*-
     </item>
     <item>
      group documentation

     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="17" name="bar" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="20" name="tests " type="group">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="20" name="test3" type="global variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="21" name="test4" type="global variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      another group

     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="27" name="outer " type="group">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Group" file="Processors/Comments/input/groups.cc" line="27" name="inner " type="group">
      <declarations>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="27" name="f" type="global variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="29" name="test5" type="global variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            @group xxx { not a group
           </item>
          </value>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/groups.cc" line="33" name="test6" type="global variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            } and not a group end
}
and not a group either
           </item>
          </value>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="Processors/Comments/input/groups.cc" line="34" name="EOS" type="EOS">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="bar">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test6">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Processors/Comments/input/groups.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="11" name="first group " type="group">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Class" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="11" name="foo" type="struct">
      <declarations>
       <item>
        <instance accessibility="1" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="11" name="EOS" type="EOS">
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         some comment
extending over multiple lines
        </item>
        <item>
         another comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="14" name="test1" type="global variable">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="15" name="test2" type="global variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      -*- Comments.SSFilter -*-
-*- Comments.Grouper -*-
     </item>
     <item>
      group documentation

     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="17" name="bar" type="global variable">
   <vtype/>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="20" name="tests " type="group">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="20" name="test3" type="global variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="21" name="test4" type="global variable">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      another group

     </item>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="27" name="outer " type="group">
   <declarations>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Group" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="27" name="inner " type="group">
      <declarations>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="27" name="f" type="global variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value/>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="29" name="test5" type="global variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            @group xxx { not a group
           </item>
          </value>
         </annotations>
        </instance>
       </item>
       <item>
        <instance accessibility="0" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="33" name="test6" type="global variable">
         <vtype/>
         <annotations>
          <key>
           comments
          </key>
          <value>
           <item>
            } and not a group end
}
and not a group either
           </item>
          </value>
         </annotations>
        </instance>
       </item>
      </declarations>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" line="34" name="EOS" type="EOS">
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="bar">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="f">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test1">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test2">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test3">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test4">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test5">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="test6">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/groups.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Processors.Comments.previous

Annotation Value
qmtest.cause
   "incorrect output"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Processors/Comments/input/previous.cc" line="4" name="Foo" type="struct">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="4" name="Foo" type="struct">
    <declarations>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous.cc" line="6" name="Foo.first" type="data member">
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="6" name="Foo.first" type="data member">
       <vtype>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </vtype>
@@ -17,7 +17,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous.cc" line="7" name="Foo.second" type="data member">
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="7" name="Foo.second" type="data member">
       <vtype/>
       <annotations>
        <key>
@@ -32,7 +32,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous.cc" line="8" name="Foo.third" type="data member">
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="8" name="Foo.third" type="data member">
       <vtype/>
       <annotations>
        <key>
@@ -47,7 +47,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous.cc" line="8" name="EOS" type="EOS">
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="8" name="EOS" type="EOS">
       <annotations>
        <key>
         comments
@@ -74,10 +74,10 @@
     </value>
    </annotations>
   </instance>
-  <instance accessibility="0" class="Synopsis.AST.Enum" file="Processors/Comments/input/previous.cc" line="11" name="Enum" type="enum">
+  <instance accessibility="0" class="Synopsis.AST.Enum" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="11" name="Enum" type="enum">
    <enumerators>
     <item>
-     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="Processors/Comments/input/previous.cc" line="13" name="ONE" type="enumerator" value="">
+     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="13" name="ONE" type="enumerator" value="">
       <annotations>
        <key>
         comments
@@ -87,7 +87,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="Processors/Comments/input/previous.cc" line="14" name="TWO" type="enumerator" value="">
+     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="14" name="TWO" type="enumerator" value="">
       <annotations>
        <key>
         comments
@@ -101,7 +101,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="Processors/Comments/input/previous.cc" line="15" name="THREE" type="enumerator" value="">
+     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="15" name="THREE" type="enumerator" value="">
       <annotations>
        <key>
         comments
@@ -122,7 +122,7 @@
     <value/>
    </annotations>
    <eos>
-    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous.cc" line="15" name="EOS" type="EOS">
+    <instance accessibility="0" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="15" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
@@ -167,7 +167,7 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Processors/Comments/input/previous.cc" primary="1">
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" primary="1">
    <declarations>
     <item/>
     <item/>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Processors/Comments/input/previous.cc" line="4" name="Foo" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous.cc" line="6" name="Foo.first" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous.cc" line="7" name="Foo.second" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          second comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous.cc" line="8" name="Foo.third" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          third comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous.cc" line="8" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         &lt; third comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      -*- Comments.SSFilter -*-
-*- Comments.Previous -*-
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Enum" file="Processors/Comments/input/previous.cc" line="11" name="Enum" type="enum">
   <enumerators>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="Processors/Comments/input/previous.cc" line="13" name="ONE" type="enumerator" value="">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="Processors/Comments/input/previous.cc" line="14" name="TWO" type="enumerator" value="">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          TWO comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="Processors/Comments/input/previous.cc" line="15" name="THREE" type="enumerator" value="">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          THREE comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </enumerators>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
   <eos>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous.cc" line="15" name="EOS" type="EOS">
     <annotations>
      <key>
       comments
      </key>
      <value>
       <item>
        &lt; THREE comment
       </item>
      </value>
     </annotations>
    </instance>
   </eos>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Enum">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.first">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.second">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.third">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="ONE">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="THREE">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="TWO">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Processors/Comments/input/previous.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="4" name="Foo" type="struct">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="6" name="Foo.first" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="7" name="Foo.second" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          second comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="8" name="Foo.third" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          third comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="8" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         &lt; third comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      -*- Comments.SSFilter -*-
-*- Comments.Previous -*-
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
  <instance accessibility="0" class="Synopsis.AST.Enum" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="11" name="Enum" type="enum">
   <enumerators>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="13" name="ONE" type="enumerator" value="">
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="14" name="TWO" type="enumerator" value="">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          TWO comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="0" class="Synopsis.AST.Enumerator" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="15" name="THREE" type="enumerator" value="">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          THREE comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </enumerators>
   <annotations>
    <key>
     comments
    </key>
    <value/>
   </annotations>
   <eos>
    <instance accessibility="0" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" line="15" name="EOS" type="EOS">
     <annotations>
      <key>
       comments
      </key>
      <value>
       <item>
        &lt; THREE comment
       </item>
      </value>
     </annotations>
    </instance>
   </eos>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Enum">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.first">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.second">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.third">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="ONE">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="THREE">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="TWO">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Processors.Comments.previous2

Annotation Value
qmtest.cause
   "incorrect output"
  
synopsis_test.diff
   "
---  
+++  
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
 <ast>
  <declarations>
-  <instance accessibility="0" class="Synopsis.AST.Class" file="Processors/Comments/input/previous2.cc" line="4" name="Foo" type="class">
+  <instance accessibility="0" class="Synopsis.AST.Class" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="4" name="Foo" type="class">
    <declarations>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous2.cc" line="7" name="Foo.first" type="data member">
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="7" name="Foo.first" type="data member">
       <vtype>
        <instance class="Synopsis.Type.Base" language="C++" name="int"/>
       </vtype>
@@ -17,7 +17,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous2.cc" line="8" name="Foo.second" type="data member">
+     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="8" name="Foo.second" type="data member">
       <vtype/>
       <annotations>
        <key>
@@ -32,7 +32,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous2.cc" line="9" name="EOS" type="EOS">
+     <instance accessibility="1" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="9" name="EOS" type="EOS">
       <annotations>
        <key>
         comments
@@ -46,7 +46,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous2.cc" line="10" name="Foo.third" type="data member">
+     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="10" name="Foo.third" type="data member">
       <vtype/>
       <annotations>
        <key>
@@ -57,7 +57,7 @@
      </instance>
     </item>
     <item>
-     <instance accessibility="3" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous2.cc" line="10" name="EOS" type="EOS">
+     <instance accessibility="3" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="10" name="EOS" type="EOS">
       <annotations>
        <key>
         comments
@@ -103,7 +103,7 @@
   </instance>
  </types>
  <files>
-  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Processors/Comments/input/previous2.cc" primary="1">
+  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" primary="1">
    <declarations>
     <item/>
     <item/>
"
synopsis_test.expected
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="Processors/Comments/input/previous2.cc" line="4" name="Foo" type="class">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous2.cc" line="7" name="Foo.first" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous2.cc" line="8" name="Foo.second" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          second comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous2.cc" line="9" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         &lt; second comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="Processors/Comments/input/previous2.cc" line="10" name="Foo.third" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Builtin" file="Processors/Comments/input/previous2.cc" line="10" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         &lt; third comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      -*- Comments.SSFilter -*-
-*- Comments.Previous -*-
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.first">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.second">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.third">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="Processors/Comments/input/previous2.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"
synopsis_test.output
   "
<?xml version='1.0' encoding='ISO-8859-1'?>
<ast>
 <declarations>
  <instance accessibility="0" class="Synopsis.AST.Class" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="4" name="Foo" type="class">
   <declarations>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="7" name="Foo.first" type="data member">
      <vtype>
       <instance class="Synopsis.Type.Base" language="C++" name="int"/>
      </vtype>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="8" name="Foo.second" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
          second comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="1" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="9" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         &lt; second comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Variable" constr="0" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="10" name="Foo.third" type="data member">
      <vtype/>
      <annotations>
       <key>
        comments
       </key>
       <value/>
      </annotations>
     </instance>
    </item>
    <item>
     <instance accessibility="3" class="Synopsis.AST.Builtin" file="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" line="10" name="EOS" type="EOS">
      <annotations>
       <key>
        comments
       </key>
       <value>
        <item>
         &lt; third comment
        </item>
       </value>
      </annotations>
     </instance>
    </item>
   </declarations>
   <annotations>
    <key>
     comments
    </key>
    <value>
     <item>
      -*- Comments.SSFilter -*-
-*- Comments.Previous -*-
     </item>
     <item/>
    </value>
   </annotations>
  </instance>
 </declarations>
 <types>
  <instance class="Synopsis.Type.Declared" language="C++" name="EOS">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.first">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.second">
   <declaration/>
  </instance>
  <instance class="Synopsis.Type.Declared" language="C++" name="Foo.third">
   <declaration/>
  </instance>
 </types>
 <files>
  <instance class="Synopsis.SourceFile.SourceFile" language="C++" name="/group/synopsis/workspace/Synopsis/tests/Processors/Comments/input/previous2.cc" primary="1">
   <declarations>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
   </declarations>
   <includes/>
   <macro_calls/>
  </instance>
 </files>
</ast>
"

Processors.Linker.first

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Processors.Linker.second

Annotation Value
qmtest.expected_outcome
   "PASS"
  

Cxx.TypeAnalysis

Cxx.SymbolLookup

Cxx.Parser

Cxx.Encoding

Cxx.ConstEvaluator