anchor.diff:  
   interface
   uses
  -  Classes, DateUtils
  +  Classes
   {$IFDEF HAVE_RTTI}
     ,Generics.Collections, RTTI, TypInfo
   {$ENDIF}
  
positive.code:         Result := True;
        end else
          Result := False;
      end;
    else
      Result := False;
  
negative.code:   sign: SOChar;
    bias: Integer;
  begin
    try
      DecodeDate(dt, year, month, day);
      DecodeTime(dt, hour, min, sec, msec);
      bias := GetTimeBias;
      tzh := Abs(bias) div 60;
      tzm := Abs(bias) - tzh * 60;
      if Bias > 0 then
        sign := '-' else
        sign := '+';
      Result := Format('%.4d-%.2d-%.2dT%.2d:%.2d:%.2d.%d%s%.2d:%.2d',
        [year, month, day, hour, min, sec, msec, sign, tzh, tzm]);
    except
      if dt = 0 then
        raise
      else
        DelphiDateTimeToISO8601Date(0);
    end;
  end;
  
  function TryObjectToDate(const obj: ISuperObject; var dt: TDateTime): Boolean;
  