type bpoint
    { x : int; getx : bpoint -> int; setx : bpoint -> int -> bpoint;
      bouge : bpoint -> bpoint };;
On pourrait être tenté d'écrire:
let bpoint x0 =
  let super = point x0 in
  { x = super.x0; getx = super.getx; setx = super.setx;
    bouge = (fun self -> self.setx self (self.getx self + 1));}
Cependant, il y a au moins deux problèmes:
    ·Le type de self dans super est point et non bpoint.
    ·La méthode setx retourne un point et non un bpoint.