anchor.diff:  -spec to_internal(file:filename()) -> docsh:internal().
   to_internal(File) ->
       {ok, Forms} = epp:parse_file(File, []),
  -    %specs(Forms),
       [{module, [{name, module_name(Forms)}]}] ++ types(Forms).
   
   module_name(Forms) ->
  
positive.code: 
  -behaviour(docsh_reader).
  -export([to_internal/1]).
  -export([specs/1,
           types/1]).
  
  -import(docsh_lib, [debug/3]).
  
  
negative.code: find_module_name([{attribute, _, module, Mod} | _Forms]) -> throw(Mod);
  find_module_name([_ | Forms]) -> find_module_name(Forms).
  
  types(Forms) ->
      debug(types, [ {{type, type_name_arity(T)}, {description, ?il2b(desc(T))}}
                     || T <- lists:flatmap(fun type/1, Forms) ]).
  
  type({attribute,_,type,_} = A) -> [A];
  type(_) -> [].
  
  desc({attribute,_,type,_} = A) -> debug('repr:type', docsh_format:type_attr(A)).
  
  type_name_arity({attribute,_,type,Data}) ->
  