anchor.diff:          function IsEmpty: WordBool; safecall;
           procedure Last; safecall;
           function Locate(const KeyFields: WideString; KeyValues: OleVariant;
  +            CaseSensitive: WordBool; PartialKey: WordBool): WordBool; safecall;
  +        function Locate2(const KeyFields: WideString; KeyValues: OleVariant;
               CaseSensitive: WordBool; PartialKey: WordBool): WordBool; safecall;
           function MoveBy(Distance: Integer): Integer; safecall;
           procedure Next; safecall;
  
positive.code:         procedure InternalInitFieldDefs; override;
      end;
  
      TDataSetObject = class(TAutoIntfObject, IDataSet)
      private
          FDataSet: TCompatDataSet;
          FIndex: TFieldIndex;
  
negative.code:     Result := FDataSet.Locate(KeyFields, KeyValues, LOptions);
  end;
  
  function TDataSetObject.Locate2(const KeyFields: WideString; KeyValues:
      OleVariant; CaseSensitive: WordBool; PartialKey: WordBool): WordBool;
  var
      LOptions: TLocateOptions;
  begin
      LOptions := [];
      if not CaseSensitive then Include(LOptions, loCaseInsensitive);
      if PartialKey then Include(LOptions, loPartialKey);
      Result := FDataSet.Locate(KeyFields, KeyValues, LOptions);
  end;
  
  function TDataSetObject.MoveBy(Distance: Integer): Integer;
  begin
      Result := FDataSet.MoveBy(Distance);
  