fun ArrayList>.union() : HashSet { val result = this.fold (HashSet()) { left, right -> left.addAll(right) left } return result } fun ArrayList>.intersection() : HashSet { val result = this.fold (this.union()) { left,right -> left.intersect(right).toHashSet() } return result }