Objects use cases in OCaml

off topic for newbie question: for the student example.

module rec S1 : Student = Base(Younger(S1))
let s1 = S1.(say@@create 20);;
module rec S2 : Student = Base(Younger(S2))
let s2 = S2.(say@@create 20);;
  1. how to interpret the ‘module rec’ for self?

the explain I can find is

  1. Is not the S1 and S2 the same?