I have the following:
    class Goo
    trait Bar[D] {
     def toD : D
    }
    class Moo extends Bar[Goo] {
      def toD : Goo = new Goo
    }
    object Foo {
      import scala.collection.JavaConversions._
      import java.util
      implicit def scalaSetToJavaSet[D](bars: Set[Bar[D]]) : util.Set[D] = bars.map(_.toD)
    }  
    trait Zoo {
      import java.util
      import Foo._
      var javaSet : util.Set[Goo] = Set(new Moo) //compile error
      var explicitJavaSet: util.Set[Goo] = scalaSetToJavaSet(Set(new Moo)) //works!!!
    }
When I try to compile this code I get an error:
"error: type mismatch;
   found   : scala.collection.immutable.Set[Moo]
   required: java.util.Set[Goo]
           var javaSet : util.Set[Goo] = ***Set(new Moo)***"
The explicit definition compiles. Why doesn't the implicit conversion work?
 
     
    