synchronized(cache) { if(cache.size() == MAX_CACHE_SIZE) cache.clear(); cache.put(path, temp); }
    private final ArrayList tokenize( String path ) {    	ArrayList temp;    	synchronized(cache) {    		temp = (ArrayList)cache.get(path);    		if(temp != null)    			return temp;    	}    	temp = new ArrayList();        String next;       	token.reset();        int pos = 0;		char ch = 0;		final int pathLen = path.length();        while ( pos < pathLen ) {			ch = path.charAt(pos);            switch ( ch ) {            case '/':                next = token.toString();                token.reset();                if ( next.length(  ) > 0 )                    temp.add( next );                if ( path.charAt( ++pos ) == '/' )                    temp.add( "*" );                break;            default:                token.append(ch);                pos++;            }        }        if ( token.length() > 0 )            temp.add( token.toString() );        synchronized(cache) {        	if(cache.size() == MAX_CACHE_SIZE)        		cache.clear();        	cache.put(path, temp);        }        return temp;    }