public static ClusterData selectiveCopyCd( final ClusterData toCopy, final String readStructure, final IlluminaDataType... dataTypes) { final ReadStructure rs = new ReadStructure(readStructure); final ReadData[] rd = copyReadData(rs, dataTypes, toCopy); final ClusterData cd = new ClusterData(rd); cd.setTile(toCopy.getTile()); cd.setLane(toCopy.getLane()); for (final IlluminaDataType idt : dataTypes) { switch (idt) { case Position: cd.setX(toCopy.getX()); cd.setY(toCopy.getY()); break; case PF: cd.setPf(toCopy.isPf()); break; case Barcodes: cd.setMatchedBarcode(toCopy.getMatchedBarcode()); break; default: break; } } return cd; }