anchor.diff:      normalize_version(Vsn) < normalize_version(LVsn);
   is_version_within_constraint(Vsn, {_Pkg, LVsn, '<'}) ->
       normalize_version(Vsn) < normalize_version(LVsn);
  +is_version_within_constraint(Vsn, {_Pkg, LVsn, 'pes'}) ->
  +    is_within_pessimistic_version(Vsn, LVsn);
  +is_version_within_constraint(Vsn, {_Pkg, LVsn, '~>'}) ->
  +    is_within_pessimistic_version(Vsn, LVsn);
   is_version_within_constraint(Vsn, {_Pkg, LVsn1, LVsn2, between}) ->
       NVsn = normalize_version(Vsn),
       NVsn >= normalize_version(LVsn1) andalso
  
positive.code:                         | {pkg_name(), raw_vsn(), '>'}
                          | {pkg_name(), raw_vsn(), lt}
                          | {pkg_name(), raw_vsn(), '<'}
                          | {pkg_name(), raw_vsn(), vsn(), between}.
  
  -type constraint() :: pkg_name()
  
negative.code:     {M, MI, 0};
  normalize_version({M, MI, P}) ->
      {M, MI, P}.
  
  -spec is_within_pessimistic_version(vsn(),vsn()) -> boolean().
  is_within_pessimistic_version(Vsn, {LM, LMI}) ->
      NVsn = normalize_version(Vsn),
      NVsn >= {LM, LMI, 0} andalso NVsn < {LM + 1, 0, 0};
  is_within_pessimistic_version(Vsn, LVsn = {LM, LMI, _}) ->
      NVsn= normalize_version(Vsn),
      NVsn >= LVsn andalso NVsn < {LM, LMI + 1, 0};
  is_within_pessimistic_version(Vsn = {_}, LVsn) ->
      normalize_version(Vsn) >= normalize_version(LVsn).
  
  -spec is_version_within_constraint(vsn(),constraint()) -> boolean().
  is_version_within_constraint(_Vsn, Pkg) when is_atom(Pkg) orelse is_list(Pkg) ->
  