{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:36:09",
  "duplicates" : [ {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/MCPServerStartupValidator.kt",
        "extension" : "kt",
        "linesOfCode" : 190,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 79,
      "endLine" : 93,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/MCPServerStartupValidator.kt",
        "extension" : "kt",
        "linesOfCode" : 190,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 143,
      "endLine" : 157,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/general/textTools.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 221,
      "endLine" : 237,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/general/textTools.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 282,
      "endLine" : 298,
      "cleanedStartLine" : 191,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/general/formatting.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/general/formatting.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 81,
      "endLine" : 89,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/general/fileTools.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 174,
      "startLine" : 43,
      "endLine" : 51,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/mcpserverplugin/general/fileTools.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 174,
      "startLine" : 120,
      "endLine" : 128,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    } ]
  } ],
  "overallDuplication" : null
}