Why `ImmutableMap`? Shouldn't that be an implementation detail? `Set<Map<String, String>>` instead?