public T get(Object term) {
        // Check that an index vector does not already exist.
        T v = termToItem.get(term);
        if (v == null) {
            synchronized (this) {
                // Confirm that some other thread has not created an index
                // vector for this term.
                v = termToItem.get(term);
                if (v == null) {
                    // Generate the index vector for this term and store it.
                    v = generator.generate();
                    termToItem.put((String) term, v);
                }
            }
        }
        return v;
    }
public T get ( Object term ) { T v = termToItem . get ( term ) ; if ( v == null ) { synchronized ( this ) { v = termToItem . get ( term ) ; if ( v == null ) { v = generator . generate ( ) ; termToItem . put ( ( String ) term , v ) ; } } } return v ; }
Returns a {@code T} for the given term, if no mapping for
{@code term} then a new vaue is generated, stored, and returned.

@param term The term specifying the item to return.

@return A generated item corresponding to {@code term}.