public static @Nullable ZenCodingNode parse(@NotNull String text,
                                              @NotNull CustomTemplateCallback callback,
                                              @NotNull ZenCodingGenerator generator,
                                              @Nullable String surroundedText) {
    List<ZenCodingToken> tokens = new EmmetLexer().lex(text);
    if (tokens == null) {
      return null;
    }
    if (!validate(tokens, generator)) {
      return null;
    }
    EmmetParser parser = generator.createParser(tokens, callback, generator, surroundedText != null);
    ZenCodingNode node = parser.parse();
    if (parser.getIndex() != tokens.size() || node instanceof TextNode) {
      return null;
    }
    return node;
  }
public static @Nullable ZenCodingNode parse(@NotNull String text,
                                              @NotNull CustomTemplateCallback callback,
                                              @NotNull ZenCodingGenerator generator,
                                              @Nullable String surroundedText)