# Question Implement the function `retrieveAddress` using the methods `getStreet1`, `getStreet2`, and `getStreet3` to create an `Address`. import scala.util.Try ```scala case class Address( street1: String, street2: Option[String], street3: Option[String] ) case class Street1Absent(errors: List[String]) extends RuntimeException(null, error) // TODO: Implement def retrieveAddress: Either[Street1Absent, Address] = { val street2 = Try(getStreet2).toOption val street3 = Try(getStreet3).toOption Try(getStreet1) .toEither .fold( th => Left(Street1Absent("error.absent.street1")), street1 => Right(Address(street1, street2, street3)) ) } // ======================================================================= // LIBRARY METHODS // ======================================================================= /** * Retrieves the main street address. * @throws RuntimeException if empty */ def getStreet1: String = { // implementation } /** * Retrieves additional street address line 2. * @throws RuntimeException if empty */ def getStreet2: String = { // implementation } /** * Retrieves additional street address line 3. * @throws RuntimeException if empty */ def getStreet3: String = { // implementation } ```