anchor.diff:  wrap_extensionAdditionGroups([],_,Acc,_,_) ->
       lists:reverse(Acc).
   
  -
  -wrap_gen_dec_line(Erule,C,TopType,_Cname,_Type,Pos,DIO,Ext) ->
  -    put(component_type,{true,C}),
  -    gen_dec_line(Erule, TopType, C#'ComponentType'{prop=mandatory},
  -		 Pos, DIO, Ext),
  -    erase(component_type).
  -
  -			  
   value_match(Index,Value) when is_atom(Value) ->
       value_match(Index,atom_to_list(Value));
   value_match([],Value) ->
  
positive.code:     emit({"asn1_NOVALUE"}).
      
  
  gen_dec_line(Erule, TopType, Comp, Pos, DecInfObj, Ext) ->
      Imm0 = gen_dec_line_imm(Erule, TopType, Comp, Pos, DecInfObj, Ext),
      Init = {ignore,fun(_) -> {[],[]} end},
      Imm = [{group,[Init|Imm0]}],
      emit_gen_dec_imm(Imm).
  
negative.code: 
  
  gen_dec_choice2(Erule,TopType,L,Ext) ->
      gen_dec_choice2(Erule, TopType, L, 0, [], Ext).
  
  gen_dec_choice2(Erule, TopType, [H0|T], Pos, Sep0, Ext) ->
      #'ComponentType'{name=Cname,typespec=Type} = H0,
      H = H0#'ComponentType'{prop=mandatory},
      case Type#type.def of
  	#'ObjectClassFieldType'{type={typefield,_}} ->
  	    emit([Sep0,Pos," ->",nl]),
  	    gen_dec_line(Erule, TopType, H, Pos+1, Ext);
  	_ ->
  	    emit([Sep0,Pos," -> {",{asis,Cname},",",nl]),
  	    gen_dec_line(Erule, TopType, H, Pos+1, Ext),
  	    emit("}")
      end,
      Sep = [";",nl],
      gen_dec_choice2(Erule, TopType, T, Pos+1, Sep, Ext);
  gen_dec_choice2(_, _, [], _, _, _)  -> ok.
  
  indent(N) ->
      lists:duplicate(N,32). % 32 = space
  