// Hydration constructor
 private Session(FactMemento memento)
 {
     InitializeResults();
     _conference = new PredecessorObj<Conference>(this, GetRoleConference(), memento, Conference.GetUnloadedInstance, Conference.GetNullInstance);
     _speaker = new PredecessorObj<Speaker>(this, GetRoleSpeaker(), memento, Speaker.GetUnloadedInstance, Speaker.GetNullInstance);
     _track = new PredecessorOpt<Track>(this, GetRoleTrack(), memento, Track.GetUnloadedInstance, Track.GetNullInstance);
 }
 // Hydration constructor
 private Outcome(FactMemento memento)
 {
     InitializeResults();
     _game = new PredecessorObj<Game>(this, RoleGame, memento);
     _winner = new PredecessorOpt<Player>(this, RoleWinner, memento);
 }
 // Business constructor
 public Session(
     Conference conference
     ,Speaker speaker
     ,Track track
     )
 {
     _unique = Guid.NewGuid();
     InitializeResults();
     _conference = new PredecessorObj<Conference>(this, GetRoleConference(), conference);
     _speaker = new PredecessorObj<Speaker>(this, GetRoleSpeaker(), speaker);
     _track = new PredecessorOpt<Track>(this, GetRoleTrack(), track);
 }
 // Results
 // Business constructor
 public Outcome(
     Game game
     ,Player winner
     ,int resigned
     )
 {
     InitializeResults();
     _game = new PredecessorObj<Game>(this, RoleGame, game);
     _winner = new PredecessorOpt<Player>(this, RoleWinner, winner);
     _resigned = resigned;
 }