code: func RawValueAsInterface(val dosarpc.RawValue, typ dosa.Type) interface{} {
  	switch typ {
  	case dosa.Blob:
  		return val.BinaryValue
  	case dosa.TUUID:
  		if len(val.BinaryValue) == 0 {
  			return (*dosa.UUID)(nil)
  		}
  		uuid, _ := dosa.BytesToUUID(val.BinaryValue) // TODO: should we handle this error?
  		return &uuid
  	case dosa.String:
  		return val.StringValue
  	case dosa.Int32:
  		return val.Int32Value
  	case dosa.Int64:
  		return val.Int64Value
  	case dosa.Double:
  		return val.DoubleValue
  	case dosa.Timestamp:
  		if val.Int64Value == nil {
  			return (*time.Time)(nil)
  		}
  		t := time.Unix(0, *val.Int64Value)
  		return &t
  	case dosa.Bool:
  		return val.BoolValue
  	}
  	panic("bad type")
  }
docs: // RawValueAsInterface converts a value from the wire to an object implementing the interface
  // based on the dosa type. For example, a TUUID type will get a dosa.UUID object