anchor.diff:      end,
       emit([nl]),
       emit({nl,nl}).
  +
  +try_catch() ->
  +    ["  catch",nl,
  +     "    Class:Exception when Class =:= error; Class =:= exit ->",nl,
  +     "      case Exception of",nl,
  +     "        {error,Reason}=Error ->",nl,
  +     "          Error;",nl,
  +     "        Reason ->",nl,
  +     "         {error,{asn1,Reason}}",nl,
  +     "      end",nl,
  +     "end."].
   
   gen_info_functions(Erules) ->
       emit(["encoding_rule() -> ",
  
positive.code: 		  ["  Bytes ->",nl,
  		   "    {ok,",BytesAsBinary,"}",nl]
  	  end,
  	  "  catch",nl,
  	  "    Class:Exception when Class =:= error; Class =:= exit ->",nl,
            "      case Exception of",nl,
  	  "        {error,Reason}=Error ->",nl,
  	  "          Error;",nl,
  	  "        Reason ->",nl,
  	  "         {error,{asn1,Reason}}",nl,
  	  "      end",nl,
  	  "end.",nl,nl]),
  
      Return_rest = lists:member(undec_rest,get(encoding_options)),
      Data = case {Erules,Return_rest} of
  
negative.code: 		  _ -> "Data"
  	      end,
  	    
      emit(["try decode_disp(Type, ",DecWrap,") of",nl]),
      case erule(Erules) of
  	ber ->
  	    emit(["  Result ->",nl,
  		  case Return_rest of
  		      false -> "    {ok,Result}";
  		      true ->  "    {ok,Result,Rest}"
  		  end,nl]);
  	per ->
  	    emit(["  {Result,Rest} ->",nl,
  		  case Return_rest of
  		      false -> "    {ok,Result}";
  		      true ->  "    {ok,Result,Rest}"
  		  end,nl])
      end,
      emit([try_catch(),nl,nl]),
  
      gen_decode_partial_incomplete(Erules),
  
  