newKey.add( key.get(0) ); // Make a new key with the read group ...
Comparable theCovariateElement = key.get(iii + 1); //           and the given covariate
</BUG>
if( theCovariateElement != null ) {
<BUG>newKey.add( theCovariateElement );
collapsedDatum = dataCollapsedByCovariate.get(iii).get( newKey );
</BUG>
if( collapsedDatum == null ) {
<BUG>dataCollapsedByCovariate.get(iii).put( newKey, new RecalDatum(fullDatum) );
</BUG>
} else {

} else {
collapsedDatum.combine( fullDatum ); // using combine instead of increment in order to calculate overall aggregateQReported
}
}
for( int iii = 0; iii < dataCollapsedByCovariate.size(); iii++ ) {
if( iii == 0 || !(qscore < IGNORE_QSCORES_LESS_THAN) ) { // use all data for the plot versus reported quality, but not for the other plots versus cycle and etc.
covariateCollapsedKey[0] = key[0]; // Make a new key with the read group ...
Object theCovariateElement = key[iii + 1]; //           and the given covariate
if( theCovariateElement != null ) {
covariateCollapsedKey[1] = theCovariateElement;
collapsedDatum = (RecalDatum)dataCollapsedByCovariate.get(iii).get( covariateCollapsedKey );
if( collapsedDatum == null ) {
dataCollapsedByCovariate.get(iii).put( new RecalDatum(fullDatum), covariateCollapsedKey );
} else {
