Null SerializedProperty SerializedObject upon Removal from list

So I am making a custom editor script. I need to display a list with it. The list is populated by a custom class I made that inherits from ScriptableObject. It shows up fine, it adds elements fine. However, when I remove the last element of the list it gives me a null reference and won’t remove it. I can avoid the error with a Try-Catch, but I would prefer not to do that and do it the right way.

Here is the code that crashes (on ‘SerializedObject sc’ line):

	void ShowElement(int index)
			GUI.color =;
			if(GUILayout.Button("X", GUILayout.Width(25f)))
			GUI.color = Color.white;
			//try {
				SerializedObject sc = new SerializedObject(mObject.FindProperty(string.Format(mListData, index)).objectReferenceValue);
				var elementName = sc.FindProperty(mSCLevel).stringValue;
			//} catch {}

Here is the code that removes:

	void RemoveElement(int index)
		for( int i = index; i < mElementsCount.intValue - 1; i++)
			SetElement(i, GetElement(i + 1));

I’ve tried null checks on the SerializedProperty and its objectReferenceValue–but even then, it still makes it to that line and gives a null reference error. What can I do? As I said, a TryCatch works, but I’d like to avoid that if possible.


That should be i < mElementsCount.intValue -2 I think.