--- name: migrate-intellij-util description: Optimize memory usage, consistency, and performance by migrating standard Java/Kotlin classes to IntelliJ's specialized com.intellij.util implementations. --- # Skill: API Migration to use com.intellij.util.* classes and methods You are tasked with optimizing memory usage, consistency, and performance by migrating standard Java/Kotlin classes to IntelliJ's specialized `com.intellij.util` implementations. ## Objective Go read https://javadoc.jetbrains.net/teamcity/openapi/current/com/intellij/util/package-summary.html, and then optimize memory usage, consistency, and performance by migrating standard Java/Kotlin classes to IntelliJ's specialized `com.intellij.util` implementations. ## Candidates for Migration - `ArrayList` -> `SmartList` (for potentially empty/small lists) - `HashMap` / `ConcurrentHashMap` -> `ContainerUtil` maps - `String` manipulation -> `StringUtil` (e.g., `isEmpty`, `join`, `notNullize`) - `Path` / `File` string manipulation -> `PathUtil` - `javax.swing.Timer` -> `Alarm` (for UI-related callbacks/debouncing) - Null checks -> `ObjectUtils` (e.g., `doIfNotNull`, `coalesce`) - Array resizing/merging -> `ArrayUtil` ## Workflow Instructions ### 1. Baseline - Run `./gradlew testClasses`, `./gradlew test`, and `./gradlew verifyPlugin` to ensure project is in a good state. ### 2. Select Target - Identify a *single* migration opportunity within a *single package*. ### 3. Constraint - Keep the change extremely small (**max 50 lines of code change**). ### 4. Migrate - Replace standard API with the `com.intellij.util` equivalent. ### 5. Verify - Run `./gradlew testClasses` to ensure migration didn't break test compilation. - Run `./gradlew test` and `./gradlew verifyPlugin` to ensure no regressions. - Suggest manual test steps: Check code changes made and write test steps for a user to execute that will trigger changed code paths. If needed, add logging statements to verify code paths have successfully run. ### 6. Report & Review - Summarize the migration. - **Test Location:** Explicitly state *where* in the IDE user should go to test changed functionality (e.g., "Go to Preferences > Languages & Frameworks > Flutter"). - **Action:** Ask user to review changes closely. - **Do not commit or push.** - Provide a suggested Git commit message (e.g., "Migrate code to use StringUtil in [Class Name]").