Buggy code:
public class Building extends KmlGenericObject { public static final String STYLE_BASIS_NAME = "" ; private SqliteImporterManager sqlliteImporterManager ; private List < BuildingSurface > _ParentSurfaceList = new ArrayList < BuildingSurface > ( ) ; private final Logger LOG = Logger . getInstance ( ) ; public Building ( Connection connection , KmlExporterManager kmlExporterManager , SqliteImporterManager sqlliteImporterManager , GMLGeometryFactory cityGMLFactory , ObjectFactory kmlFactory , ElevationServiceHandler elevationServiceHandler , BalloonTemplateHandlerImpl balloonTemplateHandler , EventDispatcher eventDispatcher , ConfigImpl config ) { } protected List < DisplayForm > getDisplayForms ( ) { } public ColladaOptions getColladaOptions ( ) { } public Balloon getBalloonSettings ( ) { } public String getStyleBasisName ( ) { } protected String getHighlightingQuery ( ) { } public void read ( KmlSplittingResult work ) { } @ SuppressWarnings ( "unchecked" ) private List < PlacemarkType > readBuildingPart ( KmlSplittingResult work ) throws Exception { <START_BUG> boolean reversePointOrder = false ; <END_BUG> try { AbstractBuilding _building = ( ( AbstractBuilding ) ( work . getCityGmlClass ( ) ) ) ; SurfaceAppearance _SurfaceAppear = new SurfaceAppearance ( ) ; List < BuildingSurface > _surfaceList = GetBuildingGeometries ( _building ) ; sqlliteImporterManager . getTmpXlinkPool ( ) . join ( ) ; DBXlinkSplitter xlinkSplitter = config . getXlinkSplitter ( ) ; List < BuildingSurface > tmpList = xlinkSplitter . startQuery ( _surfaceList ) ; if ( ( tmpList != null ) && ( ( tmpList . size ( ) ) > 0 ) ) _surfaceList . addAll ( tmpList ) ; if ( ( _surfaceList . size ( ) ) != 0 ) { switch ( work . getDisplayForm ( ) . getForm ( ) ) { case DisplayForm . FOOTPRINT : return createPlacemarksForFootprint ( _surfaceList , work ) ; case DisplayForm . EXTRUDED : double measuredHeight = ( ( _building . getMeasuredHeight ( ) ) != null ) ? _building . getMeasuredHeight ( ) . getValue ( ) : 0 ; return createPlacemarksForExtruded ( _surfaceList , work , measuredHeight , reversePointOrder ) ; case DisplayForm . GEOMETRY : if ( work . getDisplayForm ( ) . isHighlightingEnabled ( ) ) { if ( config . getFilter ( ) . isSetComplexFilter ( ) ) { List < PlacemarkType > hlPlacemarks = createPlacemarksForHighlighting ( _surfaceList , work ) ; hlPlacemarks . addAll ( createPlacemarksForGeometry ( _surfaceList , work ) ) ; return hlPlacemarks ; } else { List < PlacemarkType > placemarks = createPlacemarksForGeometry ( _surfaceList , work ) ; placemarks . addAll ( createPlacemarksForHighlighting ( _surfaceList , work ) ) ; return placemarks ; } } return createPlacemarksForGeometry ( _surfaceList , work ) ; case DisplayForm . COLLADA : fillGenericObjectForCollada ( work , _surfaceList , _SurfaceAppear , _ParentSurfaceList ) ; setGmlId ( work . getGmlId ( ) ) ; setId ( work . getId ( ) ) ; if ( ( getGeometryAmount ( ) ) > ( GEOMETRY_AMOUNT_WARNING ) ) { Logger . getInstance ( ) . info ( ( ( ( ( "Object<seq2seq4repair_space>" + ( work . getGmlId ( ) ) ) + "<seq2seq4repair_space>has<seq2seq4repair_space>more<seq2seq4repair_space>than<seq2seq4repair_space>" ) + ( GEOMETRY_AMOUNT_WARNING ) ) + "<seq2seq4repair_space>geometries.<seq2seq4repair_space>This<seq2seq4repair_space>may<seq2seq4repair_space>take<seq2seq4repair_space>a<seq2seq4repair_space>while<seq2seq4repair_space>to<seq2seq4repair_space>process..." ) ) ; } List < Point3d > anchorCandidates = getOrigins ( ) ; double zOffset = getZOffsetFromDB ( work . getGmlId ( ) , work . GetElevation ( ) ) ; if ( zOffset == ( Double . MAX_VALUE ) ) { zOffset = getZOffsetFromGEService ( work . getGmlId ( ) , anchorCandidates , work . getTargetSrs ( ) , work . GetElevation ( ) ) ; } setZOffset ( zOffset ) ; ColladaOptions colladaOptions = getColladaOptions ( ) ; setIgnoreSurfaceOrientation ( colladaOptions . isIgnoreSurfaceOrientation ( ) ) ; try { List < PlacemarkType > dummy = new ArrayList < PlacemarkType > ( ) ; dummy . add ( null ) ; return dummy ; } catch ( Exception ioe ) { ioe . printStackTrace ( ) ; } } } } catch ( SQLException sqlEx ) { Logger . getInstance ( ) . error ( ( ( ( "SQL<seq2seq4repair_space>error<seq2seq4repair_space>while<seq2seq4repair_space>querying<seq2seq4repair_space>city<seq2seq4repair_space>object<seq2seq4repair_space>" + ( work . getGmlId ( ) ) ) + ":<seq2seq4repair_space>" ) + ( sqlEx . getMessage ( ) ) ) ) ; return null ; } finally { } return null ; } public PlacemarkType createPlacemarkForColladaModel ( KmlSplittingResult work ) throws Exception { } protected List < PlacemarkType > createPlacemarksForHighlighting ( List < BuildingSurface > result , KmlSplittingResult work ) throws SQLException { } public List < BuildingSurface > GetBuildingGeometries ( AbstractBuilding _building ) throws Exception { } No newline ; at end ; of file ; }

Fix:
boolean reversePointOrder = true ;