class VariantConfiguration {

    @NonNull
    public List<File> getNavigationFiles() {

        ImmutableList.Builder<File> builder = ImmutableList.builder();

        List<SourceProvider> sourceProviders = getSortedSourceProviders();
        // iterate over sourceProviders in reverse order to match order of getManifestOverlays()
        for (int n = sourceProviders.size() - 1; n >= 0; n--) {
            Collection<File> resDirs = sourceProviders.get(n).getResDirectories();
            for (File resDir : resDirs) {
                if (resDir == null) {
                    continue;
                }
                File navigationDir = new File(resDir.getPath(), SdkConstants.FD_RES_NAVIGATION);
                File[] navigationFiles = navigationDir.listFiles();
                if (navigationFiles == null) {
                    continue;
                }
                for (File navigationFile : navigationFiles) {
                    if (navigationFile != null && navigationFile.isFile()) {
                        builder.add(navigationFile);
                    }
                }
            }
        }

        return builder.build();
    }

    public  VariantConfiguration(
            @NonNull D defaultConfig,
            @NonNull SourceProvider defaultSourceProvider,
            @Nullable ManifestAttributeSupplier mainManifestAttributeSupplier,
            @NonNull T buildType,
            @Nullable SourceProvider buildTypeSourceProvider,
            @NonNull VariantType type,
            @Nullable SigningConfig signingConfigOverride,
            @NonNull EvalIssueReporter issueReporter,
            @NonNull BooleanSupplier isInExecutionPhase);
    public  VariantConfiguration(
            @NonNull D defaultConfig,
            @NonNull SourceProvider defaultSourceProvider,
            @Nullable ManifestAttributeSupplier mainManifestAttributeSupplier,
            @NonNull T buildType,
            @Nullable SourceProvider buildTypeSourceProvider,
            @NonNull VariantType type,
            @Nullable VariantConfiguration<T, D, F> testedConfig,
            @Nullable SigningConfig signingConfigOverride,
            @NonNull EvalIssueReporter issueReporter,
            @NonNull BooleanSupplier isInExecutionPhase);

}