anchor.diff:  begin
     if not Assigned(FReadWriteLock) then
       FReadWriteLock := TMultiReadExclusiveWriteSynchronizer.Create;
  +end;
  +
  +function TAbstractMap.Invoke(const AName: string;
  +  const Arguments: TVarDataArray): Variant;
  +begin
  +
   end;
   
   procedure TAbstractMap.Lock;
  
positive.code:     FReadWriteLock := TMultiReadExclusiveWriteSynchronizer.Create;
  end;
  
  procedure TAbstractList.Lock;
  begin
    FLock.Acquire;
  
negative.code: end;
  
  function VarIsIntf(const Value: Variant; const IID: TGUID): Boolean;
  var
    P: PVarData;
    VType: TVarType;
  begin
    P := FindVarData(Value);
    VType := P^.VType;
    if (VType = varNull) or (VType = varEmpty) then
      Result := True
    else if VType = varUnknown then
      Result := Supports(IInterface(P^.VUnknown), IID)
    else
      Result := False;
  end;
  
  function VarToIntf(const Value: Variant; const IID: TGUID; out AIntf): Boolean;
  var
    P: PVarData;
    VType: TVarType;
  begin
    P := FindVarData(Value);
    VType := P^.VType;
    if (VType = varNull) or (VType = varEmpty) then
      Result := Supports(nil, IID, AIntf)
    else if VType = varUnknown then
      Result := Supports(IInterface(P^.VUnknown), IID, AIntf)
    else
      Result := False;
  end;
  
  {$IFNDEF DELPHI2010_UP}
  