Vector2 variable not saving after serializedObject.ApplyModifiedProperties

Tested in Unity 2021.3.3f1 and 2021.3.29f1
I have a List of abstract WaypointPathCreator which has a public Vector2 StartPosition field.

[System.Serializable]
public abstract class WaypointPathCreator : object
//Given starting position and an implemented path creator,
//will generate List of waypoints
{
   public Vector2 StartPosition = Vector2.one;

I create a list from the SerializedProperty of the List, insert a new object at the beginning with GetNewAdjoinedPath(), change the Vector2 value via ConnectPaths(), then save the list back to the SerializedProperty. I unserialize to call methods of the elements.

List<WaypointPathCreator> tempPath = new();
for (int i = 0; i < serialTempPath.arraySize; i++)
    tempPath.Add((WaypointPathCreator)serialTempPath.GetArrayElementAtIndex(i).managedReferenceValue);

tempPath.Insert(index, tempPath[index].GetNewAdjoinedPath(1));
ConnectPaths(tempPath, index);
serialTempPath.arraySize = tempPath.Count;
for (int i = 0; i < tempPath.Count; i++)
    serialTempPath.GetArrayElementAtIndex(i).managedReferenceValue = tempPath[i];

When debugging, at the end of the code above I can see that the inserted value has been modified accordingly.
After doing SerializedObject.ApplyModifiedProperties however, I can see that the source List received the new object with the Vector2 variable being (0,0). Debugger and the Editor say the same.
The fields of the WaypointPathCreator implementations get changed nicely, including a test Vector2, and a test bool in the WaypointPathCreator class also changes as expected. I’m not modifying the List, serialized or not, between this and ApplyModifiedProperties.

I’m not sure if I’m doing anything wrong. I tried [SerializeReference] on the Vector2 too. It seems that something’s wrong about serializing a Vector2 in an abstract class.