package Ġorg . test . customer Ċ open Ġclass ĠCustomer ( first Ġ: ĠString ?, Ġlast Ġ: ĠString ?) Ġ{ Ċ public Ġval Ġ_ firstName Ġ: ĠString ? Ċ public Ġval Ġ_ lastName Ġ: ĠString ? Ċ open Ġpublic Ġfun Ġget FirstName () Ġ: ĠString ? Ġ{ Ċ return Ġ_ firstName Ċ } Ċ open Ġpublic Ġfun Ġget LastName () Ġ: ĠString ? Ġ{ Ċ return Ġ_ lastName Ċ } Ċ open Ġprivate Ġfun Ġdo Sm th Before () Ġ: ĠUnit Ġ{ Ċ } Ċ open Ġprivate Ġfun Ġdo Sm th After () Ġ: ĠUnit Ġ{ Ċ } Ċ { Ċ do Sm th Before () Ċ _ firstName Ġ= Ġfirst Ċ _ lastName Ġ= Ġlast Ċ do Sm th After () Ċ } Ċ } Ċ open Ġclass ĠCustomer Builder () Ġ{ Ċ public Ġvar Ġ_ firstName Ġ: ĠString ? Ġ= Ġ" Hom er " Ċ public Ġvar Ġ_ lastName Ġ: ĠString ? Ġ= Ġ" Simp son " Ċ open Ġpublic Ġfun ĠWith FirstName ( firstName Ġ: ĠString ?) Ġ: ĠCustomer Builder ? Ġ{ Ċ _ firstName Ġ= ĠfirstName Ċ return Ġthis Ċ } Ċ open Ġpublic Ġfun ĠWith LastName ( lastName Ġ: ĠString ?) Ġ: ĠCustomer Builder ? Ġ{ Ċ _ lastName Ġ= ĠlastName Ċ return Ġthis Ċ } Ċ open Ġpublic Ġfun ĠBuild () Ġ: ĠCustomer ? Ġ{ Ċ return ĠCustomer (_ firstName , Ġ_ lastName ) Ċ } Ċ } Ċ public Ġopen Ġclass ĠUser () Ġ{ Ċ class Ġobject Ġ{ Ċ open Ġpublic Ġfun Ġmain () Ġ: ĠUnit Ġ{ Ċ var Ġcustomer Ġ: ĠCustomer ? Ġ= ĠCustomer Builder (). With FirstName (" Hom er ") ?. With LastName (" Simp son ") ?. Build () Ċ System . out ?. println ( customer ?. get FirstName ()) Ċ System . out ?. println ( customer ?. getLast Name ()) Ċ } Ċ } Ċ }