public Component getListComponentForDataSection(TaskObserver taskObserver, String dataSectionName, List list, Iterator indexIterator) throws InterruptedException
    {
        List indexNumberList = listForIterator(indexIterator);
        Integer indexNumber = (Integer)indexNumberList.get(0);
        int index = indexNumber.intValue();
        
        if (dataSectionName == DATA_SECTION_ACTIVE_SPELLS)
        {
            if (1 == indexNumberList.size())
            {
                return new ActiveSpellControl((ActiveSpell)list.get(index), characterData.getActiveSpellNameArray()[index]);
            }
            else
            {
                return getActiveSpellsPanel(taskObserver, indexNumberList);
            }
        }
        else if (dataSectionName == DATA_SECTION_LLOYDS_BEACON)
        {
            if (1 == indexNumberList.size())
            {
                return new LloydsBeaconControl((LloydsBeacon)list.get(index));
            }
            else
            {
                return getLloydsBeaconPanel(taskObserver, indexNumberList);
            }
        }
        else if (dataSectionName == DATA_SECTION_UNKNOWNS)
        {
            if (1 == indexNumberList.size())
            {
                ByteData byteData = (ByteData)list.get(index);
                return new ByteDataTableControl(byteData.getData(), 32, byteData.getExternalOffset(), byteData.getStartOffset(), byteData.getEndOffset());
            }
            else
            {
                return getUnknownsPanel(taskObserver, indexNumberList, characterData.getUnknownByteDataList());
            }
        }
        else throw new IllegalStateException("DataSection " + dataSectionName);
    }