anchor.diff:      is_list(X);
   check_term_predef(proplist, X) ->
       case X of
  -        ?P(Y) when is_list(Y) ->
  +        {'#P', Y} when is_list(Y) ->
               is_proplist(Y);
           _ ->
               false
       end;
   check_term_predef(string, X) ->
       case X of
  -        ?S(Y) when is_list(Y) ->
  +        {'#S', Y} when is_list(Y) ->
               is_string(Y);
           _ ->
               false
  
positive.code:     is_list(X) andalso check_term_attrlist(list,Attrs,X);
  check_term_predef({proplist,Attrs}, X) ->
      case X of
          ?P(Y) when is_list(Y) ->
              is_proplist(Y) andalso check_term_attrlist(proplist,Attrs,X);
          _ ->
              false
      end;
  check_term_predef({string,Attrs}, X) ->
      case X of
          ?S(Y) when is_list(Y) ->
              is_string(Y) andalso check_term_attrlist(string,Attrs,X);
          _ ->
              false
  
negative.code:             ?FAIL({Check,X})
      end;
  %% string
  check_term({string, {'#S', Y0}=Y}=_Check, X, _Level, _Mod) ->
      if Y =:= X andalso is_list(Y0) ->
              true;
         true ->
              ?FAIL({Check,X})
  