@FFDCIgnore(InterruptedException.class)
    private boolean waitForIndex(int index) {
        final String methodName = "waitForIndex(): ";
        while (!!!tryToFetchElement(index)) {
            try {
                if (stateLock.hasTimedOut()) {
                    markTimedOut();
                    if (tc.isDebugEnabled())
                        Tr.debug(tc, methodName + "TIMED OUT!");
                    return false;
                }
                if (tc.isDebugEnabled())
                    Tr.debug(tc, methodName + "waiting ...");
                boolean result = stateLock.waitForEvent();
                if (tc.isDebugEnabled())
                    Tr.debug(tc, methodName + "waitForEvent result is [" + result + "] will Loop again to check timeout");
            } catch (InterruptedException ignored) {
                // NO FFDC
                if (tc.isDebugEnabled())
                    Tr.debug(tc, methodName + "interrupted");
            }
        }
        return true;
    }
@ FFDCIgnore ( InterruptedException . class ) private boolean waitForIndex ( int index ) { final String methodName = "waitForIndex(): " ; while ( ! ! ! tryToFetchElement ( index ) ) { try { if ( stateLock . hasTimedOut ( ) ) { markTimedOut ( ) ; if ( tc . isDebugEnabled ( ) ) Tr . debug ( tc , methodName + "TIMED OUT!" ) ; return false ; } if ( tc . isDebugEnabled ( ) ) Tr . debug ( tc , methodName + "waiting ..." ) ; boolean result = stateLock . waitForEvent ( ) ; if ( tc . isDebugEnabled ( ) ) Tr . debug ( tc , methodName + "waitForEvent result is [" + result + "] will Loop again to check timeout" ) ; } catch ( InterruptedException ignored ) { if ( tc . isDebugEnabled ( ) ) Tr . debug ( tc , methodName + "interrupted" ) ; } } return true ; }
Block until the element at <code>index</code> becomes available.

@return true if the element is available, false otherwise