This class serves as a "mini", short-lived cache. It is to be "newed" by each
instance of JoinDirector For performance reasons - all public methods in the
join class would have to be synchronized - single global instance of this
class should probably not be servicing multiple threads busy joining
attributes at the same time. It is to avoid them step over each other's data
kept in fields of cached class instances.
getInstance(java.lang.String className)
will return the only instance of join class if requested for the first
time - new instance will be created first