Source:
<code>private boolean processDependentParameters( MasterReport report, Map<String, ParameterDefinitionEntry> reportParameter, ParameterContext parameterContext, DataRow parameterValues ) { try { final DesignTimeDataFactoryContext factoryContext = new DesignTimeDataFactoryContext( report ); final CompoundDataFactory cdf = CompoundDataFactory.normalize( report.getDataFactory() ); final CompoundDataFactory derive = (CompoundDataFactory) cdf.derive(); derive.initialize( factoryContext ); boolean anyDependencyProcessed = false; try { for ( final ParameterDefinitionEntry entry : reportParameter.values() ) { final List<String> dependentParameter = computeNormalLineage( parameterContext, entry ); final List<String> queryDependencies = computeListParameterLineage( derive, entry, parameterValues ); if ( queryDependencies == null ) { <START> dependencyInformationAvailable = false; <END> continue; } if ( dependentParameter != null && dependentParameter.size() > 0 ) { dependentParameter.forEach( p -> addDependency( p, entry.getName() ) ); anyDependencyProcessed = true; } if ( queryDependencies != null && queryDependencies.size() > 0 ) { queryDependencies.forEach( p -> addDependency( p, entry.getName() ) ); anyDependencyProcessed = true; } } } finally { derive.close(); } return anyDependencyProcessed; } catch ( ReportDataFactoryException re ) { DebugLog.log( "Failed to compute dependency information", re ); return false; } }</code><technical_language>updating dependencyInfoAvailable flag here, cover tracks in "catch" block below. If query fails, dependency information is available. Right now, a failing query creates illusion simply is parameter defined. this private method is called constructor, cleanest solution is computed "dependencyInfoAvailable" return of this function. a clean flow of logic hidden field updates future generations of maintainers surely miss</technical_language>

Target:
private boolean processDependentParameters( MasterReport report, Map<String, ParameterDefinitionEntry> reportParameter, ParameterContext parameterContext, DataRow parameterValues ) { boolean isDependencyInfoAvail = true; try { final DesignTimeDataFactoryContext factoryContext = new DesignTimeDataFactoryContext( report ); final CompoundDataFactory cdf = CompoundDataFactory.normalize( report.getDataFactory() ); final CompoundDataFactory derive = (CompoundDataFactory) cdf.derive(); derive.initialize( factoryContext ); try { for ( final ParameterDefinitionEntry entry : reportParameter.values() ) { final List<String> dependentParameter = computeNormalLineage( parameterContext, entry ); final List<String> queryDependencies = computeListParameterLineage( derive, entry, parameterValues ); if ( queryDependencies == null ) { isDependencyInfoAvail = false; continue; } if ( dependentParameter != null && dependentParameter.size() > 0 ) { dependentParameter.forEach( p -> addDependency( p, entry.getName() ) ); } if ( queryDependencies != null && queryDependencies.size() > 0 ) { queryDependencies.forEach( p -> addDependency( p, entry.getName() ) ); } } } finally { derive.close(); } } catch ( ReportDataFactoryException re ) { DebugLog.log( "Failed to compute dependency information", re ); isDependencyInfoAvail = false; } return isDependencyInfoAvail; }