MYCleanUpConstants.java

package org.sandbox.jdt.internal.corext.fix2;

/*-
 * #%L
 * Sandbox common
 * %%
 * Copyright (C) 2024 hammer
 * %%
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License, v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is
 * available at https://www.gnu.org/software/classpath/license.html.
 * 
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 * #L%
 */


/**
 * @author chammer
 *
 */
public class MYCleanUpConstants {

	/**
	 *
	 */
	public static final String EXPLICITENCODING_CLEANUP= "cleanup.explicit_encoding"; //$NON-NLS-1$

	/**
	 * Don't change behavior - just replace or insert to make use of platform encoding visible in the code.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 *
	 */
	public static final String EXPLICITENCODING_KEEP_BEHAVIOR= "cleanup.explicit_encoding_keep_behavior"; //$NON-NLS-1$

	/**
	 * Set all uses of platform encoding explicitly to UTF-8 - This changes behavior of the resulting code!
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 *
	 */
	public static final String EXPLICITENCODING_INSERT_UTF8= "cleanup.explicit_encoding_insert_utf8"; //$NON-NLS-1$

	/**
	 * Set all uses of platform encoding explicitly to UTF-8 - This changes behavior of the resulting code!
	 * At the same time try to have a single constant per project for this encoding that is referenced whenever
	 * code is changed to use this charset. That way later it is easy to change the default.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 *
	 */
	public static final String EXPLICITENCODING_AGGREGATE_TO_UTF8= "cleanup.explicit_encoding_aggregate_to_utf8"; //$NON-NLS-1$

	/**
	 *
	 */
	public static final String SIMPLIFY_STATUS_CLEANUP= "cleanup.simplify_status_creation"; //$NON-NLS-1$

	/**
	 *
	 */
	public static final String XML_CLEANUP= "cleanup.xmlcleanup"; //$NON-NLS-1$
	
	/**
	 * Enable indentation for XML cleanup. When disabled (default), indent="no" is used
	 * to minimize file size. When enabled, minimal indentation is applied.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String XML_CLEANUP_INDENT= "cleanup.xmlcleanup_indent"; //$NON-NLS-1$
	
	/**
	 *
	 */
	public static final String JUNIT_CLEANUP= "cleanup.junitcleanup"; //$NON-NLS-1$
	/**
	 *
	 */
	public static final String JUNIT3_CLEANUP= "cleanup.junit3cleanup"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_ASSERT= "cleanup.junitcleanup_4_assert"; //$NON-NLS-1$
	/**
	 * Optimization of assertTrue/assertFalse to more specific assertions
	 */
	public static final String JUNIT_CLEANUP_4_ASSERT_OPTIMIZATION= "cleanup.junitcleanup_4_assert_optimization"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_ASSUME= "cleanup.junitcleanup_4_assume"; //$NON-NLS-1$
	/**
	 * Optimization of assumeTrue/assumeFalse to more specific assumptions
	 */
	public static final String JUNIT_CLEANUP_4_ASSUME_OPTIMIZATION= "cleanup.junitcleanup_4_assume_optimization"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_SUITE= "cleanup.junitcleanup_4_suite"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_BEFORE= "cleanup.junitcleanup_4_before"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_AFTER= "cleanup.junitcleanup_4_after"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_BEFORECLASS= "cleanup.junitcleanup_4_beforeclass"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_AFTERCLASS= "cleanup.junitcleanup_4_afterclass"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_IGNORE= "cleanup.junitcleanup_4_ignore"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_CATEGORY= "cleanup.junitcleanup_4_category"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_FIX_METHOD_ORDER= "cleanup.junitcleanup_4_fix_method_order"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_TEST= "cleanup.junitcleanup_4_test"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_3_TEST= "cleanup.junitcleanup_3_test"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_RULETEMPORARYFOLDER= "cleanup.junitcleanup_4_ruletemporaryfolder"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_RULETESTNAME= "cleanup.junitcleanup_4_ruletestname"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_EXTERNALRESOURCE= "cleanup.junitcleanup_4_externalresource"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_RULEEXTERNALRESOURCE= "cleanup.junitcleanup_4_ruleexternalresource"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_RUNWITH= "cleanup.junitcleanup_4_runwith"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_TEST_TIMEOUT= "cleanup.junitcleanup_4_test_timeout"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_TEST_EXPECTED= "cleanup.junitcleanup_4_test_expected"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_PARAMETERIZED= "cleanup.junitcleanup_4_parameterized"; //$NON-NLS-1$
	/**
	 * 
	 */
	public static final String JUNIT_CLEANUP_4_RULETIMEOUT= "cleanup.junitcleanup_4_ruletimeout"; //$NON-NLS-1$
	/**
	 * Migrate JUnit 4 @Rule ExpectedException to JUnit 5 assertThrows()
	 */
	public static final String JUNIT_CLEANUP_4_RULEEXPECTEDEXCEPTION= "cleanup.junitcleanup_4_ruleexpectedexception"; //$NON-NLS-1$
	/**
	 * Migrate JUnit 4 @Rule ErrorCollector to JUnit 5 assertAll() pattern
	 */
	public static final String JUNIT_CLEANUP_4_RULEERRORCOLLECTOR= "cleanup.junitcleanup_4_ruleerrorcollector"; //$NON-NLS-1$
	/**
	 * Find and fix "lost" JUnit 3 tests that were not properly migrated
	 * (methods starting with "test" but missing @Test annotation)
	 */
	public static final String JUNIT_CLEANUP_4_LOST_TESTS= "cleanup.junitcleanup_4_lost_tests"; //$NON-NLS-1$
	/**
	 * Migrate JUnit 4 ThrowingRunnable to JUnit 5 Executable.
	 * <p>
	 * Transforms:
	 * <ul>
	 * <li>org.junit.function.ThrowingRunnable → org.junit.jupiter.api.function.Executable</li>
	 * <li>ThrowingRunnable.run() → Executable.execute()</li>
	 * </ul>
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see <a href="https://github.com/eclipse-platform/eclipse.platform/issues/903">Eclipse Platform Issue #903</a>
	 */
	public static final String JUNIT_CLEANUP_4_THROWINGRUNNABLE= "cleanup.junitcleanup_4_throwingrunnable"; //$NON-NLS-1$
	/**
	 *
	 */
	public static final String JFACE_CLEANUP= "cleanup.jfacecleanup"; //$NON-NLS-1$

	/**
	 * Enable migration from SubProgressMonitor to SubMonitor (JFace Monitor API modernization).
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String JFACE_CLEANUP_MONITOR = "cleanup.jfacecleanup_monitor"; //$NON-NLS-1$

	/**
	 * Enable migration from ViewerSorter to ViewerComparator (JFace ViewerSorter API modernization).
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String JFACE_CLEANUP_VIEWER_SORTER = "cleanup.jfacecleanup_viewer_sorter"; //$NON-NLS-1$

	/**
	 * Enable migration from ImageData to ImageDataProvider for DPI/zoom awareness (JFace Image API modernization).
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String JFACE_CLEANUP_IMAGE_DPI = "cleanup.jfacecleanup_image_dpi"; //$NON-NLS-1$

	/**
	 *
	 */
	public static final String USEFUNCTIONALLOOP_CLEANUP= "cleanup.functionalloop"; //$NON-NLS-1$

	/**
	 * NEU: V2 Konstante für parallele Implementierung (ULR-basiert)
	 * 
	 * @see <a href="https://github.com/carstenartur/sandbox/issues/450">Issue #450</a>
	 */
	public static final String USEFUNCTIONALLOOP_CLEANUP_V2= "cleanup.use_functional_loop_v2"; //$NON-NLS-1$

	/**
	 * Target format for loop conversions: Stream (default)
	 */
	public static final String USEFUNCTIONALLOOP_FORMAT_STREAM= "cleanup.functionalloop.format.stream"; //$NON-NLS-1$

	/**
	 * Target format for loop conversions: For-loop
	 */
	public static final String USEFUNCTIONALLOOP_FORMAT_FOR= "cleanup.functionalloop.format.for"; //$NON-NLS-1$

	/**
	 * Target format for loop conversions: While-loop
	 */
	public static final String USEFUNCTIONALLOOP_FORMAT_WHILE= "cleanup.functionalloop.format.while"; //$NON-NLS-1$

	// Bidirectional Loop Conversion Constants (Phase 9)
	
	/**
	 * Master switch for bidirectional loop conversions.
	 * When enabled, allows converting between different loop representations
	 * (Stream, Enhanced-for, Iterator-while) based on target format and source selections.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String LOOP_CONVERSION_ENABLED = "cleanup.loop_conversion.enabled"; //$NON-NLS-1$

	/**
	 * Target format for bidirectional loop conversions.
	 * Specifies the desired output format for all enabled source formats.
	 * <p>
	 * Possible values: "stream", "enhanced_for", "iterator_while"
	 * <p>
	 * Default: "stream"
	 */
	public static final String LOOP_CONVERSION_TARGET_FORMAT = "cleanup.loop_conversion.target_format"; //$NON-NLS-1$

	/**
	 * Enable conversion FROM enhanced for-loops.
	 * When enabled, enhanced for-loops will be converted to the target format.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String LOOP_CONVERSION_FROM_ENHANCED_FOR = "cleanup.loop_conversion.from.enhanced_for"; //$NON-NLS-1$

	/**
	 * Enable conversion FROM iterator while-loops.
	 * When enabled, iterator-based while-loops will be converted to the target format.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String LOOP_CONVERSION_FROM_ITERATOR_WHILE = "cleanup.loop_conversion.from.iterator_while"; //$NON-NLS-1$

	/**
	 * Enable conversion FROM stream expressions.
	 * When enabled, stream forEach expressions will be converted to the target format.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String LOOP_CONVERSION_FROM_STREAM = "cleanup.loop_conversion.from.stream"; //$NON-NLS-1$

	/**
	 * Enable conversion FROM classic index-based for-loops (experimental).
	 * When enabled, classic for-loops will be converted to the target format.
	 * <p>
	 * Note: This is an experimental feature for future implementation.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String LOOP_CONVERSION_FROM_CLASSIC_FOR = "cleanup.loop_conversion.from.classic_for"; //$NON-NLS-1$

	/**
	 *
	 */
	public static final String METHOD_REUSE_CLEANUP= "cleanup.method_reuse"; //$NON-NLS-1$

	/**
	 * Enable detection of inline code sequences that can be replaced with method calls.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String METHOD_REUSE_INLINE_SEQUENCES= "cleanup.method_reuse_inline_sequences"; //$NON-NLS-1$

	/**
	 * Enable string simplification cleanup using TriggerPattern hints.
	 * <p>
	 * Simplifies patterns like {@code "" + x} and {@code x + ""} to {@code String.valueOf(x)}.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 * @since 1.2.2
	 */
	public static final String TRIGGERPATTERN_STRING_SIMPLIFICATION_CLEANUP= "cleanup.string_simplification"; //$NON-NLS-1$

	/**
	 * Enable threading cleanup using TriggerPattern hints.
	 * <p>
	 * Currently detects threading anti-patterns where {@code Thread.run()} is called
	 * directly instead of {@code Thread.start()}.
	 * <p>
	 * Inspired by NetBeans' threading hints (Tiny.java).
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 * @since 1.2.5
	 */
	public static final String TRIGGERPATTERN_THREADING_CLEANUP= "cleanup.threading"; //$NON-NLS-1$

	/**
	 * Convert integer constants used in if-else chains to enum with switch statement.
	 * Improves type safety and code maintainability.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 */
	public static final String INT_TO_ENUM_CLEANUP= "cleanup.int_to_enum"; //$NON-NLS-1$

	/**
	 * Replace out-of-range shift amounts with the effective masked value.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 * @since 1.2.5
	 */
	public static final String SHIFT_OUT_OF_RANGE_CLEANUP= "cleanup.shift_out_of_range"; //$NON-NLS-1$

	/**
	 * Widen variable declaration types to more general supertypes/interfaces based on usage.
	 * Analyzes variable usage and changes the declared type to the most general type
	 * (highest in hierarchy) that still declares all used methods/fields.
	 * Only affects local variables, not fields or method parameters.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 * @since 1.2.6
	 */
	public static final String USE_GENERAL_TYPE_CLEANUP= "cleanup.use_general_type"; //$NON-NLS-1$

	/**
	 * Apply transformation rules from registered {@code .sandbox-hint} DSL files.
	 * <p>
	 * When enabled, all registered {@code .sandbox-hint} pattern libraries (collections,
	 * modernize-java11, performance, etc.) are applied as cleanup operations. This enables
	 * declarative code transformations without writing Java code.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 * <p>
	 *
	 * @see CleanUpOptionsCore#TRUE
	 * @see CleanUpOptionsCore#FALSE
	 * @since 1.3.5
	 */
	public static final String HINTFILE_CLEANUP= "cleanup.hintfile"; //$NON-NLS-1$

	/**
	 * Enable the {@code collections.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Collection API improvement rules are applied
	 * (e.g., {@code list.size() == 0} → {@code list.isEmpty()}).
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_COLLECTIONS= "cleanup.hintfile.bundle.collections"; //$NON-NLS-1$

	/**
	 * Enable the {@code performance.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, performance optimization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_PERFORMANCE= "cleanup.hintfile.bundle.performance"; //$NON-NLS-1$

	/**
	 * Enable the {@code modernize-java9.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Java 9+ API modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_MODERNIZE_JAVA9= "cleanup.hintfile.bundle.modernize-java9"; //$NON-NLS-1$

	/**
	 * Enable the {@code modernize-java11.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Java 11+ API modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_MODERNIZE_JAVA11= "cleanup.hintfile.bundle.modernize-java11"; //$NON-NLS-1$

	/**
	 * Bundle ID for the collections hint file, matching the registry key
	 * derived from {@code collections.sandbox-hint}.
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_ID_COLLECTIONS= "collections"; //$NON-NLS-1$

	/**
	 * Bundle ID for the performance hint file, matching the registry key
	 * derived from {@code performance.sandbox-hint}.
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_ID_PERFORMANCE= "performance"; //$NON-NLS-1$

	/**
	 * Bundle ID for the modernize-java9 hint file, matching the registry key
	 * derived from {@code modernize-java9.sandbox-hint}.
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_ID_MODERNIZE_JAVA9= "modernize-java9"; //$NON-NLS-1$

	/**
	 * Bundle ID for the modernize-java11 hint file, matching the registry key
	 * derived from {@code modernize-java11.sandbox-hint}.
	 * @since 1.3.6
	 */
	public static final String HINTFILE_BUNDLE_ID_MODERNIZE_JAVA11= "modernize-java11"; //$NON-NLS-1$

	/**
	 * Enables or disables the encoding hint file bundle.
	 * <p>
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * Controls whether StandardCharsets migration rules are applied.
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.7
	 */
	public static final String HINTFILE_BUNDLE_ENCODING= "cleanup.hintfile.bundle.encoding"; //$NON-NLS-1$

	/**
	 * Enables or disables the junit5 hint file bundle.
	 * <p>
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * Controls whether JUnit 4 to JUnit 5 migration rules are applied.
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.7
	 */
	public static final String HINTFILE_BUNDLE_JUNIT5= "cleanup.hintfile.bundle.junit5"; //$NON-NLS-1$

	/**
	 * Bundle ID for the encoding hint file, matching the registry key
	 * derived from {@code encoding.sandbox-hint}.
	 * @since 1.3.7
	 */
	public static final String HINTFILE_BUNDLE_ID_ENCODING= "encoding"; //$NON-NLS-1$

	/**
	 * Bundle ID for the junit5 hint file, matching the registry key
	 * derived from {@code junit5.sandbox-hint}.
	 * @since 1.3.7
	 */
	public static final String HINTFILE_BUNDLE_ID_JUNIT5= "junit5"; //$NON-NLS-1$

	/**
	 * Enable the {@code stream-performance.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Stream API performance optimization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_STREAM_PERFORMANCE= "cleanup.hintfile.bundle.stream-performance"; //$NON-NLS-1$

	/**
	 * Bundle ID for the stream-performance hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_STREAM_PERFORMANCE= "stream-performance"; //$NON-NLS-1$

	/**
	 * Enable the {@code io-performance.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, I/O stream performance rules are applied (e.g., double-buffering detection).
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_IO_PERFORMANCE= "cleanup.hintfile.bundle.io-performance"; //$NON-NLS-1$

	/**
	 * Bundle ID for the io-performance hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_IO_PERFORMANCE= "io-performance"; //$NON-NLS-1$

	/**
	 * Enable the {@code collection-performance.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, collection performance optimization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_COLLECTION_PERFORMANCE= "cleanup.hintfile.bundle.collection-performance"; //$NON-NLS-1$

	/**
	 * Bundle ID for the collection-performance hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_COLLECTION_PERFORMANCE= "collection-performance"; //$NON-NLS-1$

	/**
	 * Enable the {@code number-compare.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Number.compare() optimization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_NUMBER_COMPARE= "cleanup.hintfile.bundle.number-compare"; //$NON-NLS-1$

	/**
	 * Bundle ID for the number-compare hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_NUMBER_COMPARE= "number-compare"; //$NON-NLS-1$

	/**
	 * Enable the {@code string-equals.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, String equality anti-pattern detection rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_STRING_EQUALS= "cleanup.hintfile.bundle.string-equals"; //$NON-NLS-1$

	/**
	 * Bundle ID for the string-equals hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_STRING_EQUALS= "string-equals"; //$NON-NLS-1$

	/**
	 * Enable the {@code string-isblank.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, String.isBlank() modernization rules are applied (Java 11+).
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_STRING_ISBLANK= "cleanup.hintfile.bundle.string-isblank"; //$NON-NLS-1$

	/**
	 * Bundle ID for the string-isblank hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_STRING_ISBLANK= "string-isblank"; //$NON-NLS-1$

	/**
	 * Enable the {@code arrays.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, array utility modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ARRAYS= "cleanup.hintfile.bundle.arrays"; //$NON-NLS-1$

	/**
	 * Bundle ID for the arrays hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_ARRAYS= "arrays"; //$NON-NLS-1$

	/**
	 * Enable the {@code collection-toarray.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Collection.toArray() modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_COLLECTION_TOARRAY= "cleanup.hintfile.bundle.collection-toarray"; //$NON-NLS-1$

	/**
	 * Bundle ID for the collection-toarray hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_COLLECTION_TOARRAY= "collection-toarray"; //$NON-NLS-1$

	/**
	 * Enable the {@code probable-bugs.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, probable bug detection rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_PROBABLE_BUGS= "cleanup.hintfile.bundle.probable-bugs"; //$NON-NLS-1$

	/**
	 * Bundle ID for the probable-bugs hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_PROBABLE_BUGS= "probable-bugs"; //$NON-NLS-1$

	/**
	 * Enable the {@code misc.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, miscellaneous code improvement rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_MISC= "cleanup.hintfile.bundle.misc"; //$NON-NLS-1$

	/**
	 * Bundle ID for the misc hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_MISC= "misc"; //$NON-NLS-1$

	/**
	 * Enable the {@code deprecations.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, deprecated API replacement rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_DEPRECATIONS= "cleanup.hintfile.bundle.deprecations"; //$NON-NLS-1$

	/**
	 * Bundle ID for the deprecations hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_DEPRECATIONS= "deprecations"; //$NON-NLS-1$

	/**
	 * Enable the {@code classfile-api.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Java ClassFile API and reflection modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_CLASSFILE_API= "cleanup.hintfile.bundle.classfile-api"; //$NON-NLS-1$

	/**
	 * Bundle ID for the classfile-api hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_CLASSFILE_API= "classfile-api"; //$NON-NLS-1$

	/**
	 * Enable the {@code serialization.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, serialization best practice rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_SERIALIZATION= "cleanup.hintfile.bundle.serialization"; //$NON-NLS-1$

	/**
	 * Bundle ID for the serialization hint file.
	 * @since 1.3.8
	 */
	public static final String HINTFILE_BUNDLE_ID_SERIALIZATION= "serialization"; //$NON-NLS-1$

	/**
	 * Enable the {@code stringbuffer-to-stringbuilder.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, StringBuffer to StringBuilder replacement rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP

	 */
	public static final String HINTFILE_BUNDLE_STRINGBUFFER= "cleanup.hintfile.bundle.stringbuffer-to-stringbuilder"; //$NON-NLS-1$

	/**
	 * Bundle ID for the stringbuffer-to-stringbuilder hint file.

	 */
	public static final String HINTFILE_BUNDLE_ID_STRINGBUFFER= "stringbuffer-to-stringbuilder"; //$NON-NLS-1$

	/**
	 * Enable the {@code platform-logging.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Eclipse Platform logging API modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP

	 */
	public static final String HINTFILE_BUNDLE_PLATFORM_LOGGING= "cleanup.hintfile.bundle.platform-logging"; //$NON-NLS-1$

	/**
	 * Bundle ID for the platform-logging hint file.

	 */
	public static final String HINTFILE_BUNDLE_ID_PLATFORM_LOGGING= "platform-logging"; //$NON-NLS-1$

	/**
	 * Enable the {@code type-inference.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, type inference improvement hints are applied (Java 10+).
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP

	 */
	public static final String HINTFILE_BUNDLE_TYPE_INFERENCE= "cleanup.hintfile.bundle.type-inference"; //$NON-NLS-1$

	/**
	 * Bundle ID for the type-inference hint file.

	 */
	public static final String HINTFILE_BUNDLE_ID_TYPE_INFERENCE= "type-inference"; //$NON-NLS-1$

	/**
	 * Enable the {@code try-with-resources.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, try-with-resources usage hints are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP

	 */
	public static final String HINTFILE_BUNDLE_TRY_WITH_RESOURCES= "cleanup.hintfile.bundle.try-with-resources"; //$NON-NLS-1$

	/**
	 * Bundle ID for the try-with-resources hint file.

	 */
	public static final String HINTFILE_BUNDLE_ID_TRY_WITH_RESOURCES= "try-with-resources"; //$NON-NLS-1$

	/**
	 * Enable the {@code string-modernization.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, String API modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP

	 */
	public static final String HINTFILE_BUNDLE_STRING_MODERNIZATION= "cleanup.hintfile.bundle.string-modernization"; //$NON-NLS-1$

	/**
	 * Bundle ID for the string-modernization hint file.

	 */
	public static final String HINTFILE_BUNDLE_ID_STRING_MODERNIZATION= "string-modernization"; //$NON-NLS-1$

	/**
	 * Enable the {@code optional-modernization.sandbox-hint} pattern library.
	 * <p>
	 * When enabled, Optional API modernization rules are applied.
	 * Only effective when {@link #HINTFILE_CLEANUP} is also enabled.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 * @see #HINTFILE_CLEANUP

	 */
	public static final String HINTFILE_BUNDLE_OPTIONAL_MODERNIZATION= "cleanup.hintfile.bundle.optional-modernization"; //$NON-NLS-1$

	/**
	 * Bundle ID for the optional-modernization hint file.

	 */
	public static final String HINTFILE_BUNDLE_ID_OPTIONAL_MODERNIZATION= "optional-modernization"; //$NON-NLS-1$

	// --- Phase 3: Java-coded Cleanups for Complex Analysis ---

	/**
	 * Detect wrong string comparison using {@code ==} or {@code !=} with string literals.
	 * <p>
	 * Replaces {@code str == "literal"} with {@code "literal".equals(str)} and
	 * {@code str != "literal"} with {@code !"literal".equals(str)}.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 */
	public static final String WRONG_STRING_COMPARISON_CLEANUP= "cleanup.wrong_string_comparison"; //$NON-NLS-1$

	/**
	 * Detect {@code ex.printStackTrace()} calls and suggest using a logger.
	 * <p>
	 * This is a hint-only cleanup that marks {@code printStackTrace()} calls
	 * but does not automatically replace them (the logger type varies per project).
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 */
	public static final String PRINT_STACKTRACE_CLEANUP= "cleanup.print_stacktrace"; //$NON-NLS-1$

	/**
	 * Detect {@code System.out.println()} and {@code System.err.println()} calls
	 * and suggest using a logger.
	 * <p>
	 * This is a hint-only cleanup that marks System.out/err usage
	 * but does not automatically replace them.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 */
	public static final String SYSTEM_OUT_CLEANUP= "cleanup.system_out"; //$NON-NLS-1$

	/**
	 * Warn on usage of obsolete collection types ({@code Vector}, {@code Hashtable}, {@code Stack}).
	 * <p>
	 * These legacy synchronized collections should typically be replaced with
	 * {@code ArrayList}, {@code HashMap}, and {@code ArrayDeque} respectively.
	 * This is a hint-only cleanup.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 */
	public static final String OBSOLETE_COLLECTION_CLEANUP= "cleanup.obsolete_collection"; //$NON-NLS-1$

	/**
	 * Detect classes that override {@code equals()} without overriding {@code hashCode()}.
	 * <p>
	 * This violates the general contract of {@code Object.hashCode()} and can
	 * cause issues when objects are used in hash-based collections.
	 * This is a hint-only cleanup.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 */
	public static final String MISSING_HASHCODE_CLEANUP= "cleanup.missing_hashcode"; //$NON-NLS-1$

	/**
	 * Warn on overridable method calls in constructors.
	 * <p>
	 * Calling non-final, non-private, non-static methods from a constructor
	 * is dangerous because the subclass may not be fully initialized yet.
	 * This is a hint-only cleanup.
	 * <p>
	 * Possible values: {TRUE, FALSE}
	 *
	 */
	public static final String OVERRIDABLE_IN_CONSTRUCTOR_CLEANUP= "cleanup.overridable_in_constructor"; //$NON-NLS-1$
}