Buggy code:
ZWaveNodeStageAdvancer && ( ( dbClass . add ) == true ) ) { ZWaveCommandClass commandClass = ZWaveCommandClass . getInstance ( dbClass . Id , node , controller ) ; if ( commandClass != null ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>UPDATE_DATABASE<seq2seq4repair_space>-<seq2seq4repair_space>adding<seq2seq4repair_space>{}" , node . getNodeId ( ) , CommandClass . getCommandClass ( dbClass . Id ) . getLabel ( ) ) ; node . addCommandClass ( commandClass ) ; } } } } } break ; case STATIC_VALUES : for ( ZWaveCommandClass zwaveStaticClass : node . getCommandClasses ( ) ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>STATIC_VALUES<seq2seq4repair_space>-<seq2seq4repair_space>checking<seq2seq4repair_space>{}" , node . getNodeId ( ) , zwaveStaticClass . getCommandClass ( ) . getLabel ( ) ) ; if ( zwaveStaticClass instanceof ZWaveCommandClassInitialization ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>STATIC_VALUES<seq2seq4repair_space>-<seq2seq4repair_space>found<seq2seq4repair_space>{}" , node . getNodeId ( ) , zwaveStaticClass . getCommandClass ( ) . getLabel ( ) ) ; ZWaveCommandClassInitialization zcci = ( ( ZWaveCommandClassInitialization ) ( zwaveStaticClass ) ) ; int instances = zwaveStaticClass . getInstances ( ) ; ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Found<seq2seq4repair_space>{}<seq2seq4repair_space>instances<seq2seq4repair_space>of<seq2seq4repair_space>{}" , node . getNodeId ( ) , instances , zwaveStaticClass . getCommandClass ( ) ) ; if ( instances == 1 ) { addToQueue ( zcci . initialize ( stageAdvanced ) ) ; } else { for ( int i = 1 ; i <= instances ; i ++ ) { addToQueue ( zcci . initialize ( stageAdvanced ) , zwaveStaticClass , i ) ; } } } else if ( zwaveStaticClass instanceof ZWaveMultiInstanceCommandClass ) { ZWaveMultiInstanceCommandClass multiInstanceCommandClass = ( ( ZWaveMultiInstanceCommandClass ) ( zwaveStaticClass ) ) ; for ( ZWaveEndpoint endpoint : multiInstanceCommandClass . getEndpoints ( ) ) { for ( ZWaveCommandClass endpointCommandClass : endpoint . getCommandClasses ( ) ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>STATIC_VALUES<seq2seq4repair_space>-<seq2seq4repair_space>checking<seq2seq4repair_space>{}<seq2seq4repair_space>for<seq2seq4repair_space>endpoint<seq2seq4repair_space>{}" , node . getNodeId ( ) , endpointCommandClass . getCommandClass ( ) . getLabel ( ) , endpoint . getEndpointId ( ) ) ; if ( endpointCommandClass instanceof ZWaveCommandClassInitialization ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>STATIC_VALUES<seq2seq4repair_space>-<seq2seq4repair_space>found<seq2seq4repair_space>{}" , node . getNodeId ( ) , endpointCommandClass . getCommandClass ( ) . getLabel ( ) ) ; ZWaveCommandClassInitialization zcci2 = ( ( ZWaveCommandClassInitialization ) ( endpointCommandClass ) ) ; addToQueue ( zcci2 . initialize ( stageAdvanced ) , endpointCommandClass , endpoint . getEndpointId ( ) ) ; } } } } } ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>STATIC_VALUES<seq2seq4repair_space>-<seq2seq4repair_space>queued<seq2seq4repair_space>{}<seq2seq4repair_space>frames" , node . getNodeId ( ) , msgQueue . size ( ) ) ; break ; case ASSOCIATIONS : ZWaveAssociationCommandClass associationCommandClass = ( ( ZWaveAssociationCommandClass ) ( node . getCommandClass ( ASSOCIATION ) ) ) ; if ( associationCommandClass == null ) { break ; } if ( ( stageAdvanced ) == false ) { break ; } ZWaveProductDatabase associations = new ZWaveProductDatabase ( ) ; if ( ( associations . FindProduct ( node . getManufacturer ( ) , node . getDeviceType ( ) , node . getDeviceId ( ) , node . getApplicationVersion ( ) ) ) == true ) { List < ZWaveDbAssociationGroup > groupList = associations . getProductAssociationGroups ( ) ; if ( groupList == null ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>ASSOCIATIONS<seq2seq4repair_space>-<seq2seq4repair_space>none<seq2seq4repair_space>in<seq2seq4repair_space>database" , node . getNodeId ( ) ) ; break ; } for ( ZWaveDbAssociationGroup group : groupList ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>ASSOCIATIONS<seq2seq4repair_space>request<seq2seq4repair_space>group<seq2seq4repair_space>{}" , node . getNodeId ( ) , group . Index ) ; addToQueue ( associationCommandClass . getAssociationMessage ( group . Index ) ) ; } } else { for ( int group = 1 ; group <= ( associationCommandClass . getMaxGroups ( ) ) ; group ++ ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>ASSOCIATIONS<seq2seq4repair_space>request<seq2seq4repair_space>group<seq2seq4repair_space>{}" , node . getNodeId ( ) , group ) ; addToQueue ( associationCommandClass . getAssociationMessage ( group ) ) ; } } break ; case SET_WAKEUP : if ( ( controller . isMasterController ( ) ) == false ) { break ; } ZWaveWakeUpCommandClass wakeupCommandClass = ( ( ZWaveWakeUpCommandClass ) ( node . getCommandClass ( WAKE_UP ) ) ) ; if ( wakeupCommandClass == null ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_WAKEUP<seq2seq4repair_space>-<seq2seq4repair_space>Wakeup<seq2seq4repair_space>command<seq2seq4repair_space>class<seq2seq4repair_space>not<seq2seq4repair_space>supported" , node . getNodeId ( ) ) ; break ; } if ( ( wakeupCommandClass . getTargetNodeId ( ) ) == ( controller . getOwnNodeId ( ) ) ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_WAKEUP<seq2seq4repair_space>-<seq2seq4repair_space>TargetNode<seq2seq4repair_space>is<seq2seq4repair_space>set<seq2seq4repair_space>to<seq2seq4repair_space>controller" , node . getNodeId ( ) ) ; break ; } int value = 3600 ; if ( ( wakeupCommandClass . getInterval ( ) ) == 0 ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_WAKEUP<seq2seq4repair_space>-<seq2seq4repair_space>Interval<seq2seq4repair_space>is<seq2seq4repair_space>currently<seq2seq4repair_space>0.<seq2seq4repair_space>Set<seq2seq4repair_space>to<seq2seq4repair_space>3600" , node . getNodeId ( ) ) ; } else { value = wakeupCommandClass . getInterval ( ) ; } ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_WAKEUP<seq2seq4repair_space>-<seq2seq4repair_space>Set<seq2seq4repair_space>wakeup<seq2seq4repair_space>node<seq2seq4repair_space>to<seq2seq4repair_space>controller<seq2seq4repair_space>({}),<seq2seq4repair_space>period<seq2seq4repair_space>{}" , node . getNodeId ( ) , controller . getOwnNodeId ( ) , value ) ; addToQueue ( wakeupCommandClass . setInterval ( value ) ) ; addToQueue ( wakeupCommandClass . getIntervalMessage ( ) ) ; break ; case SET_ASSOCIATION : if ( ( controller . isMasterController ( ) ) == false ) { break ; } database = new ZWaveProductDatabase ( ) ; if ( ( database . FindProduct ( node . getManufacturer ( ) , node . getDeviceType ( ) , node . getDeviceId ( ) , node . getApplicationVersion ( ) ) ) == false ) { ZWaveNodeStageAdvancer . logger . warn ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_ASSOCIATION<seq2seq4repair_space>-<seq2seq4repair_space>Unknown<seq2seq4repair_space>device:<seq2seq4repair_space>{}:{}:{}" , node . getNodeId ( ) , Integer . toHexString ( node . getManufacturer ( ) ) , Integer . toHexString ( node . getDeviceType ( ) ) , Integer . toHexString ( node . getDeviceId ( ) ) ) ; break ; } List < ZWaveDbAssociationGroup > groups = database . getProductAssociationGroups ( ) ; if ( ( groups == null ) || ( ( groups . size ( ) ) == 0 ) ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_ASSOCIATION<seq2seq4repair_space>-<seq2seq4repair_space>No<seq2seq4repair_space>association<seq2seq4repair_space>groups" , node . getNodeId ( ) ) ; break ; } ZWaveAssociationCommandClass associationCls = ( ( ZWaveAssociationCommandClass ) ( node . getCommandClass ( ASSOCIATION ) ) ) ; if ( associationCls == null ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_ASSOCIATION<seq2seq4repair_space>-<seq2seq4repair_space>ASSOCIATION<seq2seq4repair_space>class<seq2seq4repair_space>not<seq2seq4repair_space>supported" , node . getNodeId ( ) ) ; break ; } for ( ZWaveDbAssociationGroup group : groups ) { if ( ( group . SetToController ) == true ) { if ( associationCls . getGroupMembers ( group . Index ) . contains ( controller . getOwnNodeId ( ) ) ) { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_ASSOCIATION<seq2seq4repair_space>-<seq2seq4repair_space>ASSOCIATION<seq2seq4repair_space>set<seq2seq4repair_space>for<seq2seq4repair_space>group<seq2seq4repair_space>{}" , node . getNodeId ( ) , group . Index ) ; } else { ZWaveNodeStageAdvancer . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>SET_ASSOCIATION<seq2seq4repair_space>-<seq2seq4repair_space>Adding<seq2seq4repair_space>ASSOCIATION<seq2seq4repair_space>to<seq2seq4repair_space>group<seq2seq4repair_space>{}" , node . getNodeId ( ) , group . Index ) ; addToQueue ( associationCls . setAssociationMessage ( group . Index , controller . getOwnNodeId ( ) ) ) ; addToQueue ( associationCls . getAssociationMessage ( group . Index ) ) ; } } } break ; case GET_CONFIGURATION : database = new ZWaveProductDatabase ( ) ; if ( ( database . FindProduct ( node . getManufacturer ( ) , node . getDeviceType ( ) , node . getDeviceId ( ) , node . getApplicationVersion ( ) ) ) == false ) { ZWaveNodeStageAdvancer . logger . warn ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>advancer:<seq2seq4repair_space>GET_CONFIGURATION<seq2seq4repair_space>-<seq2seq4repair_space>Unknown<seq2seq4repair_space>device:<seq2seq4repair_space>{}:{}:{}" , node . getNodeId ( ) , Integer . toHexString ( node . getManufacturer ( ) ) , Integer . toHexString ( node . getDeviceType ( ) ) , Integer . toHexString ( node . getDeviceId ( ) ) ) ; break ; } ZWaveConfigurationCommandClass configurationCommandClass = ( ( ZWaveConfigurationCommandClass ) ( node . getCommandClass ( CONFIGURATION ) ) ) ; List < ZWaveDbConfigurationParameter > configList = database . getProductConfigParameters ( ) ; <START_BUG> if ( ( configList . size ( ) ) == 0 ) { <END_BUG>

Fix:
if ( ( configList == null ) || ( ( configList . size ( ) ) == 0 ) ) {