private static @NonNls String createThreadLocalInitializerReplacement(PsiType from, PsiClassType to, PsiElement context) {
    if (PsiUtil.isAvailable(JavaFeature.THREAD_LOCAL_WITH_INITIAL, context)) {
      return "java.lang.ThreadLocal.withInitial(() -> " + coerceType("$qualifier$", from, to, context) + ")";
    }
    final StringBuilder result = new StringBuilder("new ");
    result.append(to.getCanonicalText()).append("() {\n");
    if (PsiUtil.isAvailable(JavaFeature.ANNOTATIONS, context)) {
      result.append("  @").append(CommonClassNames.JAVA_LANG_OVERRIDE).append("\n");
    }
    result.append("  protected ")
      .append(PsiUtil.isAvailable(JavaFeature.GENERICS, context) ? to.getParameters()[0].getCanonicalText() : CommonClassNames.JAVA_LANG_OBJECT)
      .append(" initialValue() {\n")
      .append("    return ")
      .append(coerceType("$qualifier$", from, to, context)).append(";\n")
      .append("  }\n")
      .append("}");
    return result.toString();
  }
private static @NonNls String createThreadLocalInitializerReplacement(PsiType from, PsiClassType to, PsiElement context)