Just spent the past hour scratching my head vigorously, wondering why I was getting an error reading some data from a Dictionary, but then getting data read from it milliseconds afterwards. I was putting the XML loading routine into Start(). Which the comments in a newly created file says is where to do initialization. Perhaps I misunderstood something, but putting the calls to load the XML file in Awake() got rid of the error. Since Awake() is called before Start(), and it seems there is no guarantee of what order a Start() would be called in, I need to get the file loaded during the Awake() calls and then it is okay to go.
Hmm. I think I am getting this. The Unity GameObjects are not created in any guaranteed order. Perhaps if I had this data being loaded in a different kind of class and created it within the Start() of the one that was using it, that would work, but this way Awake() gets it done when it is needed and allows me to keep it as a Unity GameObject and use it other places easily. I think.