anchor.diff:      procedure SetCapacity(NewCapacity: Integer); virtual; abstract;
       procedure SetCount(NewCount: Integer); virtual; abstract;
       function Compare(const Value1, Value2: Variant): Integer; virtual;
  +    function Invoke(const Name: string; const Arguments: TVarDataArray): Variant; virtual;
     public
       constructor Create(ACapacity: Integer = 4; Sync: Boolean = True;
         ReadWriteSync: Boolean = False); overload; virtual; abstract;
  
positive.code:     FReadWriteLock := TMultiReadExclusiveWriteSynchronizer.Create;
  end;
  
  procedure TAbstractList.Lock;
  begin
    FLock.Acquire;
  
negative.code: 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;
  