# Classical instantiation
Registering [Bob] to [INF5151]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Bob] to [INF5153]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Bob] to [OPT6000]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Alice] to [INF5151]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Alice] to [INF5153]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Alice] to [OPT3000]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Eve] to [INF5151]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Eve] to [INF5153]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Eve] to [OPT8000]
=> dbconnect ... validate ... register ... disconnect ... <=
-->> Time consumed: 5529ms
## Resulting student set
Student{name='Alice', courses=[OPT3000, INF5151, INF5153]}
Student{name='Bob', courses=[OPT6000, INF5151, INF5153]}
Student{name='Eve', courses=[OPT8000, INF5151, INF5153]}
# Using clones
Registering [Bob] to [INF5151]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Bob] to [INF5153]
=> dbconnect ... validate ... register ... disconnect ... <=
Cloning Student{name='Bob', courses=[INF5151, INF5153]}
Cloning Student{name='Bob', courses=[INF5151, INF5153]}
Registering [Bob] to [OPT6000]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Alice] to [OPT3000]
=> dbconnect ... validate ... register ... disconnect ... <=
Registering [Eve] to [OPT8000]
=> dbconnect ... validate ... register ... disconnect ... <=
-->> Time consumed: 3080ms
## Resulting student set
Student{name='Alice', courses=[OPT3000, INF5151, INF5153]}
Student{name='Bob', courses=[OPT6000, INF5151, INF5153]}
Student{name='Eve', courses=[OPT8000, INF5151, INF5153]}
# Are resulting sets equivalents ?
Equivalence