diff --git a/1.4/Assemblies/PerformanceFish.dll b/1.4/Assemblies/PerformanceFish.dll
index 7577b4a..ae4dc30 100644
Binary files a/1.4/Assemblies/PerformanceFish.dll and b/1.4/Assemblies/PerformanceFish.dll differ
diff --git a/1.4/Assemblies/PerformanceFish.pdb b/1.4/Assemblies/PerformanceFish.pdb
index ebdbbe0..03d1be7 100644
Binary files a/1.4/Assemblies/PerformanceFish.pdb and b/1.4/Assemblies/PerformanceFish.pdb differ
diff --git a/Source/PerformanceFish/Listers/ThingOwnerOptimization.cs b/Source/PerformanceFish/Listers/ThingOwnerOptimization.cs
index f920952..815462a 100644
--- a/Source/PerformanceFish/Listers/ThingOwnerOptimization.cs
+++ b/Source/PerformanceFish/Listers/ThingOwnerOptimization.cs
@@ -137,7 +137,7 @@ public sealed class ThingOwnerOptimization : ClassWithFishPrepatches
: innerList.LastIndexOf((T)item);
if (index >= 0)
- innerList.RemoveAtFastUnordered(index);
+ innerList.RemoveAtFastUnorderedUnsafe(index);
indexMap.Remove(itemKey);
diff --git a/Source/PerformanceFish/PerformanceFish.csproj b/Source/PerformanceFish/PerformanceFish.csproj
index e136c69..f564521 100644
--- a/Source/PerformanceFish/PerformanceFish.csproj
+++ b/Source/PerformanceFish/PerformanceFish.csproj
@@ -17,7 +17,7 @@
enable
True
v1.4
- 0.3.999.9
+ 0.3.999.91
1701;1702;IL2121;CS8500;CS9082;CA1000;CA1002;CA1003;CA1707;CA1010;CA1715;CA1716;CA1724;CA1031;CA1033;
CA1034;CA1043;CA1051;CA1305;CA1310;CA1710;CA1711;CA1810;CA1812;CA1819;CA1851;CA2002;CA5394;CA1725;CA1062
diff --git a/Source/PerformanceFish/Utility/CollectionExtensions.cs b/Source/PerformanceFish/Utility/CollectionExtensions.cs
index 482ce82..1ae2706 100644
--- a/Source/PerformanceFish/Utility/CollectionExtensions.cs
+++ b/Source/PerformanceFish/Utility/CollectionExtensions.cs
@@ -5,7 +5,6 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
-using Mono.Collections.Generic;
namespace PerformanceFish.Utility;
@@ -296,6 +295,17 @@ public static class CollectionExtensions
return ThrowForNoElements();
}
+
+ public static unsafe void RemoveAtFastUnorderedUnsafe(this List list, int index)
+ {
+ fixed (T* lastBucket = &list._items[list._size - 1])
+ {
+ list[index] = *lastBucket;
+ *lastBucket = default;
+ }
+
+ list._size--;
+ }
public static List AsOrToList(this IEnumerable enumerable) => enumerable as List ?? enumerable.ToList();