protected virtual bool ValidateInternal(INode focusNode, IEnumerable <INode> valueNodes, Report report) { var components = ( from component in Graph.ConstraintComponents where component.Matches(this) select component.Constraints(this)) .Aggregate(Enumerable.Empty <Constraint>(), (first, second) => first.Concat(second)); return(( from constraint in Constraints.Concat(components) select constraint.Validate(focusNode, valueNodes, report)) .Aggregate(true, (first, second) => first && second)); }