{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:14:26",
  "duplicates" : [ {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/PestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 57,
      "endLine" : 66,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/features/customExpectations/expectationUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 91,
      "endLine" : 100,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/features/datasets/DatasetReference.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 29,
      "endLine" : 38,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/features/datasets/DatasetReference.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 68,
      "endLine" : 77,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/PestFunctionsUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 71,
      "endLine" : 80,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/features/customExpectations/expectationUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 91,
      "endLine" : 100,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/PestFunctionsUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 71,
      "endLine" : 80,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/PestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 57,
      "endLine" : 66,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/completion/InternalMembersCompletionProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 19,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/completion/ThisFieldsCompletionProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/features/datasets/DatasetReference.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 48,
      "endLine" : 58,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/pestphp/pest/features/datasets/DatasetReference.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 82,
      "endLine" : 92,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  } ],
  "overallDuplication" : null
}