private static Product copyProduct(Product writtenProduct) { Product targetProduct = new Product( writtenProduct.getName(), writtenProduct.getProductType(), writtenProduct.getSceneRasterWidth(), writtenProduct.getSceneRasterHeight()); targetProduct.setStartTime(writtenProduct.getStartTime()); targetProduct.setEndTime(writtenProduct.getEndTime()); ProductUtils.copyMetadata(writtenProduct, targetProduct); ProductUtils.copyGeoCoding(writtenProduct, targetProduct); ProductUtils.copyTiePointGrids(writtenProduct, targetProduct); ProductUtils.copyMasks(writtenProduct, targetProduct); ProductUtils.copyVectorData(writtenProduct, targetProduct); for (Band band : writtenProduct.getBands()) { // Force setting source image, otherwise GPF will set an OperatorImage and invoke // computeTile()!! ProductUtils.copyBand(band.getName(), writtenProduct, targetProduct, true); } return targetProduct; }