anchor.diff:                   end
                    || {Bkt, Ps} <- Buckets1],
               Parts1 = expand_parts(Parts, Buckets2),
  +            io:format("~p~n", [Parts1]),
               case name_parts(Parts1, [], Aliases, Buckets2) of
                   {ok, Parts2} ->
                       {ok, {Parts2, Start, Count}};
  
positive.code: expand_part({combine, Fun, Parts}, Buckets) ->
      Parts1 = [P || {_, _, P} <- expand_parts(Parts, Buckets)],
      [{keep, keep, {combine, Fun, Parts1}}];
  expand_part({calc, C, {sget, {B, G}}}, Buckets) ->
      Ms = orddict:fetch(B, Buckets),
      {ok, Selected} = glob_match(G, Ms),
      %% TODO adjust the name here!
      [{M, G, {calc, C, {get, {B, M}}}} || M <- Selected].
  
  
  
negative.code: needs_buckets({calc, _Steps, {sget, {Bucket, Glob}}}, Buckets) ->
      orddict:append(Bucket, glob_prefix(Glob, []), Buckets);
  
  needs_buckets({calc, _Steps, {get, _}}, Buckets) ->
      Buckets;
  
  needs_buckets({aggr, _Aggr, SubQ}, Buckets) ->
      needs_buckets(SubQ, Buckets);
  
  