to simplify testing we assume that each block starts from a new line and contains #lines_per_block lines , so we can simply use index and hash . concode_field_sep int LINES_PER_BLOCK concode_elem_sep TestNamePrinter testNamePrinter concode_field_sep void problemWithEndOfFile concode_elem_sep void problemWithNestedCloneGroups concode_elem_sep void only_one_query_of_index_for_each_unique_hash concode_elem_sep void clonesInFileItself concode_elem_sep void same_lines_but_different_indexes concode_elem_sep ClonePart newClonePart concode_elem_sep List<CloneGroup> detect concode_elem_sep void shouldReturnEmptyListWhenNoBlocksForFile concode_elem_sep CloneIndex createIndex concode_elem_sep Block[] newBlocks concode_elem_sep void print concode_elem_sep void exampleFromPaper concode_elem_sep void fileAlreadyInIndex concode_elem_sep void example2 concode_elem_sep void covered concode_elem_sep void exampleFromPaperWithModifiedResourceIds concode_elem_sep void example1
Block function ( String arg0 , ByteArray arg1 , int arg2 ) { return Block . builder ( ) . setResourceId ( arg0 ) . setBlockHash ( arg1 ) . setIndexInFile ( arg2 ) . setLines ( arg2 , arg2 + LINES_PER_BLOCK ) . build ( ) ; }