question: public int computeId ( BitSet activeMatches , IReadBlock readBlock ) { if ( readBlock . getNumberOfMatches ( ) == 0 ) return IdMapper . NOHITS_ID ; if ( activeMatches . cardinality ( ) > 0 ) { boolean hasDisabledMatches = false ; int numberOfAddresses = 0 ; for ( int i = activeMatches . nextSetBit ( 0 ) ; i != - 1 ; i = activeMatches . nextSetBit ( i + 1 ) ) { final IMatchBlock matchBlock = readBlock . getMatchBlock ( i ) ; int id = matchBlock . getTaxonId ( ) ; if ( id > 0 ) { if ( ! idMapper . isDisabled ( id ) ) { final String address = fullTree . getAddress ( id ) ; if ( address != null ) { if ( numberOfAddresses >= addresses . length ) { String [ ] tmp = new String [ 2 * addresses . length ] ; System . arraycopy ( addresses , 0 , tmp , 0 , addresses . length ) ; addresses = tmp ; } addresses [ numberOfAddresses ++ ] = address ; } } else hasDisabledMatches = true ; } } if ( numberOfAddresses == 0 && hasDisabledMatches ) { for ( int i = activeMatches . nextSetBit ( 0 ) ; i != - 1 ; i = activeMatches . nextSetBit ( i + 1 ) ) { final IMatchBlock matchBlock = readBlock . getMatchBlock ( i ) ; int id = matchBlock . getTaxonId ( ) ; if ( id > 0 ) { final String address = fullTree . getAddress ( id ) ; if ( address != null ) { if ( numberOfAddresses >= addresses . length ) { String [ ] tmp = new String [ 2 * addresses . length ] ; System . arraycopy ( addresses , 0 , tmp , 0 , addresses . length ) ; addresses = tmp ; } addresses [ numberOfAddresses ++ ] = address ; } } } } if ( numberOfAddresses > 0 ) { final String address = LCAAddressing . getCommonPrefix ( addresses , numberOfAddresses , true ) ; int taxId = fullTree . getAddress2Id ( address ) ; if ( taxId > 0 ) { if ( useIdentityFilter ) { taxId = adjustByPercentIdentity ( taxId , activeMatches , readBlock , fullTree , name2idMap ) ; } return taxId ; } } } return IdMapper . UNASSIGNED_ID ; }
target:  determine the taxon id of a read from its matches