424-1-4

while (high - low > 1) { double midV = dataset.getXValue(series, mid); if (midV >= xLow) { low = mid; } else { high = mid; } mid = (low + high) / 2; }
while (high - low > 1) { double midV = dataset.getXValue(series, mid); if (midV >= xLow) { high = mid; } else { low = mid; } mid = (low + high) / 2; }

Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/src/org/jfree/chart/renderer/RendererUtilities.java |  | File path: /jfreechart-1.0.10/src/org/jfree/chart/renderer/RendererUtilities.java
Method name: `int findLiveItemsUpperBound(XYDataset, int, double, double)` |  | Method name: `int findLiveItemsLowerBound(XYDataset, int, double, double)`
Number of AST nodes: 6 |  | Number of AST nodes: 6

1

    while (high - low > 1) {↵

1

    while (high - low > 1) {↵

2

                    double midV = dataset.getXValue(series, mid);↵

2

                    double midV = dataset.getXValue(series, mid);↵

3

                    if (midV >= xLow) {↵

3

                    if (midV >= xLow) {↵

4

                        low = mid;↵

4

                        high = mid;↵

5

                    }↵

5

                    }↵

6

                    else {↵

6

                    else {↵

7

                        high = mid;↵

7

                        low = mid;↵

8

                    }↵

8

                    }↵

9

                    mid = (low + high) / 2;↵

9

                    mid = (low + high) / 2;↵

10

                }

10

                }

See real code fragment |  | See real code fragment

Summary
Number of common nesting structure subtrees | 1
Number of refactorable cases | 0
Number of non-refactorable cases | 1
Time elapsed for finding largest common nesting structure subtrees (ms) | 0.2
Clones location | Clones are declared in the same class
Number of node comparisons | 19

1. {Non-refactorable}

   Mapping Summary
   Number of mapped statements | 6
   Number of unmapped statements in the first code fragment | 0
   Number of unmapped statements in the second code fragment | 0
   Time elapsed for statement mapping (ms) | 0.9
   Clone type | Type 2

   Mapped Statements
   ID | Statement |  | ID | Statement
   --- | --- | --- | --- | ---

   31

       while (high - low > 1)

   14

       while (high - low > 1)

   32

       double midV = dataset.getXValue(series, mid);

   15

       double midV = dataset.getXValue(series, mid);

   33

       if (midV >= xLow)

   16

       if (midV >= xLow)

   34

       low = mid;

   34 | low = mid;
   17 | high = mid;

   Differences
   Expression1 | Expression2 | Difference
   --- | --- | ---
   low | high | VARIABLE_NAME_MISMATCH

   Preondition Violations
   Expression low cannot be parameterized, because it has dependencies to/from statements that will be extracted
   Expression high cannot be parameterized, because it has dependencies to/from statements that will be extracted

   17

       high = mid;

       else

       else

   35

       high = mid;

   35 | high = mid;
   18 | low = mid;

   Differences
   Expression1 | Expression2 | Difference
   --- | --- | ---
   high | low | VARIABLE_NAME_MISMATCH

   Preondition Violations
   Expression high cannot be parameterized, because it has dependencies to/from statements that will be extracted
   Expression low cannot be parameterized, because it has dependencies to/from statements that will be extracted

   18

       low = mid;

   36

       mid = (low + high) / 2;

   19

       mid = (low + high) / 2;

   Precondition Violations (4)
   Row | Violation
   --- | ---
   1 | Expression low cannot be parameterized, because it has dependencies to/from statements that will be extracted
   2 | Expression high cannot be parameterized, because it has dependencies to/from statements that will be extracted
   3 | Expression high cannot be parameterized, because it has dependencies to/from statements that will be extracted
   4 | Expression low cannot be parameterized, because it has dependencies to/from statements that will be extracted