“Always expose the highest admissible level interface of the returned collection, and consume the lowest admissible level interface.”
This sounds like the robustness principle, but opposite. Did you mean to say “Always expose the lowest admissible level interface of the returned collection, and consume the highest admissible level interface.”