Another alternative was to bifurcate (or split into two branches) the .NET Framework class library and have two versions of many types of classes-for example, deterministic arrays and nondeterministic arrays. This was seriously considered. However, the final decision was that having two copies of the entire framework would be confusing, perform horribly-two copies of every class would be loaded-and in the end wouldn't be practical.
Specific solutions to specific classes were examined, but none of these solutions came close to being a general purpose solution scalable for the entire framework. Making the fundamental problem-if a nondeterministic object contains a reference to a deterministic one, the system is not deterministic-an error was also considered, but it was concluded that this restriction would make it difficult to write real programs.