public static IObjectIntersectionOf Intersect(
     this IObjectIntersectionOf lhs,
     IClassExpression rhs
     )
 {
     lhs.ClassExpressions.Add(rhs);
     return(lhs);
 }
 void IClassExpressionVisitor.Visit(
     IObjectIntersectionOf objectIntersectionOf
     )
 {
     _enter?.Visit(objectIntersectionOf);
     objectIntersectionOf.ClassExpressions.ForEach(classExpression => classExpression.Accept(this));
     _exit?.Visit(objectIntersectionOf);
 }
 public virtual void Visit(IObjectIntersectionOf objectIntersectionOf)
 {
 }
 bool IClassMembershipEvaluator.Evaluate(
     IObjectIntersectionOf objectIntersectionOf,
     object individual
     ) => objectIntersectionOf.ClassExpressions.All(classExpression => classExpression.Evaluate(
                                                        this,
                                                        individual));