Array exists yet it is null

After several days of coding I’ve got into a weird problem. Two arrays turn to be null while they actually have elements (according to Inspector). I reduced the scripts to the essential parts. (there are 2 different scripts – don’t know how to edit that here)

public class GenerateSpells : MonoBehaviour {
	public GameObject[] spells;
	private Object[] resourcesLoaded;
	private int index = 0;

	// Use this for initialization
	void Start () {
		index = 0;
		resourcesLoaded = Resources.LoadAll ("", typeof(GameObject));
		foreach (Object o in resourcesLoaded) {
			if ( > 6 && (0, 6) == "spell_") {
				spells[index] = (GameObject)o;

public class SetupInventory : MonoBehaviour {
	public GameObject[] Inventory;
	public GameObject[] spells = new GameObject[100];
	private int index = 1;

	void Start () {
		spells = Camera.main.GetComponent<GenerateSpells> ().spells;
		Debug.Log (spells.Length); //shows 14
		Debug.Log (Camera.main.GetComponent<GenerateSpells> ().spells.Length); //shows 14
		Debug.Log (spells [0]); //shows Null
		Debug.Log (Camera.main.GetComponent<GenerateSpells> ().spells [0]); //shows Null

Somehow the problem solved itself by restarting Unity (with absolutely no modifications to the scripts and game).
Can someone explain me what caused the issue and what exactly solved it? I had the same problem today with the same scripts and it solved the same way.