In Java, the variance of parameterized types is indicated depending on how it's used:<A extends B,B> void store(ArrayList<B> list, A elem) {    list.add(elem);}Whereas in Scala it is indicated in the class declaration with a + or -.What I want to know is, now that Scala has been around awhile, what has been people's experience with making variance a property of the type? Is it generally flexible enough for what you want to do? Are there aspects you would have done differently, knowing what you know now?
What has been learned about making variance part of the type?
programming languages;language design;scala