Yeah, it works OK as `private[spark]`. I'm not sure why I thought it had been a problem before. I'll restore that. The `>: Null` bound was requiring bounds in other common classes like `RDD` to be `>: Null`, which entailed a lot of knock-on changes. (See below for a snippet.) Should I go for it?

I'll commit a change that addresses everything else, to start, and rebases.

```
[error] /Users/srowen/Documents/spark/core/src/main/scala/org/apache/spark/partial/GroupedCountEvaluator.scala:35: type arguments [T,Long] do not conform to class OpenHashMap's type parameter bounds [K >: Null,V]
[error]   extends ApproximateEvaluator[OpenHashMap[T,Long], Map[T, BoundedDouble]] {
[error]           ^
...
[error] /Users/srowen/Documents/spark/core/src/main/scala/org/apache/spark/rdd/RDD.scala:806: type arguments [T,Long] do not conform to class OpenHashMap's type parameter bounds [K >: Null,V]
[error]     def countPartition(iter: Iterator[T]): Iterator[OpenHashMap[T,Long]] = {
[error]                                            ^
...
[error] 20 errors found
```