ownedBy(player)でフィルタされてるならinstallationはdefinedなはずなのでfilter(_.installation.isDefined)はいらないですよね...。
またこのままだとO(n^4)っていうひどいことに...。