Buggy code:
@ Override public double getControls0Plus ( ) { } @ Override public double getControls0Minus ( ) { } @ Override public double getActionRight ( ) { } @ Override public double getActionLeft ( ) { } } ; @ Override public void onTabClosing ( ) { } @ Override public String [ ] getMyNameSpaces ( ) { } @ Override public void initializeUI ( BowlerAbstractDevice pm ) { setGraphic ( AssetFactory . loadIcon ( "CreatureLab-Tab.png" ) ) ; this . pm = pm ; autoRegen . setSelected ( true ) ; autoRegen . setOnAction ( ( event ) -> { if ( autoRegen . isSelected ( ) ) { generateCad ( ) ; } } ) ; setText ( pm . getScriptingName ( ) ) ; GridPane dhlabTopLevel = new GridPane ( ) ; if ( DHParameterKinematics . class . isInstance ( pm ) ) { DHParameterKinematics device = ( ( DHParameterKinematics ) ( pm ) ) ; try { setDefaultDhParameterKinematics ( device ) ; } catch ( Exception e ) { BowlerStudioController . highlightException ( null , e ) ; } Log . debug ( ( "Loading<seq2seq4repair_space>xml:<seq2seq4repair_space>" + ( device . getXml ( ) ) ) ) ; dhlabTopLevel . add ( new DhChainWidget ( device , null ) , 0 , 0 ) ; } else if ( MobileBase . class . isInstance ( pm ) ) { try { ScriptingEngine . setAutoupdate ( true ) ; } catch ( IOException e1 ) { e1 . printStackTrace ( ) ; } MobileBase device = ( ( MobileBase ) ( pm ) ) ; setDefaultWalkingEngine ( device ) ; AnchorPane controls = new AnchorPane ( ) ; TreeItem < String > rootItem ; try { rootItem = new TreeItem < String > ( device . getScriptingName ( ) , AssetFactory . loadIcon ( "creature.png" ) ) ; } catch ( Exception e ) { rootItem = new TreeItem < String > ( device . getScriptingName ( ) ) ; } rootItem . setExpanded ( true ) ; HashMap < TreeItem < String > , Runnable > callbackMapForTreeitems = new HashMap < > ( ) ; HashMap < TreeItem < String > , Group > widgetMapForTreeitems = new HashMap < > ( ) ; TreeView < String > tree = new TreeView < > ( rootItem ) ; try { MobleBaseMenueFactory . load ( device , tree , rootItem , callbackMapForTreeitems , widgetMapForTreeitems , this ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } tree . setPrefWidth ( 325 ) ; tree . getSelectionModel ( ) . setSelectionMode ( SelectionMode . SINGLE ) ; tree . getSelectionModel ( ) . selectedItemProperty ( ) . addListener ( new ChangeListener < Object > ( ) { @ Override public void changed ( ObservableValue < ? > observable , Object oldValue , Object newValue ) { @ SuppressWarnings ( "unchecked" ) TreeItem < String > treeItem = ( ( TreeItem < String > ) ( newValue ) ) ; new Thread ( ) { public void run ( ) { if ( ( callbackMapForTreeitems . get ( treeItem ) ) != null ) { callbackMapForTreeitems . get ( treeItem ) . run ( ) ; } if ( ( widgetMapForTreeitems . get ( treeItem ) ) != null ) { Platform . runLater ( ( ) -> { controls . getChildren ( ) . clear ( ) ; controls . getChildren ( ) . add ( widgetMapForTreeitems . get ( treeItem ) ) ; } ) ; } else { Platform . runLater ( ( ) -> { controls . getChildren ( ) . clear ( ) ; } ) ; } } } . start ( ) ; } } ) ; HBox progress = new HBox ( 10 ) ; pi = new ProgressIndicator ( 0 ) ; progress . getChildren ( ) . addAll ( new Label ( "Cad<seq2seq4repair_space>Progress:" ) , pi , autoRegen ) ; baseManager = new MobileBaseCadManager ( device , pi , autoRegen ) ; VBox inputs = new VBox ( 10 ) ; <START_BUG> BowlerStudio . setOverlayLeft ( new Group ( tree ) ) ; <END_BUG> device . addConnectionEventListener ( new IDeviceConnectionEventListener ( ) { @ Override public void onDisconnect ( BowlerAbstractDevice arg0 ) { BowlerStudio . clearOverlayLeft ( ) ; BowlerStudio . clearOverlayTop ( ) ; BowlerStudio . clearOverlayTopRight ( ) ; BowlerStudio . clearOverlayBottomRight ( ) ; } @ Override public void onConnect ( BowlerAbstractDevice arg0 ) { } } ) ; progress . setStyle ( "-fx-background-color:<seq2seq4repair_space>#FFFFFF;" ) ; progress . setOpacity ( 0.7 ) ; progress . setPrefSize ( 325 , 50 ) ; BowlerStudio . setOverlayTop ( new Group ( progress ) ) ; BowlerStudio . setOverlayTopRight ( new Group ( new JogWidget ( device ) ) ) ; BowlerStudio . setOverlayBottomRight ( new Group ( controls ) ) ; BowlerStudio . setCadSplit ( 0.1 ) ; new Thread ( ) { public void run ( ) { ThreadUtil . wait ( 500 ) ; requestClose ( ) ; } } . start ( ) ; } else if ( AbstractKinematicsNR . class . isInstance ( pm ) ) { AbstractKinematicsNR device = ( ( AbstractKinematicsNR ) ( pm ) ) ; dhlabTopLevel . add ( new DhChainWidget ( device , null ) , 0 , 0 ) ; } generateCad ( ) ; setContent ( new ScrollPane ( dhlabTopLevel ) ) ; } private File setDefaultDhParameterKinematics ( DHParameterKinematics device ) { } private void setDefaultWalkingEngine ( MobileBase device ) { } public void setGitWalkingEngine ( String git , String file , MobileBase device ) { } public void generateCad ( ) { } @ Override public void onTabReOpening ( ) { } public static String getFormatted ( double value ) { } @ Override public void onSliderMoving ( EngineeringUnitsSliderWidget source , double newAngleDegrees ) { } @ Override public void onSliderDoneMoving ( EngineeringUnitsSliderWidget source , double newAngleDegrees ) { }

Fix:
BowlerStudio . setOverlayLeft ( tree ) ;