1. A method of storing per-thread, per-instance data, comprising: identifying a unique index value corresponding to a first instance; identifying type parameters based on the identified index value; instantiating a generic holder object based on the identified type parameters, the generic holder object including a thread local field configured to store per-thread data that is local to the first instance; and wherein the identifying a unique index value, identifying type parameters, and instantiating a generic holder object are performed by at least one processor.