public void drawBarChart(
            Object[] data,
            int ageInterval) {
        setPaint(Color.DARK_GRAY);
        RoundingMode roundingMode = getRoundingMode();
        BigDecimal cellWidth = getCellWidth();
        int originCol = getOriginCol();
        TreeMap<Long, BigDecimal> femaleAgeInYearsPopulationCount_TreeMap = (TreeMap<Long, BigDecimal>) data[0];
        TreeMap<Long, BigDecimal> maleAgeInYearsPopulationCount_TreeMap = (TreeMap<Long, BigDecimal>) data[1];
        Iterator<Map.Entry<Long, BigDecimal>> ite;
        Map.Entry<Long, BigDecimal> entry;
        Long age;
        BigDecimal population;
        int barGap = 4;
//        int barGapDiv2 = barGap / 2;
//        int barHeight = Generic_BigDecimal.divideRoundIfNecessary(
//                BigDecimal.valueOf(ageInterval),
//                getCellHeight(),
//                0,
//                roundingMode).intValueExact() - barGap;
        int barHeight;
        BigDecimal cellHeight = getCellHeight();
        if (cellHeight.compareTo(BigDecimal.ZERO) == 0) {
            barHeight = 1;
        } else {
            barHeight = Generic_BigDecimal.divideRoundIfNecessary(
                    BigDecimal.valueOf(ageInterval),
                    getCellHeight(),
                    0,
                    roundingMode).intValue() - barGap;
        }
        if (barHeight < 1) {
            barHeight = 1;
        }
        // Draw Female bars
        ite = femaleAgeInYearsPopulationCount_TreeMap.entrySet().iterator();
        while (ite.hasNext()) {
            entry = ite.next();
            
            // For some reason sometimes we get a Integer instead of a Long!
            if (!(entry.getKey() instanceof Long)) {
                System.out.println(entry.getKey());
                String s = String.valueOf(entry.getKey());
                age = Long.valueOf(s);
            } else {
                age = entry.getKey();
            }
            
            population = entry.getValue();
            int barWidth = Generic_BigDecimal.divideRoundIfNecessary(
                    population,
                    cellWidth,
                    0,
                    //roundingMode).intValueExact();
                    roundingMode).intValue();
//            int barTopRow = coordinateToScreenRow(
//                    BigDecimal.valueOf(age + ageInterval))
//                    + barGapDiv2;
            int barTopRow = coordinateToScreenRow(
                    BigDecimal.valueOf(age + ageInterval))
                    + barGap;
            setPaint(Color.DARK_GRAY);
//            Rectangle2D r2 = new Rectangle2D.Double(
//                    originCol,
//                    barTopRow,
//                    barWidth,
//                    barHeight);
            fillRect(
                    originCol,
                    barTopRow,
                    barWidth,
                    barHeight);
//            setPaint(Color.BLACK);
//            draw(r2);
        }
        // Draw Male bars
        ite = maleAgeInYearsPopulationCount_TreeMap.entrySet().iterator();
        while (ite.hasNext()) {
            entry = ite.next();
            
            // For some reason sometimes we get a Integer instead of a Long!
            if (!(entry.getKey() instanceof Long)) {
                System.out.println(entry.getKey());
                String s = String.valueOf(entry.getKey());
                age = Long.valueOf(s);
            } else {
                age = entry.getKey();
            }

            population = entry.getValue();
            int barWidth = Generic_BigDecimal.divideRoundIfNecessary(
                    population,
                    cellWidth,
                    0,
                    roundingMode).intValueExact();
//            int barTopRow = coordinateToScreenRow(
//                    BigDecimal.valueOf(age + ageInterval))
//                    + barGapDiv2;
            int barTopRow = coordinateToScreenRow(
                    BigDecimal.valueOf(age + ageInterval))
                    + barGap;
            setPaint(Color.LIGHT_GRAY);
//            Rectangle2D r2 = new Rectangle2D.Double(
//                    originCol - barWidth,
//                    barTopRow,
//                    barWidth,
//                    barHeight);
            fillRect(
                    originCol - barWidth,
                    barTopRow,
                    barWidth,
                    barHeight);
//            setPaint(Color.BLACK);
//            draw(r2);
        }
    }