trait IdlBase

class IdlConcrete extends IdlBase

class A {
  // In general, this method should not need an instance to reflect on it, so
  // take a Class[]
  def reflect(clazz : Class[_ <: IdlBase]) = {
    // Get a list of all its methods and build a hash keyed by method name
    // for statistics recording.
  }

  // But I also really have an IdlConcrete generated by Spring here...
  val idl = new IdlConcrete
  reflect(idl.getClass)
}
