public static synchronized TypeReference findOrCreateInternal(ClassLoader cl,Atom tn){
  TypeReference key=new TypeReference(cl,tn,nextId);
  TypeReference val=dictionary.get(key);
  if (val == null) {
    val=key;
    nextId++;
    int column=val.id >> LOG_ROW_SIZE;
    if (column == types.length) {
      TypeReference[][] tmp=new TypeReference[column + 1][];
      for (int i=0; i < column; i++) {
        tmp[i]=types[i];
      }
      types=tmp;
      types[column]=new TypeReference[1 << LOG_ROW_SIZE];
    }
    types[column][val.id & ROW_MASK]=val;
    dictionary.add(val);
  }
  return val;
}

public static synchronized TypeReference findOrCreateInternal ( ClassLoader cl , Atom tn ) { TypeReference key = new TypeReference ( cl , tn , nextId ) ; TypeReference val = dictionary . get ( key ) ; if ( val == null ) { val = key ; nextId ++ ; int column = val . id > > LOG_ROW_SIZE ; if ( column == types . length ) { TypeReference [ ] [ ] tmp = new TypeReference [ column + 1 ] [ ] ; for ( int i = 0 ; i < column ; i ++ ) { tmp [ i ] = types [ i ] ; } types = tmp ; types [ column ] = new TypeReference [ 1 << LOG_ROW_SIZE ] ; } types [ column ] [ val . id & ROW_MASK ] = val ; dictionary . add ( val ) ; } return val ; }
find or create the canonical typereference instance for the given pair without type descriptor parsing .
