anchor.diff:  % child templates should only consist of blocks at the top level
   body_ast([{extends, {string_literal, _Pos, String}} | ThisParseTree], Context, TreeWalker) ->
       Extends = unescape_string_literal(String),
  -    case full_path(Extends, Context#dtl_context.finder) of
  +    case full_path(Extends, Context) of
           {ok, File} ->
               case lists:member(File, Context#dtl_context.parse_trail) of
                   true ->
  
positive.code:             end,
  
              % Compile all included files, put them in a block expr with a single assignment of the argument vars at the start.
              case lists:foldl(IncludeFun, {[], #ast_info{}, TreeWalker1}, full_path(File, All, Context#dtl_context.finder)) of
                  {[], _, TreeWalkerN} ->
                      case All of
                          false -> ?LOG("include_ast: could not find template ~p", [File]);
  
negative.code:     unescape_string_literal(Rest, [C | Acc], noslash).
  
  
  full_path(File, Context) ->
      case full_path(File, false, Context) of
          [Filename] -> {ok, Filename};
          [] -> {error, enoent}
      end.
  
  full_path(File, All, Context) ->
      case Context#dtl_context.finder of
          undefined ->
              case Context#dtl_context.z_context of
                  undefined -> [];
                  ZContext -> z_template:find_template(File, All, ZContext)
              end;
          FinderFun ->
              FinderFun(File, All)
      end.
  
  
  %%-------------------------------------------------------------------
  