{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:35:14",
  "duplicates" : [ {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-annotations/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::hot-reload-annotations" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 16,
      "endLine" : 53,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "hot-reload-runtime-api/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 83,
        "components" : [ "primary::hot-reload-runtime-api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 19,
      "endLine" : 56,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/benchmark/kotlin/org/jetbrains/compose/reload/analysis/ResolveDirtyBenchmark.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 50,
      "endLine" : 67,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/benchmark/kotlin/org/jetbrains/compose/reload/analysis/RuntimeInstructionTreeParseBenchmark.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 86,
      "endLine" : 105,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/ids.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 156,
      "endLine" : 166,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/ids.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 172,
      "endLine" : 182,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 131
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/closure.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 58,
      "endLine" : 81,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/closure.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 118,
      "endLine" : 140,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-analysis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 43,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 32,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "hot-reload-test/gradle-testFixtures/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 49,
        "components" : [ "primary::hot-reload-test" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 29,
      "endLine" : 47,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-annotations/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::hot-reload-annotations" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 56,
      "endLine" : 69,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "hot-reload-runtime-api/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 83,
        "components" : [ "primary::hot-reload-runtime-api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 85,
      "endLine" : 98,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/Os.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "repository-tools/src/main/kotlin/Os.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::repository-tools" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-runtime-jvm/src/main/kotlin/org/jetbrains/compose/reload/jvm/DevelopmentEntryPoint.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::hot-reload-runtime-jvm" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 116,
      "endLine" : 126,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "hot-reload-runtime-jvm/src/main/kotlin/org/jetbrains/compose/reload/jvm/DevelopmentEntryPoint.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::hot-reload-runtime-jvm" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 144,
      "endLine" : 154,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "buildSrc/settings.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 46,
        "components" : [ "primary::buildSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 1,
      "endLine" : 21,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "repository-tools/settings.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 20,
        "components" : [ "primary::repository-tools" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 1,
      "endLine" : 16,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/InstructionTree.kt",
        "extension" : "kt",
        "linesOfCode" : 216,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/InstructionTree.kt",
        "extension" : "kt",
        "linesOfCode" : 216,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 71,
      "endLine" : 77,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/benchmark/kotlin/org/jetbrains/compose/reload/analysis/ResolveDirtyBenchmark.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 6,
      "endLine" : 37,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "hot-reload-analysis/src/benchmark/kotlin/org/jetbrains/compose/reload/analysis/RuntimeInstructionTreeParseBenchmark.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 6,
      "endLine" : 37,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-devtools/src/main/kotlin/org/jetbrains/compose/devtools/sidecar/DtLogWindow.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::hot-reload-devtools" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "hot-reload-devtools/src/main/kotlin/org/jetbrains/compose/devtools/sidecar/DtNotificationsWindow.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::hot-reload-devtools" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "buildSrc/src/main/kotlin/org/jetbrains/compose/reload/build/compilerTestPlugin.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::buildSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "buildSrc/src/main/kotlin/org/jetbrains/compose/reload/build/compilerTestPlugin.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::buildSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-agent/src/main/kotlin/org/jetbrains/compose/reload/agent/uiThread.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::hot-reload-agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "hot-reload-agent/src/main/kotlin/org/jetbrains/compose/reload/agent/uiThread.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::hot-reload-agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/logging.kt",
        "extension" : "kt",
        "linesOfCode" : 235,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/logging.kt",
        "extension" : "kt",
        "linesOfCode" : 235,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-devtools/src/main/kotlin/org/jetbrains/compose/devtools/errorOverlay/DevToolingErrorOverlay.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::hot-reload-devtools" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 161,
      "endLine" : 166,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "hot-reload-devtools/src/main/kotlin/org/jetbrains/compose/devtools/sidecar/DtRuntimeErrorStatusItem.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::hot-reload-devtools" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-analysis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 43,
        "components" : [ "primary::hot-reload-analysis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "hot-reload-test/gradle-testFixtures/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 49,
        "components" : [ "primary::hot-reload-test" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-test/idea-plugin/settings.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 43,
        "components" : [ "primary::hot-reload-test" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 43,
      "endLine" : 51,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "settings.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 82,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 65,
      "endLine" : 73,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "buildSrc/src/main/kotlin/org/jetbrains/compose/reload/build/tasks/GenerateHotReloadEnvironmentGradleExtensionsTask.kt",
        "extension" : "kt",
        "linesOfCode" : 77,
        "components" : [ "primary::buildSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 18,
      "endLine" : 24,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "buildSrc/src/main/kotlin/org/jetbrains/compose/reload/build/tasks/GenerateHotReloadEnvironmentTask.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::buildSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 121,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-core/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 124,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 10,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "hot-reload-orchestration/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 29,
        "components" : [ "primary::hot-reload-orchestration" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 10,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/closure.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 93,
      "endLine" : 106,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/closure.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::hot-reload-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 207,
      "endLine" : 221,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "hot-reload-runtime-jvm/src/main/kotlin/org/jetbrains/compose/reload/jvm/DevelopmentEntryPoint.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::hot-reload-runtime-jvm" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 131,
      "endLine" : 140,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "hot-reload-runtime-jvm/src/main/kotlin/org/jetbrains/compose/reload/jvm/DevelopmentEntryPoint.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::hot-reload-runtime-jvm" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 146,
      "endLine" : 155,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  } ],
  "overallDuplication" : null
}