{'fraction_non_alphanumeric': 0.015733165512901194, 'fraction_numerical': 0.0, 'mean_word_length': 5.2109375, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The Odin system: an object manager for extensible software environments

The purpose of a software environment is to support the creation and maintenance of computer software. This support takes the form of a set of computer programs called "software tools," which are used by a programmer to generate and manipulate software and information about software. 
The use of a software environment can be significantly simplified if the user's attention is focused on the information provided by the environment rather than the tools that create this information. The purpose of an "object manager" is to provide this focus by automating the process of tool invocation. An object manager will respond to a request for a piece of information, or "object", by invoking the minimal number of tools necessary to produce that object. If previously computed objects are automatically stored by the object manager for later re-use, significant improvements in response time can be achieved. 
In an extensible environment, the kinds of information potentially provided by the environment are easily extended through the addition of new tools that generate and manipulate new kinds of information. The added complexity of an object manager designed to support this extensibility is significant, but the current rapid rate of technological change makes this flexibility essential. 
In order to demonstrate the feasibility of efficient extensible object management in large software environments, an object manager called the Odin System was designed and implemented based on the results of this research.