Buggy code:
public class PolygonsSetTest { @ Test public void testSimplyConnected ( ) { } @ Test public void testStair ( ) { } @ Test public void testEmpty ( ) { } @ Test public void testFull ( ) { } @ Test public void testHole ( ) { Vector2D [ ] [ ] vertices = new Vector2D [ ] [ ] { new Vector2D [ ] { new Vector2D ( 0.0 , 0.0 ) , new Vector2D ( 3.0 , 0.0 ) , new Vector2D ( 3.0 , 3.0 ) , new Vector2D ( 0.0 , 3.0 ) } , new Vector2D [ ] { new Vector2D ( 1.0 , 2.0 ) , new Vector2D ( 2.0 , 2.0 ) , new Vector2D ( 2.0 , 1.0 ) , new Vector2D ( 1.0 , 1.0 ) } } ; PolygonsSet set = buildSet ( vertices ) ; checkPoints ( INSIDE , set , new Vector2D [ ] { new Vector2D ( 0.5 , 0.5 ) , new Vector2D ( 1.5 , 0.5 ) , new Vector2D ( 2.5 , 0.5 ) , new Vector2D ( 0.5 , 1.5 ) , new Vector2D ( 2.5 , 1.5 ) , new Vector2D ( 0.5 , 2.5 ) , new Vector2D ( 1.5 , 2.5 ) , new Vector2D ( 2.5 , 2.5 ) , new Vector2D ( 0.5 , 1.0 ) } ) ; checkPoints ( OUTSIDE , set , new Vector2D [ ] { new Vector2D ( 1.5 , 1.5 ) , new Vector2D ( 3.5 , 1.0 ) , new Vector2D ( 4.0 , 1.5 ) , new Vector2D ( 6.0 , 6.0 ) } ) ; checkPoints ( BOUNDARY , set , new Vector2D [ ] { new Vector2D ( 1.0 , 1.0 ) , new Vector2D ( 1.5 , 0.0 ) , new Vector2D ( 1.5 , 1.0 ) , new Vector2D ( 1.5 , 2.0 ) , new Vector2D ( 1.5 , 3.0 ) , new Vector2D ( 3.0 , 3.0 ) } ) ; checkVertices ( set . getVertices ( ) , vertices ) ; for ( double x = - 0.999 ; x < 3.999 ; x += 0.11 ) { Vector2D v = new Vector2D ( x , ( x + 0.5 ) ) ; BoundaryProjection < Euclidean2D > projection = set . projectToBoundary ( v ) ; <START_BUG> Assert . assertTrue ( ( ( projection . get0riginal ( ) ) == v ) ) ; <END_BUG> Vector2D p = ( ( Vector2D ) ( projection . getProjected ( ) ) ) ; if ( x < ( - 0.5 ) ) { Assert . assertEquals ( 0.0 , p . getX ( ) , 1.0E-10 ) ; Assert . assertEquals ( 0.0 , p . getY ( ) , 1.0E-10 ) ; Assert . assertEquals ( ( + ( v . distance ( ZERO ) ) ) , projection . getOffset ( ) , 1.0E-10 ) ; } else if ( x < 0.5 ) { Assert . assertEquals ( 0.0 , p . getX ( ) , 1.0E-10 ) ; Assert . assertEquals ( v . getY ( ) , p . getY ( ) , 1.0E-10 ) ; Assert . assertEquals ( ( - ( v . getX ( ) ) ) , projection . getOffset ( ) , 1.0E-10 ) ; } else if ( x < 1.25 ) { Assert . assertEquals ( 1.0 , p . getX ( ) , 1.0E-10 ) ; Assert . assertEquals ( v . getY ( ) , p . getY ( ) , 1.0E-10 ) ; Assert . assertEquals ( ( ( v . getX ( ) ) - 1.0 ) , projection . getOffset ( ) , 1.0E-10 ) ; } else if ( x < 2.0 ) { Assert . assertEquals ( v . getX ( ) , p . getX ( ) , 1.0E-10 ) ; Assert . assertEquals ( 2.0 , p . getY ( ) , 1.0E-10 ) ; Assert . assertEquals ( ( 2.0 - ( v . getY ( ) ) ) , projection . getOffset ( ) , 1.0E-10 ) ; } else if ( x < 3.0 ) { Assert . assertEquals ( v . getX ( ) , p . getX ( ) , 1.0E-10 ) ; Assert . assertEquals ( 3.0 , p . getY ( ) , 1.0E-10 ) ; Assert . assertEquals ( ( ( v . getY ( ) ) - 3.0 ) , projection . getOffset ( ) , 1.0E-10 ) ; } else { Assert . assertEquals ( 3.0 , p . getX ( ) , 1.0E-10 ) ; Assert . assertEquals ( 3.0 , p . getY ( ) , 1.0E-10 ) ; Assert . assertEquals ( ( + ( v . distance ( new Vector2D ( 3 , 3 ) ) ) ) , projection . getOffset ( ) , 1.0E-10 ) ; } } } @ Test public void testDisjointPolygons ( ) { } @ Test public void testOppositeHyperplanes ( ) { } @ Test public void testSingularPoint ( ) { } @ Test public void testLineIntersection ( ) { } @ Test public void testUnlimitedSubHyperplane ( ) { } @ Test public void testUnion ( ) { } @ Test public void testIntersection ( ) { } @ Test public void testXor ( ) { } @ Test public void testDifference ( ) { } @ Test public void testEmptyDifference ( ) { } @ Test public void testChoppedHexagon ( ) { } @ Test public void testConcentric ( ) { } @ Test public void testBug20040520 ( ) { } @ Test public void testBug20041003 ( ) { } @ Test public void testSqueezedHexa ( ) { } @ Test public void testIssue880Simplified ( ) { } @ Test public void testIssue880Complete ( ) { } private PolygonsSet buildSet ( Vector2D [ ] [ ] vertices ) { }

Fix:
Assert . assertTrue ( ( ( projection . getOriginal ( ) ) == v ) ) ;