protected synchronized int getNextState(int oldstate) { 
        int nextState;
        switch(oldstate) {
        case STATE_DORMANT:
            // zzz... eh, what?
            // check to see if the descriptor can be read from disk
            nextState = STATE_READ_FROM_DISK;
            break;
            
        case STATE_READ_FROM_DISK:
            nextState = STATE_CHECK_WITH_SERVER;
            break;
            
        case STATE_CHECK_WITH_SERVER:
            if(!m_descriptor.isValid()) {
                failRequests(SearchError.SEARCH_FAILED_NO_DESCRIPTOR);
                nextState = STATE_DORMANT;
            } else {
                nextState = STATE_FULLY_UPDATED;
            }
            break;
            
        case STATE_FULLY_UPDATED:
            if(!m_descriptor.isValidForLanguage(m_systems.getSettingsIfc().getGeneralSettings().getLanguage())) {
                nextState = STATE_CHECK_WITH_SERVER;
            } else {
                nextState = STATE_FULLY_UPDATED;
            }
            break;
            
        default:
            if(LOG.isError()) {
                LOG.error("CategoryHolder.getNextState()", 
                        "Unable to determine next state");
            }
            nextState = oldstate;
        }
        
        return nextState;
    }