class virtualA virtual class to represent the public interface of object-oriented gadget states. Use[['a, 'b]]substate :object..end
inherit ['i, 'o] substate or constrain 'self = ('i, 'o)
#substate to derive a class that implements part of a state in a machine.method virtual next : (< next : 'c; .. >, 'a, 'b, unit) Cf_gadget.t as 'cobj#next to transition the state of the machine to obj.