anchor.diff:  
   -spec range__min(#range{}) -> 'empty' | 'neg_inf' | integer().
   
  -range__min(#range{range=empty}) -> empty;
  -range__min(#range{range={Min,_}}) -> Min.
  +range__min(#range{range = empty}) -> empty;
  +range__min(#range{range = {Min,_}}) -> Min.
   
   -spec range__max(#range{}) -> 'empty' | 'pos_inf' | integer().
   
  -range__max(#range{range=empty}) -> empty;
  -range__max(#range{range={_,Max}}) -> Max.
  +range__max(#range{range = empty}) -> empty;
  +range__max(#range{range = {_,Max}}) -> Max.
   
   -spec range__is_none(#range{}) -> boolean().
   
  -range__is_none(#range{range=empty, other=false}) -> true;
  +range__is_none(#range{range = empty, other = false}) -> true;
   range__is_none(#range{}) -> false.
   
   -spec range__is_empty(#range{}) -> boolean().
   
  -range__is_empty(#range{range=empty}) -> true;
  -range__is_empty(#range{range={_,_}}) -> false.
  +range__is_empty(#range{range = empty}) -> true;
  +range__is_empty(#range{range = {_,_}}) -> false.
   
   -spec remove_point_types(#range{}, [#range{}]) -> #range{}.
   
  
positive.code:   %% io:format("Uses: ~p~nRanges: ~p~n", [Uses, PresentRanges]),
    JoinFun = fun(Var, Range) -> update_info(Var, Range, WidenFun) end,
    NewUses = lists:zipwith(JoinFun, Uses, PresentRanges),
    hipe_icode:subst_uses(lists:zip(Uses, NewUses),I).
  
  -spec join_info(#ann{}, #range{}, three_range_fun()) -> #ann{}.
  
  
negative.code:       TrueRange = inf(any_range(), OldVarRange),
        FalseRange = inf(none_range(), OldVarRange);
      _ ->
        TrueRange = inf(none_range(), OldVarRange),
        FalseRange = OldVarRange
    end,
    TrueLabel = hipe_icode:type_true_label(Type),
    FalseLabel = hipe_icode:type_false_label(Type),
    TrueInfo = enter_define({Arg, TrueRange}, Info),
    FalseInfo = enter_define({Arg, FalseRange}, Info),
    True =
      case range__is_none(TrueRange) of
        true -> [];
        false -> [{TrueLabel, TrueInfo}]
      end,
    False =
      case range__is_none(FalseRange) of
        true -> [];
        false -> [{FalseLabel, FalseInfo}]
      end,
    UpdateInfo = True ++ False,
    NewType =
      if Rewrite ->
  	case UpdateInfo of
  