anchor.diff:  %%  clauses in any order. Each clause starts with a (require ...)
   %%  (use ....) or (attr ...)
   %%
  --spec comp_body(jxa_annot:path(), jxa_ctx:context(), term()) ->
  +-spec comp_body(jxa_path:state(), jxa_ctx:context(), term()) ->
                          jxa_ctx:context().
   comp_body(_Path0, Ctx0, []) ->
       Ctx0;
  -comp_body(Path0, Ctx0, [[require | ReqBody] | Rest]) ->
  -    Ctx1 = comp_require(jxa_annot:new_base_position(1, jxa_annot:add(1, Path0)), Ctx0, ReqBody),
  -    comp_body(jxa_annot:add_base_position(1, Path0), Ctx1, Rest);
  -comp_body(Path0, Ctx0, [[attr | AttrBody] | Rest]) ->
  -    Ctx1 = comp_attr(jxa_annot:new_base_position(1, jxa_annot:add(1, Path0)), Ctx0, AttrBody),
  -    comp_body(jxa_annot:add_base_position(1, Path0), Ctx1, Rest);
  -comp_body(Path0, Ctx0, [[use | UseBody] | Rest]) ->
  -    {_, Idx} = jxa_annot:get_annot(jxa_annot:add(1, Path0), jxa_ctx:annots(Ctx0)),
  -    Ctx1 = comp_use(Idx, Ctx0, UseBody, {undefined, []}),
  -    comp_body(jxa_annot:add_base_position(1, Path0), Ctx1, Rest).
  +comp_body(Path0, Ctx0, [require | ReqBody]) ->
  +    comp_require(jxa_path:incr(1, Path0), Ctx0, ReqBody);
  +comp_body(Path0, Ctx0, [attr | AttrBody]) ->
  +    comp_attr(jxa_path:incr(1, Path0), Ctx0, AttrBody);
  +comp_body(Path0, Ctx0, [use | UseBody]) ->
  +    {_, Idx} = jxa_annot:get(jxa_path:path(Path0), jxa_ctx:annots(Ctx0)),
  +    comp_use(Idx, Ctx0, UseBody, {undefined, []});
  +comp_body(Path0, Ctx0, _) ->
  +    {_, Idx} = jxa_annot:get(jxa_path:path(Path0), jxa_ctx:annots(Ctx0)),
  +    ?JXA_THROW({invalid_form, Idx}).
  +
  +
   
   %% Require Clause
   %% --------------
  
positive.code:              Rest, {undefined, []}).
  
  
  -spec handle_use_clauses(jxa_annot:index(), jxa_ctx:content(),
                           [term()], {ModuleName::atom(),
                                      Exports::[{AliasFun::atom(),
                                                 Arity::non_neg_integer(),
  
negative.code:                                 jxa_ctx:context().
  handle_use_clauses(_Idx, Ctx0, [], Acc) ->
      populate_use_context(Acc, Ctx0);
  handle_use_clauses(Idx, Ctx0, [[quote, as], AliasName | Rest], Acc = {ModuleName, _}) ->
      Ctx1 = jxa_ctx:add_alias(AliasName, ModuleName, Ctx0),
      handle_use_clauses(Idx, Ctx1, Rest, Acc);
  handle_use_clauses(Idx, Ctx0, [[quote, only], TargetFuns | Rest],
                     {ModuleName, Exports0})
    when is_atom(ModuleName), is_list(TargetFuns) ->
      Specs = gather_fun_arity_pairs(Idx, TargetFuns, []),
  