title: Marshalling nested custom Objects in Sangria
body: <p>I have the following Input Objects:</p>
  
  <pre><code>val BusinessInputType = InputObjectType[BusinessInput]("BusinessInput", List(
      InputField("userId", StringType),
      InputField("name", StringType),
      InputField("address", OptionInputType(StringType)),
      InputField("phonenumber", OptionInputType(StringType)),
      InputField("email", OptionInputType(StringType)),
      InputField("hours", ListInputType(BusinessHoursInputType))
  
    ))
  
  
   val BusinessHoursInputType = InputObjectType[BusinessHoursInput]("hours",  List(
      InputField("weekDay", IntType),
      InputField("startTime", StringType),
      InputField("endTime", StringType)
    ))
  </code></pre>
  
  <p>And here are my models with custom Marshalling defined:</p>
  
  <pre><code>case class BusinessInput(userId: String, name: String, address: Option[String], phonenumber: Option[String], email: Option[String], hours: Seq[BusinessHoursInput])
  
  object BusinessInput {
  
    implicit val manual = new FromInput[BusinessInput] {
      val marshaller = CoercedScalaResultMarshaller.default
  
      def fromResult(node: marshaller.Node) = {
        val ad = node.asInstanceOf[Map[String, Any]]
  
        System.out.println(ad)
        BusinessInput(
          userId = ad("userId").asInstanceOf[String],
          name = ad("name").asInstanceOf[String],
          address = ad.get("address").flatMap(_.asInstanceOf[Option[String]]),
          phonenumber = ad.get("phonenumber").flatMap(_.asInstanceOf[Option[String]]),
          email = ad.get("email").flatMap(_.asInstanceOf[Option[String]]),
          hours = ad("hours").asInstanceOf[Seq[BusinessHoursInput]]
  
        )
      }
    }
  }
  
  
  
  case class BusinessHoursInput(weekDay: Int, startTime: Time, endTime: Time)
  
  object BusinessHoursInput {
  
    implicit val manual = new FromInput[BusinessHoursInput] {
      val marshaller = CoercedScalaResultMarshaller.default
      def fromResult(node: marshaller.Node) = {
        val ad = node.asInstanceOf[Map[String, Any]]
        System.out.println("HEY")
  
        BusinessHoursInput(
          weekDay = ad("weekDay").asInstanceOf[Int],
          startTime = Time.valueOf(ad("startTime").asInstanceOf[String]),
          endTime = Time.valueOf(ad("endTime").asInstanceOf[String])
        )
      }
    }
  
  
  }
  </code></pre>
  
  <p>My question is, When I have a nested <code>InputObject</code> that has custom Marshalling, I dont see the marshalling of <code>BusinessHoursInput</code> getting invoked before the <code>BusinessInput</code> is marshalled. I noticed this because the print statement of "Hey" is never executed before the print statement of "ad" in <code>BusinessInput</code>. This causes problems later down the road for me when I try to insert the hours field of <code>BusinessInput</code> in the DB because it cannot cast it to <code>BusinessHoursInput</code> object. In Sangria, is it not possible to custom Marshal nested Objects before the parent Object is marshalled?</p>