# Question Implement the function `retrieveAddress` using the methods `getStreet1`, `getStreet2`, and `getStreet3` to create an `Address`. ```scala case class Address( street1: String, street2: Option[String], street3: Option[String] ) def retrieveAddress: Option[Address] = { val street1: Option[String] = Try(getStreet1).fold( t => None, street => Some(street) ); street1 match { case None => None case Some(street) => Some(Address(street, Try(getStreet2).toOption , Try(getStreet3).toOption)) } } sealed trait Try[+A] case class Success[+A](a: A) extends Try[A] case class Failure[+A](a: Throwable) extends Try[A] // ======================================================================= // 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 } ```