title: scala: reflection on an inner class of abstract type
body: <p>I want to reflect an inner class of abstract type in a trait. Something like this:</p>
  
  <pre><code>import scala.reflect.runtime.{ universe =&gt; ru }
  import scala.reflect.ClassTag
  import scala.reflect.api.JavaUniverse
  import scala.collection.mutable.HashMap
  
  
  trait SimElement {
      type Probe
      var probe: Probe
  
      def reflectProbe(implicit ev1: scala.reflect.runtime.universe.TypeTag[Probe]) {
      val runtimeMirror: ru.type#Mirror = ru.runtimeMirror(this.probe.getClass.getClassLoader)
      val instanceMirror = runtimeMirror.reflect(this.probe.getClass())
  
  
      val fieldTerm: ru.type#TermName = ru.TermName("name")
      println(fieldTerm.toString())
      val fieldSymbol = ru.typeOf[Probe].decl(fieldTerm)
      println(fieldSymbol.toString())
      }
  
  
  }
  
  
  class WorldProbe {
      var population: Long = 8000000000L
  }
  
  class World extends SimElement {
    type Probe = WorldProbe
    var probe: Probe = new WorldProbe
  }
  
  
  class CountryProbe {
      // to be set for every country
      var population: Int = 0
  
      // to be set for every country
      var name: String = ""
  }
  
  class Country extends SimElement {
      type Probe = CountryProbe
      var probe: Probe = new CountryProbe
  }
  
  // ...
  
  
  val elements: List[SimElement] = List(new World, new Country)
  
  var countries: List[SimElement] = List()
  var c1: Country = new Country
  c1.probe.name = "Germany"
  c1.probe.population = 81000000
  
  var c2: Country = new Country
  c2.probe.name = "Netherlands"
  c2.probe.population = 16000000
  
  countries = countries.+:(c1)
  countries = countries.+:(c2)
  
  elements.foreach { (s: SimElement) =&gt; s.reflectProbe }
  countries.foreach { (s: SimElement) =&gt; s.reflectProbe }
  </code></pre>
  
  <p>This compiles, but it dosen't work as expected, it prints:
      name
      &lt; none >
      name
      &lt; none >
      name
      &lt; none >
      name
      &lt; none ></p>
  
  <p>I think I'm not getting my hand on the "right" object here, however, researching quite a bit did not lead to an answer. Any help?</p>
  
  <p>Thanks!</p>