anchor.diff:  	    % core and kernel
   	    foldl(fun
   		    ({bin_element,_,E,_,_},B) ->
  -		    B andalso is_valid_map_key_value(E,Ctx)
  +		    B andalso is_valid_map_key_value(E)
   		end,true,Es);
  -	_ -> false
  +	Val -> is_pattern_expr(Val)
       end.
   
   %% record_def(Line, RecordName, [RecField], State) -> State.
  
positive.code: check_assoc_fields([], St) ->
      St.
  
  map_fields([{Tag,Line,K,V}|Fs], Vt, St, F) when Tag =:= map_field_assoc;
                                                  Tag =:= map_field_exact ->
      St1 = case is_valid_map_key(K, St) of
  	true -> St;
  	false -> add_error(Line, illegal_map_key, St);
  	{false,variable,Var} -> add_error(Line, {illegal_map_key_variable,Var}, St)
      end,
      {Pvt,St2} = F([K,V], Vt, St1),
      {Vts,St3} = map_fields(Fs, Vt, St2, F),
      {vtupdate(Pvt, Vts),St3};
  map_fields([], Vt, St, _) ->
  
negative.code: pattern({tuple,_Line,Ps}, Vt, Old, Bvt, St) ->
      pattern_list(Ps, Vt, Old, Bvt, St);
  pattern({map,_Line,Ps}, Vt, Old, Bvt, St) ->
      pattern_map(Ps, Vt, Old, Bvt, St);
  %%pattern({struct,_Line,_Tag,Ps}, Vt, Old, Bvt, St) ->
  %%    pattern_list(Ps, Vt, Old, Bvt, St);
  pattern({record_index,Line,Name,Field}, _Vt, _Old, _Bvt, St) ->
  