docs: @Override
      public void validate(ValidationHelper helper, Context context, String key, Link t) {
  
          if (t != null) {
  
              String reference = t.getRef();
  
              if (reference != null && !reference.isEmpty()) {
                  ValidatorUtils.referenceValidatorHelper(reference, t, helper, context, key);
                  return;
              }
  
              boolean operationRefDefined = t.getOperationRef() != null && !t.getOperationRef().isEmpty();
              boolean operationIdDefined = t.getOperationId() != null && !t.getOperationId().isEmpty();
  
              if (operationRefDefined && operationIdDefined) {
                  final String message = Tr.formatMessage(tc, "linkOperationRefAndId", key);
                  helper.addValidationEvent(new ValidationEvent(ValidationEvent.Severity.WARNING, context.getLocation(), message));
              }
  
              if (!operationRefDefined && !operationIdDefined) {
                  final String message = Tr.formatMessage(tc, "linkMustSpecifyOperationRefOrId", key);
                  helper.addValidationEvent(new ValidationEvent(ValidationEvent.Severity.ERROR, context.getLocation(), message));
              } else {
                  if (operationIdDefined) {
                      helper.addLinkOperationId(t.getOperationId(), context.getLocation());
                  }
  
                  if (operationRefDefined) {
                      if (t.getOperationRef().startsWith("#")) {
                          boolean isValid = true;
                          String[] operationRef;
                          if (!t.getOperationRef().startsWith("#/paths/") || (operationRef = t.getOperationRef().split("/")).length != 4) {
                              isValid = false;
                          } else {
                              String pathKey = operationRef[2].replace("~1", "/").replace("~0", "~");
                              Paths paths = context.getModel().getPaths();
  
                              if (paths != null && paths.get(pathKey) != null) {
                                  String op = operationRef[3];
                                  switch (op) {
                                      case "get":
                                          if (paths.get(pathKey).getGET() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "put":
                                          if (paths.get(pathKey).getPUT() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "post":
                                          if (paths.get(pathKey).getPOST() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "delete":
                                          if (paths.get(pathKey).getDELETE() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "trace":
                                          if (paths.get(pathKey).getTRACE() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "head":
                                          if (paths.get(pathKey).getHEAD() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "patch":
                                          if (paths.get(pathKey).getPATCH() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      case "options":
                                          if (paths.get(pathKey).getOPTIONS() == null) {
                                              isValid = false;
                                          }
                                          break;
                                      default:
                                          isValid = false;
                                          break;
                                  }
                              } else {
                                  isValid = false;
                              }
                          }
                          if (!isValid) {
                              final String message = Tr.formatMessage(tc, "linkOperationRefInvalidOrMissing", key, t.getOperationRef());
                              helper.addValidationEvent(new ValidationEvent(ValidationEvent.Severity.ERROR, context.getLocation(), message));
                          }
                      }
                  }
              }
          }
      }