/** * Creates a deep copy of this element and regenerates all instance-ids. * * @return the copy of the element. */ public AbstractRootLevelBand derive( final boolean preserveElementInstanceIds ) { final AbstractRootLevelBand rootLevelBand = (AbstractRootLevelBand) super.derive( preserveElementInstanceIds ); if ( rootLevelBand.subReports != null ) { rootLevelBand.subReports = (ArrayList<SubReport>) rootLevelBand.subReports.clone(); rootLevelBand.subReports.clear(); for ( int i = 0; i < subReports.size(); i++ ) { final SubReport report = subReports.get( i ); final SubReport clone = (SubReport) report.derive( preserveElementInstanceIds ); clone.setParent( rootLevelBand ); rootLevelBand.subReports.add( clone ); } } return rootLevelBand; }