public override void Accept(IEquipmentVisitor visitor) { // visit all sub parts EquipmentList.ForEach(i => i.Accept(visitor)); // then visit current part visitor.Visit(this); }