public IEnumerable <IError> Validate() { foreach (var error in OutputType.SwitchReturns(x => x.Validate(), x => new[] { x })) { yield return(error); } foreach (var error in ContextDefinition.Validate()) { yield return(error); } foreach (var error in ParameterDefinition.Validate()) { yield return(error); } foreach (var error in Scope.GetValue().Validate()) { yield return(error); } foreach (var line in MethodBody.GetValue().OfType <IIsDefinately <IBox <IFrontendCodeElement> > >().Select(x => x.Value)) { foreach (var error in line.GetValue().Validate()) { yield return(error); } } foreach (var error in MethodBody.GetValue().OfType <IIsDefinately <IError> >().Select(x => x.Value)) { yield return(error); } foreach (var line in StaticInitialzers) { foreach (var error in line.Validate()) { yield return(error); } } }