anchor.diff:  from_pat({var,_,'_'}, Vt, St) -> {'_',[],Vt,St};    %Special case _
   from_pat({var,_,V}, Vt, St0) ->                     %Unquoted atom
       case ordsets:is_element(V, Vt) of               %Is variable bound?
  -    true ->
  -        {V1,St1} = new_from_var(St0),               %New var for pattern
  -        {V1,[{V,V1}],Vt,St1};                       %Add to guard tests
  -    false ->
  -        {V,[],ordsets:add_element(V, Vt),St0}
  +        true ->
  +            {V1,St1} = new_from_var(St0),       %New var for pattern
  +            {V1,[{V,V1}],Vt,St1};               %Add to guard tests
  +        false ->
  +            {V,[],ordsets:add_element(V, Vt),St0}
       end;
   from_pat({nil,_}, Vt, St) -> {[],[],Vt,St};
   from_pat({integer,_,I}, Vt, St) -> {I,[],Vt,St};
  
positive.code:     %% (qlc_pt).
      {Eas,St1} = to_expr_list(As, L, Vt, St0),
      case is_erl_op(F, length(As)) of
      true -> {list_to_tuple([op,L,F|Eas]),St1};
      false ->
          {{call,L,{remote,{atom,L,erlang},{atom,L,F}},Eas},St1}
      end;
  to_expr([call,M,F|As], L, Vt, St0) ->
      {Em,St1} = to_expr(M, L, Vt, St0),
  
negative.code: to_expr([F|As], L, Vt, St0) when is_atom(F) ->  %General function call
      {Eas,St1} = to_expr_list(As, L, Vt, St0),
      case is_erl_op(F, length(As)) of
          true -> {list_to_tuple([op,L,F|Eas]),St1};
          false -> {{call,L,{atom,L,F},Eas},St1}
      end;
  to_expr(List, L, _, St) ->
      case is_integer_list(List) of
          true -> {{string,L,List},St};
          false ->
              io:format("BOOM:~p\n", [List]),
              {integer,L,4711}                    %Not right!
      end.
  
  to_expr_var(V, L, Vt, St) ->
      Var = case orddict:find(V, Vt) of
                {ok,V1} -> V1;
                error -> V
            end,
      {{var,L,Var},St}.
  
  %% is_erl_op(Op, Arity) -> bool().
  