To clarify what I wrote:

> You want a "become" method:
> 
> d = LogLine.new(...)
> old_id = d.id
> puts d.class                => LogLine
> d.become(LogLine_Subclass)
> puts d.class                => LogLine_Subclass
> puts (d.id == old_id)       => true

This idea of a become method was inspired by, but is not identical to
Smalltalk's become: anObject method. The proposed become method just
changes the class of its receiver, it does not replace all existing
references to the reciever with references to the argument object, as the
Smalltalk version does.

  Tobias