---@meta

---@class _.lspconfig.settings.jdtls.Java.Autobuild
---Enable/disable the 'auto build'
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Cleanup
---The list of clean ups to be run on the current document when it's saved or when the cleanup command is issued. Clean ups can automatically fix code style or programming mistakes. Click [HERE](command:_java.learnMoreAboutCleanUps) to learn more about what each clean up does.
---
---```lua
---default = { "renameFileToType" }
---```
---@field actions? string[]
---```lua
---default = {}
---```
---@field actionsOnSave? string[]

---@class _.lspconfig.settings.jdtls.Java.CodeAction.SortMembers
---Reordering of fields, enum constants, and initializers can result in semantic and runtime changes due to different initialization and persistence order. This setting prevents this from occurring.
---
---```lua
---default = true
---```
---@field avoidVolatileChanges? boolean

---@class _.lspconfig.settings.jdtls.Java.CodeAction
---@field sortMembers? _.lspconfig.settings.jdtls.Java.CodeAction.SortMembers

---@class _.lspconfig.settings.jdtls.Java.CodeGeneration.HashCodeEquals
---Use 'instanceof' to compare types when generating the hashCode and equals methods.
---@field useInstanceof? boolean
---Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher.
---@field useJava7Objects? boolean

---@class _.lspconfig.settings.jdtls.Java.CodeGeneration.ToString
---The code style for generating the toString method.
---
---```lua
---default = "STRING_CONCATENATION"
---```
---@field codeStyle? "STRING_CONCATENATION" | "STRING_BUILDER" | "STRING_BUILDER_CHAINED" | "STRING_FORMAT"
---Limit number of items in arrays/collections/maps to list, if 0 then list all.
---
---```lua
---default = 0
---```
---@field limitElements? integer
---List contents of arrays instead of using native toString().
---
---```lua
---default = true
---```
---@field listArrayContents? boolean
---Skip null values when generating the toString method.
---@field skipNullValues? boolean
---The template for generating the toString method.
---
---```lua
---default = "${object.className} [${member.name()}=${member.value}, ${otherMembers}]"
---```
---@field template? string

---@class _.lspconfig.settings.jdtls.Java.CodeGeneration
---Whether to generate the 'final' modifer for code actions that create new declarations.
---
---```lua
---default = "none"
---```
---@field addFinalForNewDeclaration? "none" | "fields" | "variables" | "all"
---Generate method comments when generating the methods.
---@field generateComments? boolean
---@field hashCodeEquals? _.lspconfig.settings.jdtls.Java.CodeGeneration.HashCodeEquals
---Specifies the insertion location of the code generated by source actions.
---
---```lua
---default = "afterCursor"
---```
---@field insertionLocation? "afterCursor" | "beforeCursor" | "lastMember"
---@field toString? _.lspconfig.settings.jdtls.Java.CodeGeneration.ToString
---Use blocks in 'if' statements when generating the methods.
---@field useBlocks? boolean

---@class _.lspconfig.settings.jdtls.Java.Compile.NullAnalysis
---Specify how to enable the annotation-based null analysis.
---
---```lua
---default = "interactive"
---```
---@field mode? "disabled" | "interactive" | "automatic"
---Specify the Nonnull annotation types to be used for null analysis. If more than one annotation is specified, then the topmost annotation will be used first if it exists in project dependencies. This setting will be ignored if `java.compile.nullAnalysis.mode` is set to `disabled`
---
---```lua
---default = { "javax.annotation.Nonnull", "org.eclipse.jdt.annotation.NonNull", "org.springframework.lang.NonNull", "org.jspecify.annotations.NonNull" }
---```
---@field nonnull? any[]
---Specify the NonNullByDefault annotation types to be used for null analysis. If more than one annotation is specified, then the topmost annotation will be used first if it exists in project dependencies. This setting will be ignored if `java.compile.nullAnalysis.mode` is set to `disabled`
---
---```lua
---default = { "javax.annotation.ParametersAreNonnullByDefault", "org.eclipse.jdt.annotation.NonNullByDefault", "org.springframework.lang.NonNullApi", "org.jspecify.annotations.NullMarked" }
---```
---@field nonnullbydefault? any[]
---Specify the Nullable annotation types to be used for null analysis. If more than one annotation is specified, then the topmost annotation will be used first if it exists in project dependencies. This setting will be ignored if `java.compile.nullAnalysis.mode` is set to `disabled`
---
---```lua
---default = { "javax.annotation.Nullable", "org.eclipse.jdt.annotation.Nullable", "org.springframework.lang.Nullable", "org.jspecify.annotations.Nullable" }
---```
---@field nullable? any[]

---@class _.lspconfig.settings.jdtls.Java.Compile
---@field nullAnalysis? _.lspconfig.settings.jdtls.Java.Compile.NullAnalysis

---@class _.lspconfig.settings.jdtls.Java.Completion.Chain
---Enable/disable chain completion support. Chain completions are only available when completions are invoked by the completions shortcut
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Completion.LazyResolveTextEdit
---[Experimental] Enable/disable lazily resolving text edits for code completion.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Completion.Postfix
---Enable/disable postfix completion support. `#editor.snippetSuggestions#` can be used to customize how postfix snippets are sorted.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Completion
---@field chain? _.lspconfig.settings.jdtls.Java.Completion.Chain
---Enable/disable the collapse of overloaded methods in completion items. Overrides `#java.completion.guessMethodArguments#`.
---@field collapseCompletionItems? boolean
---Enable/disable code completion support
---
---```lua
---default = true
---```
---@field enabled? boolean
---[Experimental] Select code completion engine
---
---```lua
---default = "ecj"
---```
---@field engine? "ecj" | "dom"
---Defines a list of static members or types with static members. Content assist will propose those static members even if the import is missing.
---
---```lua
---default = { "org.junit.Assert.*", "org.junit.Assume.*", "org.junit.jupiter.api.Assertions.*", "org.junit.jupiter.api.Assumptions.*", "org.junit.jupiter.api.DynamicContainer.*", "org.junit.jupiter.api.DynamicTest.*", "org.mockito.Mockito.*", "org.mockito.ArgumentMatchers.*", "org.mockito.Answers.*" }
---```
---@field favoriteStaticMembers? any[]
---Defines the type filters. All types whose fully qualified name matches the selected filter strings will be ignored in content assist or quick fix proposals and when organizing imports. For example 'java.awt.*' will hide all types from the awt packages.
---
---```lua
---default = { "java.awt.*", "com.sun.*", "sun.*", "jdk.*", "org.graalvm.*", "io.micrometer.shaded.*" }
---```
---@field filteredTypes? any[]
---Specify how the arguments will be filled during completion.
---
---```lua
---default = "auto"
---```
---@field guessMethodArguments? "auto" | "off" | "insertParameterNames" | "insertBestGuessedArguments"
---Defines the sorting order of import statements. A package or type name prefix (e.g. 'org.eclipse') is a valid entry. An import is always added to the most specific group. As a result, the empty string (e.g. '') can be used to group all other imports. Static imports are prefixed with a '#'
---
---```lua
---default = { "#", "java", "javax", "org", "com", "" }
---```
---@field importOrder? any[]
---@field lazyResolveTextEdit? _.lspconfig.settings.jdtls.Java.Completion.LazyResolveTextEdit
---Specify whether to match case for code completion.
---
---```lua
---default = "firstLetter"
---```
---@field matchCase? "firstLetter" | "off"
---Maximum number of completion results (not including snippets).
---`0` (the default value) disables the limit, all results are returned. In case of performance problems, consider setting a sensible limit.
---
---```lua
---default = 0
---```
---@field maxResults? integer
---@field postfix? _.lspconfig.settings.jdtls.Java.Completion.Postfix

---@class _.lspconfig.settings.jdtls.Java.Configuration.Maven
---Specifies default mojo execution action when no associated metadata can be detected.
---
---```lua
---default = "ignore"
---```
---@field defaultMojoExecutionAction? "ignore" | "warn" | "error" | "execute"
---Path to Maven's global settings.xml
---@field globalSettings? string
---Path to Maven's lifecycle mappings xml
---@field lifecycleMappings? string
---Specifies severity if the plugin execution is not covered by Maven build lifecycle.
---
---```lua
---default = "warning"
---```
---@field notCoveredPluginExecutionSeverity? "ignore" | "warning" | "error"
---Path to Maven's user settings.xml
---@field userSettings? string

---@class _.lspconfig.settings.jdtls.Java.Configuration
---Controls whether to exclude extension-generated project settings files (.project, .classpath, .factorypath, .settings/) from the file explorer.
---@field checkProjectSettingsExclusions? boolean
---Automatically detect JDKs installed on local machine at startup. If you have specified the same JDK version in `#java.configuration.runtimes#`, the extension will use that version first.
---
---```lua
---default = true
---```
---@field detectJdksAtStart? boolean
---@field maven? _.lspconfig.settings.jdtls.Java.Configuration.Maven
---Map Java Execution Environments to local JDKs.
---
---```lua
---default = {}
---```
---@field runtimes? table[]
---Specifies how modifications on build files update the Java classpath/configuration
---
---```lua
---default = "interactive"
---```
---@field updateBuildConfiguration? "disabled" | "interactive" | "automatic"
---The number of days (if enabled) to keep unused workspace cache data. Beyond this limit, cached workspace data may be removed.
---
---```lua
---default = 90
---```
---@field workspaceCacheLimit? integer

---@class _.lspconfig.settings.jdtls.Java.ContentProvider
---Preferred content provider (a 3rd party decompiler id, usually)
---@field preferred? string

---@class _.lspconfig.settings.jdtls.Java.Diagnostic
---Specifies a list of file patterns for which matching documents should not have their diagnostics reported (eg. '**/Foo.java').
---
---```lua
---default = {}
---```
---@field filter? string[]

---@class _.lspconfig.settings.jdtls.Java.Eclipse
---Enable/disable download of Maven source artifacts for Eclipse projects.
---@field downloadSources? boolean

---@class _.lspconfig.settings.jdtls.Java.Edit.SmartSemicolonDetection
---Defines the `smart semicolon` detection. Defaults to `false`.
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Edit
---@field smartSemicolonDetection? _.lspconfig.settings.jdtls.Java.Edit.SmartSemicolonDetection
---Specifies whether to recheck all open Java files for diagnostics when editing a Java file.
---@field validateAllOpenBuffersOnChanges? boolean

---@class _.lspconfig.settings.jdtls.Java.Editor
---Specifies whether to reload the sources of the open class files when their source jar files are changed.
---
---```lua
---default = "ask"
---```
---@field reloadChangedSources? "ask" | "auto" | "manual"

---@class _.lspconfig.settings.jdtls.Java.Errors.IncompleteClasspath
---Specifies the severity of the message when the classpath is incomplete for a Java file
---
---```lua
---default = "warning"
---```
---@field severity? "ignore" | "info" | "warning" | "error"

---@class _.lspconfig.settings.jdtls.Java.Errors
---@field incompleteClasspath? _.lspconfig.settings.jdtls.Java.Errors.IncompleteClasspath

---@class _.lspconfig.settings.jdtls.Java.FoldingRange
---Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Format.Comments
---Includes the comments during code formatting.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Format.OnType
---Enable/disable automatic block formatting when typing `;`, `<enter>` or `}`
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Format.Settings
---Optional formatter profile name from the Eclipse formatter settings.
---@field profile? string
---Specifies the url or file path to the [Eclipse formatter xml settings](https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings).
---@field url? string

---@class _.lspconfig.settings.jdtls.Java.Format
---@field comments? _.lspconfig.settings.jdtls.Java.Format.Comments
---Enable/disable default Java formatter
---
---```lua
---default = true
---```
---@field enabled? boolean
---@field onType? _.lspconfig.settings.jdtls.Java.Format.OnType
---@field settings? _.lspconfig.settings.jdtls.Java.Format.Settings

---@class _.lspconfig.settings.jdtls.Java.Hover.Javadoc
---Enable/disable displaying Javadoc on hover.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Hover
---@field javadoc? _.lspconfig.settings.jdtls.Java.Hover.Javadoc

---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.AnnotationProcessing
---Enable/disable the annotation processing on Gradle projects and delegate Annotation Processing to JDT APT. Only works for Gradle 5.2 or higher.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.Java
---The location to the JVM used to run the Gradle daemon.
---@field home? string

---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.Offline
---Enable/disable the Gradle offline mode.
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.User
---Setting for GRADLE_USER_HOME.
---@field home? string

---@class _.lspconfig.settings.jdtls.Java.Import.Gradle.Wrapper
---Use Gradle from the 'gradle-wrapper.properties' file.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Import.Gradle
---@field annotationProcessing? _.lspconfig.settings.jdtls.Java.Import.Gradle.AnnotationProcessing
---Arguments to pass to Gradle.
---@field arguments? string
---Enable/disable the Gradle importer.
---
---```lua
---default = true
---```
---@field enabled? boolean
---Use Gradle from the specified local installation directory or GRADLE_HOME if the Gradle wrapper is missing or disabled and no 'java.import.gradle.version' is specified.
---@field home? string
---@field java? _.lspconfig.settings.jdtls.Java.Import.Gradle.Java
---JVM arguments to pass to Gradle.
---@field jvmArguments? string
---@field offline? _.lspconfig.settings.jdtls.Java.Import.Gradle.Offline
---@field user? _.lspconfig.settings.jdtls.Java.Import.Gradle.User
---Use Gradle from the specific version if the Gradle wrapper is missing or disabled.
---@field version? string
---@field wrapper? _.lspconfig.settings.jdtls.Java.Import.Gradle.Wrapper

---@class _.lspconfig.settings.jdtls.Java.Import.Maven.Offline
---Enable/disable the Maven offline mode.
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Import.Maven
---Enable/disable test classpath segregation. When enabled, this permits the usage of test resources within a Maven project as dependencies within the compile scope of other projects.
---@field disableTestClasspathFlag? boolean
---Enable/disable the Maven importer.
---
---```lua
---default = true
---```
---@field enabled? boolean
---@field offline? _.lspconfig.settings.jdtls.Java.Import.Maven.Offline

---@class _.lspconfig.settings.jdtls.Java.Import
---Configure glob patterns for excluding folders. Use `!` to negate patterns to allow subfolders imports. You have to include a parent directory. The order is important.
---
---```lua
---default = { "**/node_modules/**", "**/.metadata/**", "**/archetype-resources/**", "**/META-INF/maven/**" }
---```
---@field exclusions? any[]
---Specify whether the project metadata files(.project, .classpath, .factorypath, .settings/) will be generated at the project root. Click [HERE](command:_java.metadataFilesGeneration) to learn how to change the setting to make it take effect.
---@field generatesMetadataFilesAtProjectRoot? boolean
---@field gradle? _.lspconfig.settings.jdtls.Java.Import.Gradle
---@field maven? _.lspconfig.settings.jdtls.Java.Import.Maven
---[Experimental] Specifies how to select build configuration files to import. 
---Note: Currently, `Gradle` projects cannot be partially imported.
---
---```lua
---default = "automatic"
---```
---@field projectSelection? "manual" | "automatic"

---@class _.lspconfig.settings.jdtls.Java.Imports.Gradle.Wrapper
---Defines allowed/disallowed SHA-256 checksums of Gradle Wrappers
---
---```lua
---default = {}
---```
---@field checksums? table[]

---@class _.lspconfig.settings.jdtls.Java.Imports.Gradle
---@field wrapper? _.lspconfig.settings.jdtls.Java.Imports.Gradle.Wrapper

---@class _.lspconfig.settings.jdtls.Java.Imports
---@field gradle? _.lspconfig.settings.jdtls.Java.Imports.Gradle

---@class _.lspconfig.settings.jdtls.Java.InlayHints.FormatParameters
---Enable/disable inlay hints for format specifiers in format strings (e.g. `String.format()`, `String.formatted()`, `PrintStream.printf()`). Shows which argument corresponds to each format specifier.
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.InlayHints.ParameterNames
---Enable/disable inlay hints for parameter names:
---```java
---
---Integer.valueOf(/* s: */ '123', /* radix: */ 10)
--- 
---```
--- `#java.inlayHints.parameterNames.exclusions#` can be used to disable the inlay hints for methods.
---
---```lua
---default = "literals"
---```
---@field enabled? "none" | "literals" | "all"
---The patterns for the methods that will be disabled to show the inlay hints. Supported pattern examples:
--- - `java.lang.Math.*` - All the methods from java.lang.Math.
--- - `*.Arrays.asList` - Methods named as 'asList' in the types named as 'Arrays'.
--- - `*.println(*)` - Methods named as 'println'.
--- - `(from, to)` - Methods with two parameters named as 'from' and 'to'.
--- - `(arg*)` - Methods with one parameter whose name starts with 'arg'.
---
---```lua
---default = {}
---```
---@field exclusions? string[]
---Suppress parameter name hints on arguments following the same-name numbered pattern.
---
---```lua
---default = true
---```
---@field suppressWhenSameNameNumbered? boolean

---@class _.lspconfig.settings.jdtls.Java.InlayHints.ParameterTypes
---Enable/disable inlay hints for (lambda) parameter types:
---```java
---
---List.of(1, 2, 3, 4).filter(/*Integer */ n -> n % 2 == 0).toList();
--- 
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.InlayHints.VariableTypes
---Enable/disable inlay hints for implicit variable types:
---```java
---
---var foo /* :Path */ = Path.of("foo");
--- 
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.InlayHints
---@field formatParameters? _.lspconfig.settings.jdtls.Java.InlayHints.FormatParameters
---@field parameterNames? _.lspconfig.settings.jdtls.Java.InlayHints.ParameterNames
---@field parameterTypes? _.lspconfig.settings.jdtls.Java.InlayHints.ParameterTypes
---@field variableTypes? _.lspconfig.settings.jdtls.Java.InlayHints.VariableTypes

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.AndroidSupport
---[Experimental] Specify whether to enable Android project importing. When set to `auto`, the Android support will be enabled in Visual Studio Code - Insiders.
---
---**Note:** Only works for Android Gradle Plugin `3.2.0` or higher.
---
---```lua
---default = "auto"
---```
---@field enabled? "auto" | "on" | "off"

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.Appcds
---[Experimental] Enable Java AppCDS (Application Class Data Sharing) for improvements to extension activation. When set to `auto`, AppCDS will be enabled in Visual Studio Code - Insiders, and for pre-release versions.
---
---```lua
---default = "auto"
---```
---@field enabled? "auto" | "on" | "off"

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.AspectjSupport
---Specify whether to enable `io.freefair.aspectj` plugin in Gradle projects. Defaults to `false`.
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.GroovySupport
---[Experimental] Specify whether to enable `groovy` plugin in Gradle projects. Defaults to `true`.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.Java
---Specifies the folder path to the JDK (21 or more recent) used to launch the Java Language Server. This setting will replace the Java extension's embedded JRE to start the Java Language Server. 
---
---On Windows, backslashes must be escaped, i.e.
---"java.jdt.ls.java.home":"C:\\Program Files\\Java\\jdk-21.0_5"
---@field home? string

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.Javac
---[Experimental] Specify whether to enable Javac-based compilation in the language server. Requires running this extension with Java 25
---
---```lua
---default = "off"
---```
---@field enabled? "on" | "off"

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.KotlinSupport
---[Experimental] Specify whether to enable `org.jetbrains.kotlin.jvm` plugin in Gradle projects. Defaults to `true`.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.LombokSupport
---Whether to load lombok processors from project classpath
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.ProtobufSupport
---Specify whether to automatically add Protobuf output source directories to the classpath.
---
---**Note:** Only works for Gradle `com.google.protobuf` plugin `0.8.4` or higher.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls.ScalaSupport
---[Experimental] Specify whether to enable `scala` plugin in Gradle projects. Defaults to `true`.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Jdt.Ls
---@field androidSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.AndroidSupport
---@field appcds? _.lspconfig.settings.jdtls.Java.Jdt.Ls.Appcds
---@field aspectjSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.AspectjSupport
---@field groovySupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.GroovySupport
---@field java? _.lspconfig.settings.jdtls.Java.Jdt.Ls.Java
---@field javac? _.lspconfig.settings.jdtls.Java.Jdt.Ls.Javac
---@field kotlinSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.KotlinSupport
---@field lombokSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.LombokSupport
---@field protobufSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.ProtobufSupport
---@field scalaSupport? _.lspconfig.settings.jdtls.Java.Jdt.Ls.ScalaSupport
---Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable` to optimize memory usage with the parallel garbage collector
---
---```lua
---default = "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable"
---```
---@field vmargs? string

---@class _.lspconfig.settings.jdtls.Java.Jdt
---@field ls? _.lspconfig.settings.jdtls.Java.Jdt.Ls

---@class _.lspconfig.settings.jdtls.Java.Maven
---Enable/disable download of Maven source artifacts as part of importing Maven projects.
---@field downloadSources? boolean
---Force update of Snapshots/Releases.
---@field updateSnapshots? boolean

---@class _.lspconfig.settings.jdtls.Java.Project
---Project encoding settings
---
---```lua
---default = "ignore"
---```
---@field encoding? "ignore" | "warning" | "setDefault"
---Enable/disable the server-mode switch information, when Java projects import is skipped on startup.
---
---```lua
---default = true
---```
---@field importHint? boolean
---Specifies whether to import the Java projects, when opening the folder in Hybrid mode for the first time.
---
---```lua
---default = "automatic"
---```
---@field importOnFirstTimeStartup? "disabled" | "interactive" | "automatic"
---A relative path to the workspace where stores the compiled output. `Only` effective in the `WORKSPACE` scope. The setting will `NOT` affect Maven or Gradle project.
---
---```lua
---default = ""
---```
---@field outputPath? string
---Configure glob patterns for referencing local libraries to a Java project.
---
---```lua
---default = { "lib/**/*.jar" }
---```
---@field referencedLibraries? any[]|table
---Excludes files and folders from being refreshed by the Java Language Server, which can improve the overall performance. For example, ["node_modules","\.git"] will exclude all files and folders named `node_modules` or `.git`. Pattern expressions must be compatible with `java.util.regex.Pattern`. Defaults to ["node_modules","\.git"].
---
---```lua
---default = { "node_modules", "\\.git" }
---```
---@field resourceFilters? string[]
---Relative paths to the workspace where stores the source files. `Only` effective in the `WORKSPACE` scope. The setting will `NOT` affect Maven or Gradle project.
---
---```lua
---default = {}
---```
---@field sourcePaths? string[]

---@class _.lspconfig.settings.jdtls.Java.Quickfix
---Show quickfixes at the problem or line level.
---
---```lua
---default = "line"
---```
---@field showAt? "line" | "problem"

---@class _.lspconfig.settings.jdtls.Java.Refactoring.Extract.Interface
---Specify whether to replace all the occurrences of the subtype with the new extracted interface.
---
---```lua
---default = true
---```
---@field replace? boolean

---@class _.lspconfig.settings.jdtls.Java.Refactoring.Extract
---@field interface? _.lspconfig.settings.jdtls.Java.Refactoring.Extract.Interface

---@class _.lspconfig.settings.jdtls.Java.Refactoring
---@field extract? _.lspconfig.settings.jdtls.Java.Refactoring.Extract

---@class _.lspconfig.settings.jdtls.Java.References
---Include getter, setter and builder/constructor when finding references.
---
---```lua
---default = true
---```
---@field includeAccessors? boolean
---Include declarations when finding references.
---
---```lua
---default = true
---```
---@field includeDeclarations? boolean
---Include the decompiled sources when finding references.
---
---```lua
---default = true
---```
---@field includeDecompiledSources? boolean

---@class _.lspconfig.settings.jdtls.Java.ReferencesCodeLens
---Enable/disable the references code lens.
---@field enabled? boolean
---Enable/disable the references code lens for fields.
---@field includeFields? boolean

---@class _.lspconfig.settings.jdtls.Java.SaveActions
---Enable/disable cleanup actions on save.
---
---```lua
---default = true
---```
---@field cleanup? boolean
---Enable/disable auto organize imports on save action
---@field organizeImports? boolean

---@class _.lspconfig.settings.jdtls.Java.Search
---Specifies the scope which must be used for search operation like 
--- - Find Reference
--- - Call Hierarchy
--- - Workspace Symbols
---
---```lua
---default = "all"
---```
---@field scope? "all" | "main"

---@class _.lspconfig.settings.jdtls.Java.SelectionRange
---Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Server
---The launch mode for the Java extension
---
---```lua
---default = "Hybrid"
---```
---@field launchMode? "Standard" | "LightWeight" | "Hybrid"

---@class _.lspconfig.settings.jdtls.Java.Settings
---Specifies the url or file path to the workspace Java settings. See [Setting Global Preferences](https://github.com/redhat-developer/vscode-java/wiki/Settings-Global-Preferences)
---@field url? string

---@class _.lspconfig.settings.jdtls.Java.SharedIndexes
---[Experimental] Specify whether to share indexes between different workspaces. When set to `auto`, shared indexes will be enabled in Visual Studio Code - Insiders.
---
---```lua
---default = "auto"
---```
---@field enabled? "auto" | "on" | "off"
---Specifies a common index location for all workspaces. See default values as follows:
--- 
---Windows: First use `"$APPDATA\\.jdt\\index"`, or `"~\\.jdt\\index"` if it does not exist
--- 
---macOS: `"~/Library/Caches/.jdt/index"`
--- 
---Linux: First use `"$XDG_CACHE_HOME/.jdt/index"`, or `"~/.cache/.jdt/index"` if it does not exist
---
---```lua
---default = ""
---```
---@field location? string

---@class _.lspconfig.settings.jdtls.Java.ShowBuildStatusOnStart
---Automatically show build status on startup.
---
---```lua
---default = "notification"
---```
---@field enabled? "notification" | "terminal" | "off"|any

---@class _.lspconfig.settings.jdtls.Java.SignatureHelp.Description
---Enable/disable to show the description in signature help.
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.SignatureHelp
---@field description? _.lspconfig.settings.jdtls.Java.SignatureHelp.Description
---Enable/disable the signature help.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Sources.OrganizeImports
---Specifies the number of imports added before a star-import declaration is used.
---
---```lua
---default = 99
---```
---@field starThreshold? integer
---Specifies the number of static imports added before a star-import declaration is used.
---
---```lua
---default = 99
---```
---@field staticStarThreshold? integer

---@class _.lspconfig.settings.jdtls.Java.Sources
---@field organizeImports? _.lspconfig.settings.jdtls.Java.Sources.OrganizeImports

---@class _.lspconfig.settings.jdtls.Java.Symbols
---Include generated code (e.g. Lombok getters, setters, constructors) in document outline/symbols.
---@field includeGeneratedCode? boolean
---Include method declarations from source files in symbol search.
---@field includeSourceMethodDeclarations? boolean

---@class _.lspconfig.settings.jdtls.Java.Templates.NewFile
---Enable/disable automatic generation of class body and package declaration when creating a new Java file. Set to `false` to create empty Java files. Defaults to `true`.
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java.Templates
---Specifies the catch block body snippet (e.g. generated by "Surround with try/catch"). Supports configuring multi-line content with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).
---
---```lua
---default = { "// ${todo} Auto-generated catch block", "${exception_var}.printStackTrace();" }
---```
---@field catchBody? any[]
---Specifies the file header comment for new Java file. Supports configuring multi-line comments with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).
---
---```lua
---default = {}
---```
---@field fileHeader? any[]
---Specifies the method body snippet for unimplemented methods (e.g. generated by "Add unimplemented methods"). Supports configuring multi-line content with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).
---
---```lua
---default = { "// ${todo} Auto-generated method stub", "throw new UnsupportedOperationException(\"Unimplemented method '${enclosing_method}'\");" }
---```
---@field methodBody? any[]
---Specifies the method body snippet for overridden methods that call `super` (e.g. generated by "Override/Implement Methods"). Supports configuring multi-line content with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).
---
---```lua
---default = { "// ${todo} Auto-generated method stub", "${body_statement}" }
---```
---@field methodBodySuper? any[]
---@field newFile? _.lspconfig.settings.jdtls.Java.Templates.NewFile
---Specifies the type comment for new Java type. Supports configuring multi-line comments with an array of strings, and using ${variable} to reference the [predefined variables](command:_java.templateVariables).
---
---```lua
---default = {}
---```
---@field typeComment? any[]

---@class _.lspconfig.settings.jdtls.Java.Trace
---Traces the communication between VS Code and the Java language server.
---
---```lua
---default = "off"
---```
---@field server? "off" | "messages" | "verbose"

---@class _.lspconfig.settings.jdtls.Java.TypeHierarchy
---Enable/disable lazy loading the content in type hierarchy. Lazy loading could save a lot of loading time but every type should be expanded manually to load its content.
---@field lazyLoad? boolean

---@class _.lspconfig.settings.jdtls.Java.UpdateImportsOnPaste
---Enable/disable auto organize imports when pasting code
---
---```lua
---default = true
---```
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Java
---@field autobuild? _.lspconfig.settings.jdtls.Java.Autobuild
---@field cleanup? _.lspconfig.settings.jdtls.Java.Cleanup
---@field codeAction? _.lspconfig.settings.jdtls.Java.CodeAction
---@field codeGeneration? _.lspconfig.settings.jdtls.Java.CodeGeneration
---@field compile? _.lspconfig.settings.jdtls.Java.Compile
---@field completion? _.lspconfig.settings.jdtls.Java.Completion
---@field configuration? _.lspconfig.settings.jdtls.Java.Configuration
---@field contentProvider? _.lspconfig.settings.jdtls.Java.ContentProvider
---@field diagnostic? _.lspconfig.settings.jdtls.Java.Diagnostic
---@field eclipse? _.lspconfig.settings.jdtls.Java.Eclipse
---@field edit? _.lspconfig.settings.jdtls.Java.Edit
---@field editor? _.lspconfig.settings.jdtls.Java.Editor
---@field errors? _.lspconfig.settings.jdtls.Java.Errors
---@field foldingRange? _.lspconfig.settings.jdtls.Java.FoldingRange
---@field format? _.lspconfig.settings.jdtls.Java.Format
---Specifies the folder path to the JDK (21 or more recent) used to launch the Java Language Server.
---On Windows, backslashes must be escaped, i.e.
---"java.home":"C:\\Program Files\\Java\\jdk-21.0_5"
---@field home? string
---@field hover? _.lspconfig.settings.jdtls.Java.Hover
---Enable/disable the implementations code lens for the provided categories.
---
---```lua
---default = "none"
---```
---@field implementationCodeLens? "none" | "types" | "methods" | "all"
---@field import? _.lspconfig.settings.jdtls.Java.Import
---@field imports? _.lspconfig.settings.jdtls.Java.Imports
---@field inlayHints? _.lspconfig.settings.jdtls.Java.InlayHints
---@field jdt? _.lspconfig.settings.jdtls.Java.Jdt
---@field maven? _.lspconfig.settings.jdtls.Java.Maven
---Max simultaneous project builds
---
---```lua
---default = 1
---```
---@field maxConcurrentBuilds? integer
---@field project? _.lspconfig.settings.jdtls.Java.Project
---@field quickfix? _.lspconfig.settings.jdtls.Java.Quickfix
---@field refactoring? _.lspconfig.settings.jdtls.Java.Refactoring
---@field references? _.lspconfig.settings.jdtls.Java.References
---@field referencesCodeLens? _.lspconfig.settings.jdtls.Java.ReferencesCodeLens
---@field saveActions? _.lspconfig.settings.jdtls.Java.SaveActions
---@field search? _.lspconfig.settings.jdtls.Java.Search
---@field selectionRange? _.lspconfig.settings.jdtls.Java.SelectionRange
---@field server? _.lspconfig.settings.jdtls.Java.Server
---@field settings? _.lspconfig.settings.jdtls.Java.Settings
---@field sharedIndexes? _.lspconfig.settings.jdtls.Java.SharedIndexes
---@field showBuildStatusOnStart? _.lspconfig.settings.jdtls.Java.ShowBuildStatusOnStart
---@field signatureHelp? _.lspconfig.settings.jdtls.Java.SignatureHelp
---@field sources? _.lspconfig.settings.jdtls.Java.Sources
---@field symbols? _.lspconfig.settings.jdtls.Java.Symbols
---@field templates? _.lspconfig.settings.jdtls.Java.Templates
---@field trace? _.lspconfig.settings.jdtls.Java.Trace
---@field typeHierarchy? _.lspconfig.settings.jdtls.Java.TypeHierarchy
---@field updateImportsOnPaste? _.lspconfig.settings.jdtls.Java.UpdateImportsOnPaste

---@class _.lspconfig.settings.jdtls.Redhat.Telemetry
---Enable usage data and errors to be sent to Red Hat servers. Read our [privacy statement](https://developers.redhat.com/article/tool-data-collection).
---@field enabled? boolean

---@class _.lspconfig.settings.jdtls.Redhat
---@field telemetry? _.lspconfig.settings.jdtls.Redhat.Telemetry

---@class lspconfig.settings.jdtls
---@field java? _.lspconfig.settings.jdtls.Java
---@field redhat? _.lspconfig.settings.jdtls.Redhat
