code: 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;
      }
docs: new to differentiate