private static TestList <ExpectedResponse> HydrateExpected(IEnumerable <XElement> xmlExpected) { TestList <ExpectedResponse> expected = (from ex in xmlExpected select new ExpectedResponse() { Key = ex.Element(Namespace + "KeyExpression") == null ? null : new Evaluator(ex.Element(Namespace + "KeyExpression").Value), Trim = Convert.ToBoolean(Value(ex.Attribute(Namespace + "Trim"))), Expressions = HydrateExpressions(ex), Destination = ex.Element(Namespace + "Destination") == null ? null : new ResponseDestination { Name = ex.Element(Namespace + "Destination").Element(Namespace + "Name").Value, Default = new ValueHelper(ex.Element(Namespace + "Destination").Element(Namespace + "Default").Value) }, FailureMessage = ex.Element(Namespace + "FailureMessage") == null ? "" : ex.Element(Namespace + "FailureMessage").Value }).ToTestList(); if ((expected.Count > 1) && (expected.Any(er => (er.Key == null) && (er.Expressions.Count > 0)))) { throw new InvalidOperationException("When a response element contains sub fields (i.e. multiple expected elements), every expected element must contain a KeyExpression."); } return(expected); }