Ошибка Delphi XE8 в TList <T>, требуется обходной путь

После обновления до XE8 некоторые наши проекты начинают ломать данные. Похоже, ошибка в реализации TList.

program XE8Bug1;
{$APPTYPE CONSOLE}

uses
  System.SysUtils, Generics.Collections;

type
  TRecord = record
    A: Integer;
    B: Int64;
  end;

var
  FRecord: TRecord;
  FList: TList<TRecord>;

begin
  FList := TList<TRecord>.Create;
  FRecord.A := 1;
  FList.Insert(0, FRecord);
  FRecord.A := 3;
  FList.Insert(1, FRecord);
  FRecord.A := 2;
  FList.Insert(1, FRecord);
  Writeln(IntToStr(FList[0].A) + IntToStr(FList[1].A) + IntToStr(FList[2].A));

end.

Этот код печатает «123» в XE7 и ранее (как и должно быть), но в XE8 печатает «120». Может быть, кто-то знает быстрое решение для этого?

Обновить: неофициальное исправлениеВот

Ответы на вопрос(1)

Ваш ответ на вопрос