In order to avoid I/O issues during inferencing, we need a special type of index writer that allows for caching. Essentially, this class will implement the interface of a JSIndexWriter, but instead of sending the types to the underlying Index, it will cache these items. However, we need access to the intermediate types that are being created and written during inferencing. So, this same class should be usable as a JSIndexReader as well, returning not only types coming from the underlying index, but from the write cache as well. We may even want to consider memoizing reads. We would do this to potentially improve performance at the cost of memory. Ideally, this caching behavior would be configurable.