code: public static function visitUsingRules(Schema $schema, TypeInfo $typeInfo, DocumentNode $documentNode, array $rules)
      {
          $context  = new ValidationContext($schema, $documentNode, $typeInfo);
          $visitors = [];
          foreach ($rules as $rule) {
              $visitors[] = $rule->getVisitor($context);
          }
          Visitor::visit($documentNode, Visitor::visitWithTypeInfo($typeInfo, Visitor::visitInParallel($visitors)));
  
          return $context->getErrors();
      }
docs: This uses a specialized visitor which runs multiple visitors in parallel,
  while maintaining the visitor skip and break API.
  
  @param ValidationRule[] $rules
  
  @return Error[]