trait RecordBase[T] extends Dynamic {
def typed[A]: A = error("doh");
var data: Option[Map[String, AnyRef]] = None
def withData(map: Map[String, AnyRef]) = {
this.data = Some(map)
this.asInstanceOf[T]
}
def applyDynamic(name: String)(args: Any*) = {
data.map(_(name)).getOrElse(error("Unknown field " + name))
}
override def toString = getClass.getName + "[" + data.toString + "]"
}