list.Add not accepting new class as instance?

Ok so I am trying to create a save load feature. Still. I am trying to save a list of classes that define the name, position, and rotation of the components. But for some reason when I run it in unity it throws up flags claiming that I am not using an instance of an object.

the function in question goes as follows:

function AddNewPartData(newName : String, pos : Vector3, rot : Quaternion)
	{
		var NewPartData = new PartData();
		NewPartData.PartName = newName;
		NewPartData.PartPos = pos;
		NewPartData.PartRot = rot;
		ShipData.Add(NewPartData);
	}

As you can see I declare the NewPartData as a new PartData object then try to put it in the list. That’s how you instance a non-monobehavior class right? Why is this not working?

Thanks in advance for any help provided

Full Code:

import System.Collections.Generic;
import System.Xml;
import System.IO;
 
@XmlRoot("ShipSave")
public class ShipSave
{
	@XmlArray("ShipData")
  	@XmlArrayItem("Part")
	public var ShipData : List.<PartData>;
	
	function AddNewPartData(newName : String, pos : Vector3, rot : Quaternion)
	{
		var NewPartData = new PartData();
		NewPartData.PartName = newName;
		NewPartData.PartPos = pos;
		NewPartData.PartRot = rot;
		ShipData.Add(NewPartData);
	}
	
	function AddNewPartData(newName : String, pos : Vector3, rot : Quaternion, group : WeaponGroup)
	{
		var NewPartData = new PartData();
		NewPartData.PartName = newName;
		NewPartData.PartPos = pos;
		NewPartData.PartRot = rot;
		NewPartData.Group = group;
		ShipData.Add(NewPartData);
	}
	
	public function Save(path : String)
 	{
 		//TODO if file already exists, delete it first then write new one
 		var serializer : XmlSerializer = new XmlSerializer(ShipSave);
 		var stream : Stream = new FileStream(path, FileMode.Create);
 		serializer.Serialize(stream, this);
 		stream.Close();
 	}
 
 	public static function Load(path : String):ShipSave 
 	{
 		var serializer : XmlSerializer = new XmlSerializer(ShipSave);
 		var stream : Stream = new FileStream(path, FileMode.Open);
 		var result : ShipSave = serializer.Deserialize(stream) as ShipSave;
 		stream.Close();
 		return result;
 	}
 
         //Loads the xml directly from the given string. Useful in combination with www.text.
         public static function LoadFromText(text : String):ShipSave
         {
 		var serializer : XmlSerializer = new XmlSerializer(ShipSave);
 		return serializer.Deserialize(new StringReader(text)) as ShipSave;
 	}
}

public class PartData
{
	var PartName : String;
	var PartPos : Vector3;
	var PartRot : Quaternion;
	var Group : WeaponGroup;
}

I am an idiot.

Literally within seconds of posting this I realized what my problem was.

I forgot to instance the list. Instead of:

 public var ShipData : List.<PartData>;

I should have had this:

public var ShipData : List.<PartData> = new List.<PartData>();

With that fixed everything seems to be working, yay!