docs: protected void layoutCharts() {
          //Pre-sort charts by group column
          MultiValuedMap<DJGroup, DJChart> mmap = new ArrayListValuedHashMap<DJGroup, DJChart>();
          for (DJChart djChart : getReport().getCharts()) {
              mmap.put(djChart.getColumnsGroup(), djChart);
          }
  
          for (DJGroup key : mmap.keySet()) {
              Collection<DJChart> charts = mmap.get(key);
              List<DJChart> l = new ArrayList<DJChart>(charts);
              //Reverse iteration of the charts to meet insertion order
              for (int i = l.size(); i > 0; i--) {
                  DJChart djChart = l.get(i - 1);
                  JRDesignChart chart = createChart(djChart);
  
                  //Charts has their own band, so they are added in the band at Y=0
                  JRDesignBand band = createGroupForChartAndGetBand(djChart);
                  band.addElement(chart);
              }
          }
  
          //Pre-sort charts by group column
          MultiValuedMap<PropertyColumn, ar.com.fdvs.dj.domain.chart.DJChart> mmap2 = new ArrayListValuedHashMap<PropertyColumn, ar.com.fdvs.dj.domain.chart.DJChart>();
          for (ar.com.fdvs.dj.domain.chart.DJChart djChart : getReport().getNewCharts()) {
              mmap2.put(djChart.getDataset().getColumnsGroup(), djChart);
          }
  
          for (PropertyColumn key : mmap2.keySet()) {
              Collection<ar.com.fdvs.dj.domain.chart.DJChart> charts = mmap2.get(key);
              ArrayList<ar.com.fdvs.dj.domain.chart.DJChart> l = new ArrayList<ar.com.fdvs.dj.domain.chart.DJChart>(charts);
              //Reverse iteration of the charts to meet insertion order
              for (int i = l.size(); i > 0; i--) {
                  ar.com.fdvs.dj.domain.chart.DJChart djChart = l.get(i - 1);
                  String name = "chart_" + (i - 1) + new Date().getTime();
                  JRDesignChart chart = createChart(djChart, name);
  
                  if (djChart.getLink() != null)
                      HyperLinkUtil.applyHyperLinkToElement((DynamicJasperDesign) getDesign(), djChart.getLink(), chart, name + "_hyperlink");
  
                  //Charts has their own band, so they are added in the band at Y=0
                  JRDesignBand band = createGroupForChartAndGetBand(djChart);
                  band.addElement(chart);
              }
          }
      }