Si on cache la méthode set, le type ['acell devient co-variant.
class ['a] cell_set x =
  object
    val mutable contents : 'a = x
    method get = x
    method private set x = contents <- x
  end;;
fun x -> (x : < a : int > cell_set :> < > cell_set);;
Inversement, si on cache la méthode get, le type ['acell devient contra-variant.
class ['a] cell_get x =
  object
    val mutable contents : 'a = x
    method private get = x
    method set x = contents <- x
  end;;
fun x -> (x : <  > cell_get :> < a : int > cell_get);;