anchor.diff:                 Params =
                      case get_type(Input,true,Mod) of
                          {Input, InputType, _} ->
  -                           typeref(InputType, Mod)
  +                           typeref(InputType,Mod)
                      end,
                  Result =
                      case get_type(Output,false,Mod) of
                          {Output, OutputType, _} ->
  -                           typeref(OutputType, Mod);
  +                           typeref(OutputType,Mod);
                          undefined ->
                              io_lib:format("~p()", [Output])
                      end,
  
positive.code:     io_lib:format("binary(~s)", [join([ atom_to_list(Attr) || Attr <- Attrs ], ",")]);
  typeref({prim,tuple},_Mod) ->
      "tuple()";
  typeref({prim,term},_Mod) ->
      "term()";
  typeref({prim,{term,Attrs}},_Mod) ->
  
negative.code: typeref({binary,Value},_Mod) ->
      io_lib:format("~p", [Value]);
  typeref({alt,Type1,Type2},Mod) ->
      io_lib:format("~s | ~s", [typeref(Type1,Mod), typeref(Type2,Mod)]);
  typeref({concat,Type1,Type2},Mod) ->
      io_lib:format("~s++~s", [typeref(Type1,Mod), typeref(Type2,Mod)]);
  typeref({list_optional,Element},Mod) ->
      io_lib:format("[~s]?", [typeref(Element,Mod)]);
  typeref({list_nil,Element},Mod) ->
      io_lib:format("[~s]{0}", [typeref(Element,Mod)]);
  typeref({list_required,Element},Mod) ->
      io_lib:format("[~s]{1}", [typeref(Element,Mod)]);
  typeref({list,Element},Mod) ->
      io_lib:format("[~s]", [typeref(Element,Mod)]);
  typeref({list_required_and_repeatable,Element},Mod) ->
      io_lib:format("[~s]+", [typeref(Element,Mod)]);
  typeref(Type, _Mod) ->
      io_lib:format("~p()", [Type]).
  
  