float lat, lon;
    protected void initCache(boolean newCache) {        int i;        float lat, lon;        //      Don't have a cache.        if (subframeCacheSize <= 0) {            cache = null;            return;        }        if (newCache || cache == null) {            cache = new SubframeCache(subframeCacheSize);        }        cache.LRU_head = 0;        cache.LRU_tail = subframeCacheSize - 1;        for (i = 0; i < subframeCacheSize; i++) {            if (newCache) {                try {                    cache.subframe[i] = new RpfSubframe(viewAttributes.colorModel);                } catch (java.lang.OutOfMemoryError oome) {                    Debug.error("RpfCacheHandler: \n\tRan out of memory allocating the image cache.\tConsider increasing the java memory heap using the -Xmx option.");                    cache = null;                    subframeCacheSize = i;                    Debug.output("RpfCacheHandler: reseting cache size to "                            + subframeCacheSize);                    initCache(true);                    return;                }            }            // See NOTE below on setScalingTo            cache.subframe[i].setScalingTo(scalingWidth, scalingHeight);            cache.subframe[i].version = 0;            //  Here's where I messed up - forgot to hook up the ends            //  of the chain...            if (i < subframeCacheSize - 1) {                cache.subframe[i].nextSubframe = i + 1;            } else {                cache.subframe[i].nextSubframe = 0;            }            if (i > 0) {                cache.subframe[i].prevSubframe = i - 1;            } else {                cache.subframe[i].prevSubframe = subframeCacheSize - 1;            }        }    }