{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:14:19",
  "duplicates" : [ {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/GenericClassStringConstructorWithPromotedProperty.php",
        "extension" : "php",
        "linesOfCode" : 21,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 3,
      "endLine" : 30,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/GenericClassStringConstructorWithPromotedPropertyWithParamTag.php",
        "extension" : "php",
        "linesOfCode" : 21,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 3,
      "endLine" : 30,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/completion/genericMixins/genericAndPlainMixins.php",
        "extension" : "php",
        "linesOfCode" : 16,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 3,
      "endLine" : 29,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "testData/completion/genericMixins/severalMixins.php",
        "extension" : "php",
        "linesOfCode" : 16,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 3,
      "endLine" : 30,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/NestedImport.after.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 2,
      "endLine" : 22,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/NestedImportFQN.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 2,
      "endLine" : 21,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/NestedImportFQN.after.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 2,
      "endLine" : 21,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/NestedImportFQN.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 2,
      "endLine" : 21,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/returnStaticOrThis/static.php",
        "extension" : "php",
        "linesOfCode" : 25,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 18,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/returnStaticOrThis/this.php",
        "extension" : "php",
        "linesOfCode" : 25,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 18,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/NestedImport.after.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 2,
      "endLine" : 22,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/NestedImportFQN.after.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 2,
      "endLine" : 21,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/GenericIteratorSubstitutionByImplementedMethod.php",
        "extension" : "php",
        "linesOfCode" : 31,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/GenericIteratorSubstitutionByImplementedMethod.php",
        "extension" : "php",
        "linesOfCode" : 31,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 48,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/FqnUsageInWildcard.after.php",
        "extension" : "php",
        "linesOfCode" : 13,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 8,
      "startLine" : 2,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/fixes/FqnUsageInWildcard.php",
        "extension" : "php",
        "linesOfCode" : 13,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 8,
      "startLine" : 2,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/resolve/GenericMixinGenericAndPlainMixins.php",
        "extension" : "php",
        "linesOfCode" : 14,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 3,
      "endLine" : 25,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "testData/resolve/GenericMixinSeveralMixins.php",
        "extension" : "php",
        "linesOfCode" : 14,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 3,
      "endLine" : 26,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/completion/genericMixins/genericAndPlainMixins.php",
        "extension" : "php",
        "linesOfCode" : 16,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 3,
      "endLine" : 22,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "testData/completion/genericMixins/unionTwoClassesWithMixins.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 4,
      "endLine" : 23,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/completion/genericMixins/severalMixins.php",
        "extension" : "php",
        "linesOfCode" : 16,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 3,
      "endLine" : 23,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "testData/completion/genericMixins/unionTwoClassesWithMixins.php",
        "extension" : "php",
        "linesOfCode" : 18,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 4,
      "endLine" : 23,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableInSameFile.php",
        "extension" : "php",
        "linesOfCode" : 10,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 6,
      "startLine" : 3,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableKeyword.php",
        "extension" : "php",
        "linesOfCode" : 10,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 6,
      "startLine" : 2,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableImported.php",
        "extension" : "php",
        "linesOfCode" : 11,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 3,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableKeyword.php",
        "extension" : "php",
        "linesOfCode" : 10,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 6,
      "startLine" : 2,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableDoc.php",
        "extension" : "php",
        "linesOfCode" : 21,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 9,
      "endLine" : 29,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableInferred.php",
        "extension" : "php",
        "linesOfCode" : 37,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 9,
      "endLine" : 29,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableImported.php",
        "extension" : "php",
        "linesOfCode" : 11,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 3,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "testData/codeInsight/typeInference/AdvancedCallableInSameFile.php",
        "extension" : "php",
        "linesOfCode" : 10,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 6,
      "startLine" : 3,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  } ],
  "overallDuplication" : null
}