@Override
    protected TerminalSize calculatePreferredSize() {
        if(preferredSizeOverride != null)
            return preferredSizeOverride;
        
        int maxWidth = 5;   //Set it to something...
        for(int i = 0; i < items.size(); i++) {
            String itemString = createItemString(i);
            if(itemString.length() > maxWidth)
                maxWidth = itemString.length();
        }
        return new TerminalSize(maxWidth + 1, items.size());
    }