{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 16:50:33",
  "duplicates" : [ {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/grammarkit/tasks/GenerateLexerTask.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 83,
      "endLine" : 97,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/grammarkit/tasks/GenerateParserTask.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 32,
      "endLine" : 46,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/grammarkit/tasks/GenerateLexerTask.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 121,
      "endLine" : 128,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/grammarkit/tasks/GenerateParserTask.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 105,
      "endLine" : 112,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/grammarkit/tasks/GenerateLexerTask.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 112,
      "endLine" : 118,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/grammarkit/tasks/GenerateParserTask.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  } ],
  "overallDuplication" : null
}