# 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]
)
Try(getStreet2) match {
case Success(street2) =>
case Failure(exception) =>
}
Try(getStreet2).toOption
case class EmptyStreetError(message: String)
def retrieveAddress: Either[EmptyStreetError, Adress] = {
Try(getStret1) match {
case Failure(_) => None
case Success(street1) =>
Just(Adress(street1,
Try(getStreet2) match {
case Failure(_) => None
case Success(s2) => Just(s2)
},
Try(getStreet3) match {
case Failure(_) => None
case Success(s3) => Just(s3)
},
))
}
)
}
// =======================================================================
// LIBRARY METHODS — NO NEED TO IMPLEMENT THESE
// =======================================================================
/**
* Retrieves the main street address.
* @throws RuntimeException if empty
*/
def getStreet1: String = {
// implementation
}
/**
* Retrieves additional street address line 2.
* @throws RuntimeException if empty or unable to get address
*/
def getStreet2: String = {
// implementation
}
/**
* Retrieves additional street address line 3.
* @throws RuntimeException if empty or unable to get address
*/
def getStreet3: String = {
// implementation
}
```