anchor.diff:  
   expr(E, Env) ->
       case cerl:type(E) of
  +        binary ->
  +            Es = expr_list(cerl:binary_segments(E), Env),
  +            cerl:update_c_binary(E, Es);
  +        bitstr ->
  +            V = expr(cerl:bitstr_val(E), Env),
  +            Sz = expr(cerl:bitstr_size(E), Env),
  +            Unit = expr(cerl:bitstr_unit(E), Env),
  +            Type = expr(cerl:bitstr_type(E), Env),
  +            cerl:update_c_bitstr(E, V, Sz, Unit, Type, cerl:bitstr_flags(E));
    	literal ->
   	    E;
   	var ->
  
positive.code: 		       Else, Env),
      typetest_clause(T, V, Body, Env).
  
  match_congroup({?binary_id, Segs}, Vs, Cs, _Else, Env) -> 
      Ref = get_unique(),
      Guard = cerl:c_primop(cerl:c_atom(set_label), [cerl:c_int(Ref)]),
      NewElse = cerl:c_primop(cerl:c_atom(goto_label), [cerl:c_int(Ref)]),
      Body = match(Vs, Cs, NewElse, Env),
      cerl:c_clause([make_pat(?binary_id, Segs)], Guard, Body);
  
  match_congroup({D, A}, Vs, Cs, Else, Env) ->
      Vs1 = new_vars(A, Env),
  
negative.code:     end.
  
  
  %% ---------------------------------------------------------------------
  %% Abstract datatype: environment()
  
  