Program: 11409
Project: 11409
Buggy source:
private void saveInterferogram(final ComplexDoubleMatrix dataMaster,final ProductContainer product,final Map<Band,Tile> targetTileMap,final Rectangle targetRectangle){
  final int x0=targetRectangle.x;
  final int y0=targetRectangle.y;
  final int maxX=x0 + targetRectangle.width;
  final int maxY=y0 + targetRectangle.height;
  final Band targetBand_I=targetProduct.getBand(product.getBandName(Unit.REAL));
  final Tile tileOutReal=targetTileMap.get(targetBand_I);
  final Band targetBand_Q=targetProduct.getBand(product.getBandName(Unit.IMAGINARY));
  final Tile tileOutImag=targetTileMap.get(targetBand_Q);
  final ProductData samplesReal=tileOutReal.getDataBuffer();
  final ProductData samplesImag=tileOutImag.getDataBuffer();
  final DoubleMatrix dataReal=dataMaster.real();
  final DoubleMatrix dataImag=dataMaster.imag();
  final TileIndex tgtIndex=new TileIndex(tileOutReal);
  final double srcNoDataValue=product.sourceMaster.realBand.getNoDataValue();
  final Tile slvTileReal=getSourceTile(product.sourceSlave.realBand,targetRectangle);
  final ProductData srcSlvData=slvTileReal.getDataBuffer();
  final TileIndex srcSlvIndex=new TileIndex(slvTileReal);
  for (int y=y0; y < maxY; y++) {
    tgtIndex.calculateStride(y);
    srcSlvIndex.calculateStride(y);
    final int yy=y - y0;
    for (int x=x0; x < maxX; x++) {
      final int tgtIdx=tgtIndex.getIndex(x);
      final int xx=x - x0;
      if (srcSlvData.getElemDoubleAt(srcSlvIndex.getIndex(x)) == srcNoDataValue) {
        samplesReal.setElemFloatAt(tgtIdx,(float)srcNoDataValue);
        samplesImag.setElemFloatAt(tgtIdx,(float)srcNoDataValue);
      }
 else {
        samplesReal.setElemFloatAt(tgtIdx,(float)dataReal.get(yy,xx));
        samplesImag.setElemFloatAt(tgtIdx,(float)dataImag.get(yy,xx));
      }
    }
  }
}

Fixed version (ground truth):
private void saveInterferogram(final ComplexDoubleMatrix dataMaster,final ProductContainer product,final Map<Band,Tile> targetTileMap,final Rectangle targetRectangle){
  final int x0=targetRectangle.x;
  final int y0=targetRectangle.y;
  final int maxX=x0 + targetRectangle.width;
  final int maxY=y0 + targetRectangle.height;
  final Band targetBand_I=targetProduct.getBand(product.getBandName(Unit.REAL));
  final Tile tileOutReal=targetTileMap.get(targetBand_I);
  final Band targetBand_Q=targetProduct.getBand(product.getBandName(Unit.IMAGINARY));
  final Tile tileOutImag=targetTileMap.get(targetBand_Q);
  final ProductData samplesReal=tileOutReal.getDataBuffer();
  final ProductData samplesImag=tileOutImag.getDataBuffer();
  final DoubleMatrix dataReal=dataMaster.real();
  final DoubleMatrix dataImag=dataMaster.imag();
  final TileIndex tgtIndex=new TileIndex(tileOutReal);
  final double mstNoDataValue=product.sourceMaster.realBand.getNoDataValue();
  final Tile mstRealTile=getSourceTile(product.sourceMaster.realBand,targetRectangle);
  final ProductData mstRealData=mstRealTile.getDataBuffer();
  final double slvNoDataValue=product.sourceSlave.realBand.getNoDataValue();
  final Tile slvRealTile=getSourceTile(product.sourceSlave.realBand,targetRectangle);
  final ProductData slvRealData=slvRealTile.getDataBuffer();
  final TileIndex srcIndex=new TileIndex(mstRealTile);
  for (int y=y0; y < maxY; y++) {
    tgtIndex.calculateStride(y);
    srcIndex.calculateStride(y);
    final int yy=y - y0;
    for (int x=x0; x < maxX; x++) {
      final int tgtIdx=tgtIndex.getIndex(x);
      final int xx=x - x0;
      final int srcIdx=srcIndex.getIndex(x);
      if (mstRealData.getElemDoubleAt(srcIdx) == mstNoDataValue || slvRealData.getElemDoubleAt(srcIdx) == slvNoDataValue) {
        samplesReal.setElemFloatAt(tgtIdx,(float)mstNoDataValue);
        samplesImag.setElemFloatAt(tgtIdx,(float)mstNoDataValue);
      }
 else {
        samplesReal.setElemFloatAt(tgtIdx,(float)dataReal.get(yy,xx));
        samplesImag.setElemFloatAt(tgtIdx,(float)dataImag.get(yy,xx));
      }
    }
  }
}