public Object getFromSemiUnique ( Object dataHolder , List extractors ) { Object result = null ; TransactionLocalStorage txStorage = ( TransactionLocalStorage ) perTransactionStorage . get ( MithraManagerProvider . getMithraManager ( ) . zGetCurrentTransactionWithNoCheck ( ) ) ; FullSemiUniqueDatedIndex perThreadAdded = this . getPerThreadAddedIndex ( txStorage ) ; if ( perThreadAdded != null ) { result = perThreadAdded . getFromSemiUnique ( dataHolder , extractors ) ; } if ( result != null ) { int startIndex = this . semiUniqueExtractors . length ; int length = extractors . size ( ) - startIndex ; boolean matchMoreThanOne = false ; for ( int i = 0 ; i < length ; i ++ ) { AsOfExtractor extractor = ( AsOfExtractor ) extractors . get ( startIndex + i ) ; matchMoreThanOne = matchMoreThanOne || extractor . matchesMoreThanOne ( ) ; } if ( matchMoreThanOne ) { Object mainIndexResult = this . mainIndex . getFromSemiUnique ( dataHolder , extractors ) ; result = checkDeleted ( result , txStorage , mainIndexResult ) ; } } else { result = this . mainIndex . getFromSemiUnique ( dataHolder , extractors ) ; result = this . checkDeletedIndex ( result , txStorage ) ; } return result ; }
new to differentiate