public static EnumTypeReference LookupWithPrefix(String withPrefix)
        {
            EnumTypeReference type;

            if (!ReferenceMap.TryGetValue(withPrefix, out type))
            {
                String nameNoPrefix = withPrefix.Substring(TypePrefix.Length);
                type = new EnumTypeReference(nameNoPrefix);
                ReferenceMap.Add(nameNoPrefix, type);
                ReferenceMap.Add(withPrefix, type);
                ReferenceList.Add(type);
            }
            return(type);
        }
        public void FinalizeDeserialization()
        {
            Enums.FinalizeItems(); // Enums first
            Dictionary <String, EnumDefinition> enumMap = new Dictionary <String, EnumDefinition>((int)Enums.SafeLength());

            foreach (var enumDefinition in Enums.SafeEnumerable())
            {
                enumMap.Add(enumDefinition.Name, enumDefinition);
            }
            EnumTypeReference.ResolveTypes(enumMap);

            Tasks.FinalizeItems(); // Then Tasks

            // Then Console Application
            Dictionary <String, Task> taskMap = new Dictionary <String, Task>((int)Tasks.SafeLength());

            foreach (var task in Tasks.SafeEnumerable())
            {
                taskMap.Add(task.Name, task);
            }
            ConsoleApplications.FinalizeItems(taskMap);
        }