private static @Nullable ZenCodingGenerator findApplicableGenerator(ZenCodingNode node, CustomTemplateCallback callback, boolean wrapping) {
    ZenCodingGenerator defaultGenerator = null;
    List<ZenCodingGenerator> generators = ZenCodingGenerator.getInstances();
    PsiElement context = callback.getContext();
    for (ZenCodingGenerator generator : generators) {
      if (generator.isMyContext(callback, wrapping) && generator.isAppliedByDefault(context)) {
        defaultGenerator = generator;
        break;
      }
    }
    while (node instanceof FilterNode filterNode) {
      String suffix = filterNode.getFilter();
      for (ZenCodingGenerator generator : generators) {
        if (generator.isMyContext(callback, wrapping)) {
          if (suffix != null && suffix.equals(generator.getSuffix())) {
            return generator;
          }
        }
      }
      node = filterNode.getNode();
    }
    return defaultGenerator;
  }
private static @Nullable ZenCodingGenerator findApplicableGenerator(ZenCodingNode node, CustomTemplateCallback callback, boolean wrapping)