### Question:
BuildOutput implements OutputFile, Serializable { @NonNull @Override public Collection<String> getFilterTypes() { return apkData.getFilters() .stream() .map(FilterData::getFilterType) .collect(Collectors.toList()); } BuildOutput(
            @NonNull ArtifactType outputType, @NonNull ApkData apkData, @NonNull File outputFile);  BuildOutput(
            @NonNull ArtifactType outputType,
            @NonNull ApkData apkData,
            @NonNull File outputFile,
            @NonNull Map<String, String> properties);  BuildOutput(
            @NonNull ArtifactType outputType,
            @NonNull ApkData apkData,
            @NonNull Path outputPath,
            @NonNull Map<String, String> properties); void save(File folder); @NonNull ApkData getApkData(); @NonNull @Override File getOutputFile(); @NonNull ArtifactType getType(); @NonNull @Override String getOutputType(); @NonNull @Override Collection<String> getFilterTypes(); @NonNull @Override Collection<FilterData> getFilters(); @Nullable String getFilter(String filterType); @NonNull @Deprecated @Override OutputFile getMainOutputFile(); @NonNull @Deprecated @Override Collection<? extends OutputFile> getOutputs(); @Override int getVersionCode(); @NonNull Map<String, String> getProperties(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); Path getOutputPath();  }### Answer:
@Test public void testGetFilterTypes() { BuildOutput buildOutput = new BuildOutput(InternalArtifactType.APK, apkInfo, new File("/tmp/bar/output")); when(apkInfo.getFilters()) .thenReturn( ImmutableList.of( new FilterDataImpl(VariantOutput.FilterType.LANGUAGE, "fr"), new FilterDataImpl(VariantOutput.FilterType.DENSITY, "xhdpi"), new FilterDataImpl(VariantOutput.FilterType.ABI, "arm"))); assertThat(buildOutput.getFilterTypes()) .containsExactlyElementsIn( ImmutableList.of(OutputFile.DENSITY, OutputFile.ABI, OutputFile.LANGUAGE)); }