(r=Anton.Makeev) avoid O(N) reallocations (and O(N^2) memory transfer) where N is number of changes due to usage of copy on write list: latter isn't needed as all accesses to list are synchronized. Its usage was replaced with ArrayList com.intellij.history.core.changes.ChangeSet$3.run: 6,772,591,320 (19.93%) bytes in 66,975 (0.01%) objects (avg size 101,121 bytes) java.lang.Object[]: 6,772,591,320 (19.93%) bytes in 66,975 (0.01%) objects (avg size 101,121 bytes)