Implemented mixing of declarations and statements in compound statements for C99.
-> In the Compound AST node, decls and stmts were removed and replaced by a single list named block_items (this is an API change!)
diff --git a/tests/test_c_parser.py b/tests/test_c_parser.py
index ef6f85c..532fe26 100644
--- a/tests/test_c_parser.py
+++ b/tests/test_c_parser.py
@@ -136,8 +136,8 @@
             return 0;
         }'''
         f1_1 = self.parse(t1_1, filename='test.c')
-        self.assert_coord(f1_1.ext[0].body.stmts[0], 3, 'test.c')
-        self.assert_coord(f1_1.ext[0].body.stmts[1], 4, 'test.c')
+        self.assert_coord(f1_1.ext[0].body.block_items[0], 3, 'test.c')
+        self.assert_coord(f1_1.ext[0].body.block_items[1], 4, 'test.c')
         
         t2 = """
         #line 99
@@ -350,17 +350,17 @@
         """
         compound = self.parse(e).ext[0].body
         
-        s1 = compound.decls[0].init
+        s1 = compound.block_items[0].init
         self.assertTrue(isinstance(s1, UnaryOp))
         self.assertEqual(s1.op, 'sizeof')
         self.assertTrue(isinstance(s1.expr, ID))
         self.assertEqual(s1.expr.name, 'k')
         
-        s2 = compound.decls[1].init
+        s2 = compound.block_items[1].init
         self.assertEqual(expand_decl(s2.expr),
             ['Typename', ['TypeDecl', ['IdentifierType', ['int']]]])
         
-        s3 = compound.decls[2].init
+        s3 = compound.block_items[2].init
         self.assertEqual(expand_decl(s3.expr),
             ['Typename', 
                 ['PtrDecl', 
@@ -791,8 +791,7 @@
                     [['Decl', 'p', ['TypeDecl', ['IdentifierType', ['int']]]]], 
                     ['TypeDecl', ['IdentifierType', ['int']]]]])
         
-        self.assertEqual(type(f1.body.stmts[0]), Return)
-        self.assertEqual(f1.body.decls, None)
+        self.assertEqual(type(f1.body.block_items[0]), Return)
         
         f2 = parse_fdef('''
         char* zzz(int p, char* c)
@@ -813,9 +812,8 @@
                                         ['TypeDecl', ['IdentifierType', ['char']]]]]], 
                     ['PtrDecl', ['TypeDecl', ['IdentifierType', ['char']]]]]])
             
-        self.assertEqual(list(map(type, f2.body.stmts)), 
-            [Assignment, Return])
-        self.assertEqual(len(f2.body.decls), 2)
+        self.assertEqual(list(map(type, f2.body.block_items)), 
+            [Decl, Decl, Assignment, Return])
         
         f3 = parse_fdef('''
         char* zzz(p, c)
@@ -836,9 +834,8 @@
                         ['ID', 'c']],
                     ['PtrDecl', ['TypeDecl', ['IdentifierType', ['char']]]]]])
         
-        self.assertEqual(list(map(type, f3.body.stmts)), 
-            [Assignment, Return])
-        self.assertEqual(len(f3.body.decls), 2)
+        self.assertEqual(list(map(type, f3.body.block_items)), 
+            [Decl, Decl, Assignment, Return])
         
         self.assertEqual(expand_decl(f3.param_decls[0]),
             ['Decl', 'p', ['TypeDecl', ['IdentifierType', ['long']]]])
@@ -866,7 +863,7 @@
         ''')
         
         self.assertEqual(
-            d3.ext[0].body.stmts[0].args.exprs[1].value,
+            d3.ext[0].body.block_items[0].args.exprs[1].value,
             r'"Wrong Params?\nUsage:\n%s <binary_file_path>\n"')
         
         d4 = self.get_decl_init('char* s = "" "foobar";')
@@ -889,8 +886,8 @@
                 int var2[*];
             }
         ''')
-        self.failUnless(isinstance(ps2.ext[0].body.decls[1].type.dim, Assignment))
-        self.failUnless(isinstance(ps2.ext[0].body.decls[2].type.dim, ID))
+        self.failUnless(isinstance(ps2.ext[0].body.block_items[1].type.dim, Assignment))
+        self.failUnless(isinstance(ps2.ext[0].body.block_items[2].type.dim, ID))
 
 
 class TestCParser_whole_code(unittest.TestCase):