import java.util.*;
import java.util.stream.*;
import java.lang.*;
import java.io.*;
interface CarFactory {
List<Car> getCars();
boolean producesCarModel
(String name
); }
interface Car {
}
class Demo {
System.
out.
println("Yep, it compiles"); }
private List
<CarFactory
> findFactoriesThatProducesModel
(List
<CarFactory
> factories,
String modelName
) { return factories.stream()
.filter(factory -> factory.getCars().stream().anyMatch(car -> modelName.equals(car.getName())))
.collect(Collectors.toList());
}
private List
<CarFactory
> findFactoriesThatProducesModel2
(List
<CarFactory
> factories,
String modelName
) { return factories.stream()
.filter(factory -> factory.producesCarModel(modelName))
.collect(Collectors.toList());
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbnRlcmZhY2UgQ2FyRmFjdG9yeSB7CglMaXN0PENhcj4gZ2V0Q2FycygpOwoJYm9vbGVhbiBwcm9kdWNlc0Nhck1vZGVsKFN0cmluZyBuYW1lKTsKfQoKaW50ZXJmYWNlIENhciB7CglTdHJpbmcgZ2V0TmFtZSgpOwp9CgpjbGFzcyBEZW1vIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7CgkJU3lzdGVtLm91dC5wcmludGxuKCJZZXAsIGl0IGNvbXBpbGVzIik7Cgl9CgkKCXByaXZhdGUgTGlzdDxDYXJGYWN0b3J5PiBmaW5kRmFjdG9yaWVzVGhhdFByb2R1Y2VzTW9kZWwoTGlzdDxDYXJGYWN0b3J5PiBmYWN0b3JpZXMsIFN0cmluZyBtb2RlbE5hbWUpIHsKCQlyZXR1cm4gZmFjdG9yaWVzLnN0cmVhbSgpCiAgICAgICAgICAgIC5maWx0ZXIoZmFjdG9yeSAtPiBmYWN0b3J5LmdldENhcnMoKS5zdHJlYW0oKS5hbnlNYXRjaChjYXIgLT4gbW9kZWxOYW1lLmVxdWFscyhjYXIuZ2V0TmFtZSgpKSkpCiAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOwoJfQoJCgkJCglwcml2YXRlIExpc3Q8Q2FyRmFjdG9yeT4gZmluZEZhY3Rvcmllc1RoYXRQcm9kdWNlc01vZGVsMihMaXN0PENhckZhY3Rvcnk+IGZhY3RvcmllcywgU3RyaW5nIG1vZGVsTmFtZSkgewoJCXJldHVybiBmYWN0b3JpZXMuc3RyZWFtKCkKICAgICAgICAgICAgLmZpbHRlcihmYWN0b3J5IC0+IGZhY3RvcnkucHJvZHVjZXNDYXJNb2RlbChtb2RlbE5hbWUpKQogICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKCX0KfQ==