package Ġbe . sch 3 lp . j 2 k . value objects . kotlin Ċ Ċ data Ġclass ĠEmail Address ( ĊĠĠĠ Ġval Ġlocal Part : ĠString , ĊĠĠĠ Ġval Ġdomain : ĠString Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ local Part @ $ domain " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( value : ĠString ): ĠEmail Address Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Index Ġ= Ġvalue . lastIndexOf ('@ ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire (!( at Index Ġ< Ġ 1 Ġ|| Ġat Index Ġ== Ġvalue . length Ġ- Ġ 1 )) Ġ{ Ġ" EmailAddress Ġmust Ġbe Ġtwo Ġparts Ġseparated Ġby Ġ@" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEmail Address ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . substring ( 0 , Ġat Index ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . substring ( at Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }