anchor.diff:  
   procedure TEntities{$IFNDEF FPC} <T> {$ENDIF}.Delete(const Index: Integer);
   begin
  -  FEntity[Index].Active := False;
  +  Entity[Index].Active := False;
   end;
   
   destructor TEntities{$IFNDEF FPC} <T> {$ENDIF}.Destroy;
  
positive.code: {$REGION ' TGenericEntities '}
  type
    {$IFDEF FPC} generic {$ENDIF} TGenericEntities<T: TEntity> = class(TInterfacedObject)
    private
      FEntity: array of T;
    protected
      function GetEntity(Index: Integer): T;
  
negative.code: {$ENDREGION ' TMapGenerator '}
  {$REGION ' TGenericEntities '}
  
  procedure TGenericEntities{$IFNDEF FPC} <T> {$ENDIF}.Clear;
  var
    I: Integer;
  begin
    for I := 0 to Count - 1 do
      FEntity[I].Free;
    SetLength(FEntity, 0);
  end;
  
  function TGenericEntities{$IFNDEF FPC} <T> {$ENDIF}.Count: Integer;
  begin
    Result := Length(FEntity);
  end;
  
  function TGenericEntities{$IFNDEF FPC} <T> {$ENDIF}.GetEntity(Index: Integer): T;
  begin
    Result := FEntity[Index];
  