Source:
<code>private void advanceToNextStripe() throws IOException { currentStripeSystemMemoryContext.close(); currentStripeSystemMemoryContext = systemMemoryUsage.newOrcAggregatedMemoryContext(); rowGroups = ImmutableList.<RowGroup>of().iterator(); if (currentStripe >= 0) { if (stripeStatisticsValidation.isPresent()) { OrcWriteValidation.StatisticsValidation statisticsValidation = stripeStatisticsValidation.get(); long offset = stripes.get(currentStripe).getOffset(); writeValidation.get().validateStripeStatistics(orcDataSource.getId(), offset, statisticsValidation.build()); statisticsValidation.reset(); } } currentStripe++; if (currentStripe >= stripes.size()) { return; } if (currentStripe > 0) { currentStripePosition += stripes.get(currentStripe - 1).getNumberOfRows(); } StripeInformation stripeInformation = stripes.get(currentStripe); validateWriteStripe(stripeInformation.getNumberOfRows()); List<Slice> stripeDecryptionKeyMetadata = getDecryptionKeyMetadata(currentStripe); if ((!stripeDecryptionKeyMetadata.isEmpty() && !currentGroupDwrfDecryptors.isPresent()) || (currentGroupDwrfDecryptors.isPresent() && stripeDecryptionKeyMetadata.equals(currentGroupDwrfDecryptors.get().getKeyMetadatas()))) { verify(decryptorProvider.isPresent(), "decryptorProvider is absent"); currentGroupDwrfDecryptors.equals(new GroupDwrfDecryptors(decryptorProvider.get(), stripeDecryptionKeyMetadata)); } <START> <END> Stripe stripe = stripeReader.readStripe(stripeInformation, currentStripeSystemMemoryContext, currentGroupDwrfDecryptors); if (stripe != null) { InputStreamSources dictionaryStreamSources = stripe.getDictionaryStreamSources(); List<ColumnEncoding> columnEncodings = stripe.getColumnEncodings(); for (StreamReader column : streamReaders) { if (column != null) { column.startStripe(dictionaryStreamSources, columnEncodings); } } rowGroups = stripe.getRowGroups().iterator(); } }</code><technical_language>is hard follow this condition. is checked here</technical_language>

Target:
private void advanceToNextStripe() throws IOException { currentStripeSystemMemoryContext.close(); currentStripeSystemMemoryContext = systemMemoryUsage.newOrcAggregatedMemoryContext(); rowGroups = ImmutableList.<RowGroup>of().iterator(); if (currentStripe >= 0) { if (stripeStatisticsValidation.isPresent()) { OrcWriteValidation.StatisticsValidation statisticsValidation = stripeStatisticsValidation.get(); long offset = stripes.get(currentStripe).getOffset(); writeValidation.get().validateStripeStatistics(orcDataSource.getId(), offset, statisticsValidation.build()); statisticsValidation.reset(); } } currentStripe++; if (currentStripe >= stripes.size()) { return; } if (currentStripe > 0) { currentStripePosition += stripes.get(currentStripe - 1).getNumberOfRows(); } StripeInformation stripeInformation = stripes.get(currentStripe); validateWriteStripe(stripeInformation.getNumberOfRows()); List<Slice> stripeDecryptionKeyMetadata = getDecryptionKeyMetadata(currentStripe, stripes); if ((!stripeDecryptionKeyMetadata.isEmpty() && !currentGroupDwrfDecryptors.isPresent()) || (currentGroupDwrfDecryptors.isPresent() && !stripeDecryptionKeyMetadata.equals(currentGroupDwrfDecryptors.get().getKeyMetadatas()))) { verify(decryptorProvider.isPresent(), "decryptorProvider is absent"); currentGroupDwrfDecryptors = Optional.of(createGroupDwrfDecryptors(decryptorProvider.get(), stripeDecryptionKeyMetadata)); } Stripe stripe = stripeReader.readStripe(stripeInformation, currentStripeSystemMemoryContext, currentGroupDwrfDecryptors); if (stripe != null) { InputStreamSources dictionaryStreamSources = stripe.getDictionaryStreamSources(); List<ColumnEncoding> columnEncodings = stripe.getColumnEncodings(); for (StreamReader column : streamReaders) { if (column != null) { column.startStripe(dictionaryStreamSources, columnEncodings); } } rowGroups = stripe.getRowGroups().iterator(); } }