diff --git a/ACSLLogicType.cpp b/ACSLLogicType.cpp
index 58ad1d715ac7af2c00b06294b19ca60ff32aab98..5c83a7a40f4adb48b5c307f7bb4167c3e2559bdb 100644
--- a/ACSLLogicType.cpp
+++ b/ACSLLogicType.cpp
@@ -935,8 +935,8 @@ LogicType::readToken(Parser::State& state, Parser::Arguments& arguments) {
                 }
                 _seenSigned = true;
                 arguments.extendLocationWithToken(_loc);
-                DefineGotoCase(CTypeSuffix)
               }
+              DefineGotoCase(CTypeSuffix)
             }
             case KeywordToken::TLong: {
               if (_typeResult->tag_logic_type == LFLOAT) {
@@ -974,8 +974,8 @@ LogicType::readToken(Parser::State& state, Parser::Arguments& arguments) {
                       "unexpected 'long' type specification")
                 }
                 arguments.extendLocationWithToken(_loc);
-                DefineGotoCase(CTypeSuffix)
               }
+              DefineGotoCase(CTypeSuffix)
             }
             case KeywordToken::TShort: {
               // can only be mixed with signed, unsigned, and int
diff --git a/ACSLTermOrPredicate.cpp b/ACSLTermOrPredicate.cpp
index 2f90271c35a8d37414c2d8b509f421b576a08aff..037be800b744d113b26bc00b251512ef7401070b 100644
--- a/ACSLTermOrPredicate.cpp
+++ b/ACSLTermOrPredicate.cpp
@@ -6133,8 +6133,8 @@ TermOrPredicate::readToken(Parser::State& state, Parser::Arguments& arguments) {
                   arguments.extendLocationWithToken(_loc);
                   if (_doesStopTypeAmbiguity)
                     DefineTReduce;
-                  DefineGotoCase(AfterPrimary)
                 }
+                break;
               case KeywordToken::TAt:
                 if (excludeTypeAsResult()) {
                   _startLocation = arguments.newTokenLocation();
diff --git a/ACSLToken.h b/ACSLToken.h
index b0989a1245e9604704b1f226e208dbf23db9fcea..4c1d72e46db9656c07995807eb209d3e52dce99f 100644
--- a/ACSLToken.h
+++ b/ACSLToken.h
@@ -130,6 +130,10 @@ protected:
 public:
   AbstractToken(Type type) {}
   AbstractToken(const AbstractToken& source) : FormatParameters(source) {}
+  AbstractToken& operator=(const AbstractToken& source)
+    { FormatParameters::operator=(source);
+      return *this;
+    }
   virtual ~AbstractToken() {}
   virtual AbstractToken* clone() const { return _clone(); }
 
diff --git a/AnnotationComment.h b/AnnotationComment.h
index b81b4e784be167655d71d7392d4827987fb30054..34a381fb1429b4add1e5774579fbcd3051e67481 100644
--- a/AnnotationComment.h
+++ b/AnnotationComment.h
@@ -158,7 +158,7 @@ public:
     { assert(0); return KUndefined; }
 
   //! checks annotation for improper use of preprocessor direcctives, returns true if errors found
-  virtual bool checkAnnotation(const std::string& text, clang::SourceLocation clangLocation, const clang::Sema* sema) const {
+  virtual bool checkAnnotation(const std::string& text, clang::SourceLocation clangLocation, const clang::Sema* sema, std::string& revised) const {
     return true;
   }
 }; 
diff --git a/Clang_utils.h b/Clang_utils.h
index 0d0c5688c6dfe8660ff0216a4bb091da5d5be9f7..89e3a8bf65d85d0171b6ff3c89e61f530e952bea 100644
--- a/Clang_utils.h
+++ b/Clang_utils.h
@@ -824,6 +824,11 @@ public:
   ForwardReferenceList() : _front(NULL), _back(NULL) {}
   ForwardReferenceList(const ForwardReferenceList& source)
     : _front(source._front), _back(source._back) {}
+  ForwardReferenceList& operator=(const ForwardReferenceList& source)
+    { _front = source._front;
+      _back = source._back;
+      return *this;
+    }
   ForwardReferenceList(list& alist) : _front(&alist), _back(alist)
     { while (_back && _back->next) _back = _back->next; }
 
@@ -905,6 +910,11 @@ public:
     : ForwardReferenceList(source), _beforeBack(NULL) {}
   ForwardDoubleReferenceList(list& alist) : ForwardReferenceList(alist),
       _beforeBack(NULL) {}
+  ForwardDoubleReferenceList& operator=(const ForwardDoubleReferenceList& source)
+    { ForwardReferenceList::operator=(source);
+      _beforeBack = NULL;
+      return *this;
+    }
 
   void clear()
     { ForwardReferenceList::clear();
@@ -960,6 +970,11 @@ public:
   ForwardList() : _front(NULL), _back(NULL) {}
   ForwardList(const ForwardList& source)
     : _front(source._front), _back(source._back) {}
+  ForwardList& operator=(const ForwardList& source)
+    { _front = source._front;
+      _back = source._back;
+      return *this;
+    }
   bool isValid() const { return (!_front ? !_back : (_back && !_back->next)); }
   ForwardList& insertPlain(long value)
     { if (_back) {
diff --git a/RTTITable.h b/RTTITable.h
index 11e53d215c85a84f8c6b3bfd1671c75f6b0a0ce6..bb4cc49bb1d92661590d37608dcc13b6035a2eb2 100644
--- a/RTTITable.h
+++ b/RTTITable.h
@@ -78,6 +78,13 @@ private:
         : _method(source._method), _inheritancePath(source._inheritancePath),
           _virtualInheritancePath(source._virtualInheritancePath),
           _parentInheritancePath(source._parentInheritancePath) {}
+      VirtualMethodInfo& operator=(const VirtualMethodInfo& source)
+        { _method = source._method;
+          _inheritancePath = source._inheritancePath;
+          _virtualInheritancePath = source._virtualInheritancePath;
+          _parentInheritancePath = source._parentInheritancePath;
+          return *this;
+        }
 
       bool isValid() const
         { return _method
diff --git a/gen_ast.ml b/gen_ast.ml
index d65039b2412744a033a7ee91b5d5e0ec715f8f1e..4af499b230f802dce5587df768a013708dbdd441 100644
--- a/gen_ast.ml
+++ b/gen_ast.ml
@@ -703,6 +703,15 @@ let generate_c_constructor fmt ast =
   pretty_list ~pre:"@[<v 0>" ~sep:"@;@;" ~suf:"@;@;@]"
     generate_constructor fmt ast
 
+let has_free_access_content t =
+  match t with
+    | Bool | Int | Int64 -> false
+    | Location -> true
+    | String -> false
+    | Node _ -> true
+    | Option _ -> true
+    | List _ -> true
+
 let rec generate_free_call obj fmt t =
   match t with
     | Bool | Int | Int64 -> ()
@@ -728,12 +737,18 @@ let rec generate_free_call obj fmt t =
 and destruct_ptr_or_int obj fmt t =
   if not (is_base_type t) then begin
     let content fmt = Format.pp_print_string fmt "content" in
-    Format.fprintf fmt
-      "%a content = (%a)%t.container;@;%a"
-      print_c_type t
-      print_c_type t
-      obj
-      (generate_free_call content) t
+    if (has_free_access_content t)
+    then
+      Format.fprintf fmt
+        "%a content = (%a)%t.container;@;%a"
+        print_c_type t
+        print_c_type t
+        obj
+        (generate_free_call content) t
+    else
+      Format.fprintf fmt
+        "%a"
+        (generate_free_call content) t
   end