Source:
<code>private Optional<PojoIndexingProcessor<T>> doBuild(PojoIndexingDependencyCollectorTypeNode<T> dependencyCollector) { if ( boundRoutingKeyBridge != null ) { boundRoutingKeyBridge.contributeDependencies( dependencyCollector ); } Collection<PojoIndexingProcessorPropertyNode<? super T, ?>> immutablePropertyNodes = propertyNodeBuilders.isEmpty() ? Collections.emptyList() : new ArrayList<>( propertyNodeBuilders.size() ); try { Collection<BeanHolder<? extends TypeBridge>> immutableBridgeHolders = boundBridges.isEmpty() ? Collections.emptyList() : new ArrayList<>(); for ( BoundTypeBridge<T> boundBridge : boundBridges ) { immutableBridgeHolders.add( boundBridge.getBridgeHolder() ); boundBridge.contributeDependencies( dependencyCollector ); } propertyNodeBuilders.values().stream() .map( builder -> builder.build( dependencyCollector ) ) .filter( Optional::isPresent ) .map( Optional::get ) .forEach( immutablePropertyNodes::add ); if ( immutableBridgeHolders.isEmpty() && immutablePropertyNodes.isEmpty() ) { if ( parentIndexObjectReferences.isEmpty() ) { return Optional.empty(); } <START> throw log.invalidIndexedEmbedded( modelPath.getParent().getParent().getPropertyModel().getName(), modelPath.getTypeModel().getName() ); <END> } else { return Optional.of( new PojoIndexingProcessorTypeNode<>( parentIndexObjectReferences, immutableBridgeHolders, immutablePropertyNodes ) ); } } catch (RuntimeException e) { new SuppressingCloser( e ) .pushAll( PojoIndexingProcessor::close, immutablePropertyNodes ); throw e; } }</code><technical_language>solved this. question: > for curiosity. that: > > > define field, includePaths clause filters out. > > if Level3B defines generic field text? level3a end empty, is mentioned in includePaths. level3b level3b.text included, explicitly mentioned in includePaths</technical_language>

Target:
private Optional<PojoIndexingProcessor<T>> doBuild(PojoIndexingDependencyCollectorTypeNode<T> dependencyCollector) { if ( boundRoutingKeyBridge != null ) { boundRoutingKeyBridge.contributeDependencies( dependencyCollector ); } Collection<PojoIndexingProcessorPropertyNode<? super T, ?>> immutablePropertyNodes = propertyNodeBuilders.isEmpty() ? Collections.emptyList() : new ArrayList<>( propertyNodeBuilders.size() ); try { Collection<BeanHolder<? extends TypeBridge>> immutableBridgeHolders = boundBridges.isEmpty() ? Collections.emptyList() : new ArrayList<>(); for ( BoundTypeBridge<T> boundBridge : boundBridges ) { immutableBridgeHolders.add( boundBridge.getBridgeHolder() ); boundBridge.contributeDependencies( dependencyCollector ); } propertyNodeBuilders.values().stream() .map( builder -> builder.build( dependencyCollector ) ) .filter( Optional::isPresent ) .map( Optional::get ) .forEach( immutablePropertyNodes::add ); if ( parentIndexObjectReferences.isEmpty() && immutableBridgeHolders.isEmpty() && immutablePropertyNodes .isEmpty() ) { return Optional.empty(); } else { return Optional.of( new PojoIndexingProcessorTypeNode<>( parentIndexObjectReferences, immutableBridgeHolders, immutablePropertyNodes ) ); } } catch (RuntimeException e) { new SuppressingCloser( e ) .pushAll( PojoIndexingProcessor::close, immutablePropertyNodes ); throw e; } }