On the other hand, values in Java, Smalltalk, Object Pascal, and similar languages all know what class they are derived from, and functions are provided to both test this, and to covert back to the original type.