anchor.diff:          ( name=attr_type_name
           | type=attr_type_storage
           )* TAG_CLOSE
  -    	doc=SHORTDOC*
  +    	(doc+=SHORTDOC)*
           enum_option+
           TAG_END_BITFLAGS SHORTDOC*
  -        -> ^(ENUMDEF ^(DOC $doc?) $name $type enum_option+)
  +        -> ^(ENUMDEF ^(DOC $doc*) $name $type enum_option+)
       ;
   
   struct_add
  
positive.code:                             $ver1 $ver2)
                          $cond)
                      $vercond)
                  ^(FIELDDEF ^(DOC $doc?) $type $name))
          -> {has_ver1 && !has_ver2 && has_cond && has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"]
                      ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"]
                          $ver1 $cond)
                      $vercond)
                  ^(FIELDDEF ^(DOC $doc?) $type $name))
          -> {!has_ver1 && has_ver2 && has_cond && has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"]
                      ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"]
                          $ver2 $cond)
                      $vercond)
                  ^(FIELDDEF ^(DOC $doc?) $type $name))
          -> {!has_ver1 && !has_ver2 && has_cond && has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"] $cond $vercond)
                  ^(FIELDDEF ^(DOC $doc?) $type $name))
          // !has_cond && has_vercond
          -> {has_ver1 && has_ver2 && !has_cond && has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
  
negative.code:                     ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"]
                          $ver1 $ver2)
                      $cond)
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          -> {has_ver1 && !has_ver2 && has_cond && !has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"] $ver1 $cond)
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          -> {!has_ver1 && has_ver2 && has_cond && !has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"] $ver2 $cond)
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          -> {!has_ver1 && !has_ver2 && has_cond && !has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  $cond
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          // !has_cond && !has_vercond
          -> {has_ver1 && has_ver2 && !has_cond && !has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  ^(OP_LOGICAL_AND[$TAG_START_ADD, "and"] $ver1 $ver2)
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          -> {has_ver1 && !has_ver2 && !has_cond && !has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  $ver1
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          -> {!has_ver1 && has_ver2 && !has_cond && !has_vercond}?
             ^(IF[$TAG_START_ADD, "if"]
                  $ver2
                  ^(FIELDDEF ^(DOC $doc*) $type $name))
          -> ^(FIELDDEF ^(DOC $doc*) $type $name)
      ;
  
  attr_variable_name
  