원본을 고치지 않고 새 valid state를 생성한다.
완성된 StudySession
새 입력과 invariant 검사
변경된 field를 가진 record
과거와 현재를 동시에 비교
핵심: 이미 같은 상태라면 this를 반환해 불필요한 allocation을 피할 수 있다.