Hot reloading of editor code. When you change an editor script, we serialize all editor windows (they derive from UnityEngine.Object!). then we destroy all the windows. we unload the old c# code, we load the new c# code, we recreate the windows, and then we deserialize the datastreams of the windows back onto the new windows.