For example we can use open types to create classes that allow down-casting:type 'a class_name = ..exception Bad_castclass type castable = object method cast: 'a.'a class_name -> 'aend(* Lets create a castable class with a name*)class type foo_t = object inherit castable method foo: stringendtype 'a class_name += Foo: foo_t class_nameclass foo: foo_t =object(self) method cast: type a. a class_name