Buggy code:
public class Wall extends HousePart { private static final long serialVersionUID = 1L ; private static final double DEFAULT_WALL_HEIGHT = 30.0 ; private static double userDefaultWallHeight = Wall . DEFAULT_WALL_HEIGHT ; private static int currentVisitStamp = 1 ; private static boolean extendToRoofEnabled = true ; private transient Mesh backMesh ; private transient Mesh surroundMesh ; private transient Mesh invisibleMesh ; private transient Mesh windowsSurroundMesh ; private transient Mesh outlineMesh ; private transient Roof roof ; private transient int visitStamp ; private transient Vector3 normal ; private transient AnyToXYTransform toXY ; private transient XYToAnyTransform fromXY ; private transient List < List < Vector3 > > wallAndWindowsPoints ; private double wallThickness ; private transient Snap [ ] neighbors ; private transient Vector3 thicknessNormal ; private boolean isShortWall ; public static void resetDefaultWallHeight ( ) { } public static void clearVisits ( ) { } public Wall ( ) { } @ Override protected boolean mustHaveContainer ( ) { } @ Override protected void init ( ) { } @ Override public void setPreviewPoint ( final int x , final int y ) { } public Vector3 findClosestPointOnFoundation ( final int x , final int y ) { } private void drawThisAndNeighbors ( final boolean extendToRoofEnabled ) { } @ Override public void complete ( ) { } protected boolean snapToWall ( final Vector3 p , final int index ) { } private boolean snapToFoundation ( final Vector3 current ) { } @ Override public boolean isDrawable ( ) { } private boolean isAtSamePlaceAsAnotherPart ( final HousePart selectedHousePart ) { } @ Override protected void drawMesh ( ) { } private void drawPolygon ( final List < List < Vector3 > > wallAndWindowsPoints , final Mesh mesh , final boolean drawHoles , final boolean normal , final boolean texture ) { } private void drawOutline ( final List < List < Vector3 > > wallAndWindowsPoints ) { } public List < List < Vector3 > > computeWallAndWindowPolygon ( final boolean backMesh ) { } private List < Vector3 > computeWindowHole ( final HousePart window , final ReadOnlyVector3 trans ) { } private void addPolygonPoint ( final List < Vector3 > points , final HousePart housePart , final int index , final ReadOnlyVector3 trans ) { } private void extendToRoof ( final List < Vector3 > polygon ) { } public double findRoofIntersection ( final ReadOnlyVector3 p ) { } public ReadOnlyVector3 findRoofIntersection ( final ReadOnlyVector3 p , final ReadOnlyVector3 direction , final double offset ) { } public boolean isPerpendicularToNeighbor ( final int neighbor ) { } public boolean includeWindow ( final HousePart window ) { } private void drawBackMesh ( final List < List < Vector3 > > polygon ) { } private void enforceGablePointsRangeAndRemoveDuplicatedGablePoints ( final List < Vector3 > polygonPoints ) { } private void reduceBackMeshWidth ( final List < Vector3 > polygon , final ReadOnlyVector3 wallDir , final int neighbor ) { } public Vector3 getThicknessNormal ( ) { } private void computeNormalAndXYTransform ( ) { } private void drawSurroundMesh ( final ReadOnlyVector3 thickness ) { } protected void addSurroundQuad ( final int i1 , final int i2 , final ReadOnlyVector3 n , final ReadOnlyVector3 thickness , final FloatBuffer vertexBuffer , final FloatBuffer normalBuffer ) { } private void drawWindowsSurroundMesh ( final Vector3 thickness ) { } public Snap getOtherSnap ( final Snap snap ) { } private void setNeighbor ( final int pointIndex , final Snap newSnap , final boolean updateNeighbors ) { } @ Override protected void setHeight ( final double newHeight , final boolean finalize ) { } @ Override public void flatten ( final double flattenTime ) { } @ Override public ReadOnlyVector3 getFaceDirection ( ) { } @ Override public void drawAnnotations ( ) { } public void visitNeighbors ( final WallVisitor visitor ) { } public void visitNeighborsForward ( Wall currentWall , Snap snap , final WallVisitor visitor ) { } public void computeInsideDirectionOfAttachedWalls ( final boolean drawNeighborWalls ) { } @ Override protected String getTextureFileName ( ) { } public boolean isVisited ( ) { } public void visit ( ) { } public void setRoof ( final Roof roof ) { } @ Override public void setOriginal ( final HousePart original ) { } <START_BUG> public HousePart getRoof ( ) { <END_BUG> return roof ; } @ Override public void drawGrids ( final double gridSize ) { } @ Override public void reset ( ) { } public void setBackMeshesVisible ( final boolean visible ) { } @ Override public void updateTextureAndColor ( ) { } public void connectedWalls ( ) { } public boolean windowsFit ( ) { } public boolean fits ( final Window window ) { } public void applyXYTransform ( final List < Vector3 > hole ) { } @ Override protected void computeArea ( ) { } @ Override public double getArea ( ) { } public Mesh getInvisibleMesh ( ) { } @ Override protected boolean isHorizontal ( ) { } public List < Vector3 > getWallPolygonPoints ( ) { } @ Override public Spatial getCollisionSpatial ( ) { } @ Override public void drawHeatFlux ( ) { } @ Override public void delete ( ) { } No newline ; at end ; of file ; }

Fix:
public Roof getRoof ( ) {