anchor.diff:            , ""
             , ""
             , [
  -             ["% #'", atom_to_list(Name), "'{}", "\n%\t"
  +             ["%% #'", atom_to_list(Name), "'{}", "\n%%\t"
                 , join([ case Default of
                              [] ->
  -                               io_lib:format("'~s'::~s", [Field, typeref(ubf,Type,C)]);
  +                               io_lib:format("~p::~s", [Field, typeref(ubf,Type,C)]);
                              [D] ->
  -                               io_lib:format("'~s'=~p::~s", [Field, D, typeref(ubf,Type,C)])
  +                               io_lib:format("~p=~p::~s", [Field, D, typeref(ubf,Type,C)])
                          end || {Field,Default,Type} <- FDTs ], ", ")
                 , "\n\n-ifndef('$ubf_record_", atom_to_list(Name), "').\n"
                 , "-define('$ubf_record_", atom_to_list(Name), "', true).\n"
                 , "-record('", atom_to_list(Name), "', {\n\t"
                 , join([ case Default of
                              [] ->
  -                               io_lib:format("'~s'::~s", [Field, typeref(erlang,Type,C)]);
  +                               io_lib:format("~p::~s", [Field, typeref(erlang,Type,C)]);
                              [D] ->
  -                               io_lib:format("'~s'=~p::~s", [Field, D, typeref(erlang,Type,C)])
  +                               io_lib:format("~p=~p::~s", [Field, D, typeref(erlang,Type,C)])
                          end || {Field,Default,Type} <- FDTs ], ", ")
                 , "}).\n"
                 , "-endif.\n\n"
  
positive.code:   when Tag=:=record;
         Tag=:=record_ext ->
      Elements = tl(tuple_to_list(Elements0)),
      Definition = join([ io_lib:format("'~s'::~s", [Field, typeref(Style,Element,C)])
                          || {Field,Element} <- lists:zip(Fields,Elements) ], ", "),
      io_lib:format("#~s{ ~s }", [Name, Definition]);
  %% list
  
negative.code:           , "%%   - A()? means \"optional A()\""
            , "%%   - A(Attrs) means \"A() subject to the comma-delimited type attributes"
            , "%%"
            , "%%"
            , "%% true\n%%\t\ttrue"
            , "%% false\n%%\t\tfalse"
            , "%% undefined\n%%\t\tundefined"
            , "%%"
            , "%% any()\n%%\t\tany"
            , "%% any()?\n%%\t\tany | undefined"
            , "%%"
            , "%% none()\n%%\t\t /* no result is returned */"
            , "%% none()?\n%%\t\t /* no result is returned */ | undefined"
            , "%%"
            , "%% atom()\n%%\t\tatom"
            , "%% atom()?\n%%\t\tatom | undefined"
            , "%%"
            , "%% binary()\n%%\t\tbinary"
            , "%% binary()?\n%%\t\tbinary | undefined"
            , "%%"
            , "%% float()\n%%\t\tfloat"
            , "%% float()?\n%%\t\tfloat | undefined"
            , "%%"
            , "%% integer()\n%%\t\tinteger"
            , "%% integer()?\n%%\t\tinteger | undefined"
            , "%%"
            , "%% list()\n%%\t\tlist"
            , "%% list()?\n%%\t\tlist | undefined"
            , "%%"
            , "%% tuple()\n%%\t\ttuple"
            , "%% tuple()?\n%%\t\ttuple | undefined"
            , "%%"
            , "%% --------------------"
            , "%% type attributes"
            , "%%"
            , "%%"
            , "%% any(AnyAttrs)\n%%\t\tany"
            , "%% any(AnyAttrs)?\n%%\t\tany | undefined"
            , "%%"
            , "%% atom(AtomAttrs)\n%%\t\tatom"
            , "%% atom(AtomAttrs)?\n%%\t\tatom | undefined"
            , "%%"
            , "%% binary(BinaryAttrs)\n%%\t\tbinary"
            , "%% binary(BinaryAttrs)?\n%%\t\tbinary | undefined"
            , "%%"
            , "%% list(ListAttrs)\n%%\t\tlist"
            , "%% list(ListAttrs)?\n%%\t\tlist | undefined"
            , "%%"
            , "%% tuple(TupleAttrs)\n%%\t\ttuple"
            , "%% tuple(TupleAttrs)?\n%%\t\ttuple | undefined"
            , "%%"
            , "%%"
            , "%% AnyAttrs"
            , "%% \t nonempty"
            , "%% \t nonundefined"
            , "%%"
            , "%% AtomAttrs"
            , "%% \t ascii | asciiprintable"
            , "%% \t nonempty"
            , "%% \t nonundefined"
            , "%%"
            , "%% BinaryAttrs"
            , "%% \t ascii | asciiprintable"
            , "%% \t nonempty"
            , "%%"
            , "%% ListAttrs"
            , "%% \t nonempty"
            , "%%"
            , "%% TupleAttrs"
            , "%% \t nonempty"
            , "%%"
            , "%% --------------------"
            , "%% user-defined attributes"
            , "%%"
            , "%%"
            , "%% {type1() ...}\n%%\t\ttuple"
            , "%% {type1() ...}?\n%%\t\ttuple | undefined"
            , "%%"
            , "%% record()\n%%\t\trecord"
            , "%% record()?\n%%\t\trecord | undefined"
            , "%%"
            , "%% [type()]\n%%\t\tlist of type()"
            , "%% [type()]?\n%%\t\tlist of length 0 or length 1 of type()"
            , "%% [type()]+\n%%\t\tlist of length greater than 0 of type()"
            , "%% [type()]{M}\n%%\t\tlist of length M of type()"
            , "%% [type()]{M,}\n%%\t\tlist of minimum length M of type()"
            , "%% [type()]{,M}\n%%\t\tlist of maximum length M of type()"
            , "%% [type()]{M,N}\n%%\t\tlist of minimum length M and maximum length N of type()"
            , "%%"
            , "%% integer()..integer()\n%%\t\tinteger"
            , "%% ..integer()\n%%\t\tinteger"
            , "%% integer()..\n%%\t\tinteger"
            , ""
            , ""
           ],
  