@Contract(pure = true)
  public @NotNull Element wrapWith(@NotNull @NonNls String tagName) {
    return new Element(tagName, UnmodifiableHashMap.empty(), Collections.singletonList(this));
  }
@Contract(pure = true)
  public @NotNull Element wrapWith(@NotNull @NonNls String tagName)