anchor.diff:        | add_parents_too(Cwd, tl(RevExp))
       ].
   
  -gen_docsrc (AppDir, SrcFiles, IncludePaths, Dest) ->
  +gen_docsrc (IncludePaths, AppName, AppDir, SrcFiles, Dest) ->
       Opts = [ {includes, IncludePaths}
              , {sort_functions, false}
              , {file_suffix, ?ERLDOCS_SPECS_TMP}
  
positive.code:     %% Output XML files to destination folder
      %% This prevents from polluting the source files
      TmpRoot = jname(kf(dest,Conf), ?ERLDOCS_SPECS_TMP),
      XMLDir  = jname(TmpRoot, bname(AppDir)),
      mkdir_p(XMLDir ++ "/"),
  
      lists:foreach(fun (File) -> gen_type_specs(TmpRoot, IncludePaths, File) end, ErlFiles),
  
      %% Return the complete list of XML files
      XMLFiles ++ tmp_cd(XMLDir, fun () ->
                                         gen_docsrc(AppDir, SrcFiles, IncludePaths, XMLDir)
                                 end).
  
  gen_type_specs (SpecsDest, IncludePaths, ErlFile) ->
      case erlang:system_info(otp_release) of
          [$R,$1,Digit|_] when Digit < $5 -> SpecsGenModule = specs_gen__below_R15;
          "R"++_ ->                          SpecsGenModule = specs_gen__R15_to_17;
          Vsn when Vsn < "18" ->             SpecsGenModule = specs_gen__R15_to_17;
          _ ->                               SpecsGenModule = specs_gen__18_and_above
      end,
      ?log("Generating Type Specs - ~p", [ErlFile]),
      Args = ["-o"++SpecsDest] ++ ["-I"++Inc || Inc <- IncludePaths] ++ [ErlFile],
      try SpecsGenModule:main(Args)
      catch _:_SpecsGenError ->
              ?log("Error generating type specs for ~p", [ErlFile])
      end.
  
  includes (AppDir) ->
  
negative.code: %% @doc
  %% Parse XML file against OTP's DTD, need to cd into the
  %% source directory because files are addressed relative to it
  -spec read_xml (file:name()) -> {atom(), _, _}.
  read_xml (XmlFile) ->
      ?log("Reading XML for ~p", [XmlFile]),
      DocgenDir = code:priv_dir(erl_docgen),
  