Buggy code:
c = Configuration . create ( di ) ; configurations . add ( c ) ; c . setRoomId ( di . getRoomId ( ) ) ; } } else if ( ( message . getType ( ) ) == ( MessageType . C ) ) { Configuration c = null ; for ( Configuration conf : configurations ) { if ( conf . getSerialNumber ( ) . equalsIgnoreCase ( ( ( C_Message ) ( message ) ) . getSerialNumber ( ) ) ) { c = conf ; break ; } } if ( c == null ) { configurations . add ( Configuration . create ( message ) ) ; } else { c . setValues ( ( ( C_Message ) ( message ) ) ) ; } } else if ( ( message . getType ( ) ) == ( MessageType . S ) ) { cont = false ; } else if ( ( message . getType ( ) ) == ( MessageType . L ) ) { ( ( L_Message ) ( message ) ) . updateDevices ( devices , configurations ) ; MaxCubeBinding . logger . debug ( "{}<seq2seq4repair_space>devices<seq2seq4repair_space>found." , devices . size ( ) ) ; cont = false ; } } } catch ( Exception e ) { MaxCubeBinding . logger . info ( "Failed<seq2seq4repair_space>to<seq2seq4repair_space>process<seq2seq4repair_space>message<seq2seq4repair_space>received<seq2seq4repair_space>by<seq2seq4repair_space>MAX!<seq2seq4repair_space>protocol." ) ; MaxCubeBinding . logger . debug ( Utils . getStackTrace ( e ) ) ; } } if ( ! ( MaxCubeBinding . exclusive ) ) { socket . close ( ) ; socket = null ; } for ( MaxCubeBindingProvider provider : providers ) { for ( String itemName : provider . getItemNames ( ) ) { String serialNumber = provider . getSerialNumber ( itemName ) ; Device device = findDevice ( serialNumber , devices ) ; if ( device == null ) { MaxCubeBinding . logger . info ( "Cannot<seq2seq4repair_space>find<seq2seq4repair_space>MAX!cube<seq2seq4repair_space>device<seq2seq4repair_space>with<seq2seq4repair_space>serial<seq2seq4repair_space>number<seq2seq4repair_space>'{}'" , serialNumber ) ; if ( MaxCubeBinding . logger . isDebugEnabled ( ) ) { StringBuilder sb = new StringBuilder ( ) ; sb . append ( "Available<seq2seq4repair_space>MAX!<seq2seq4repair_space>devices<seq2seq4repair_space>are:" ) ; for ( Device d : devices ) { sb . append ( "\n\t" ) ; sb . append ( d . getSerialNumber ( ) ) ; } MaxCubeBinding . logger . debug ( sb . toString ( ) ) ; } continue ; } if ( ( ( provider . getBindingType ( itemName ) ) == ( BindingType . BATTERY ) ) && ( device . isBatteryLowUpdated ( ) ) ) { eventPublisher . postUpdate ( itemName , device . getBatteryLow ( ) ) ; } else if ( ( provider . getBindingType ( itemName ) ) != ( BindingType . BATTERY ) ) { switch ( device . getType ( ) ) { case HeatingThermostatPlus : case HeatingThermostat : if ( ( ( provider . getBindingType ( itemName ) ) == ( BindingType . VALVE ) ) && ( ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . isValvePositionUpdated ( ) ) ) { eventPublisher . postUpdate ( itemName , ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . getValvePosition ( ) ) ; break ; } case WallMountedThermostat : if ( ( ( provider . getBindingType ( itemName ) ) == ( BindingType . MODE ) ) && ( ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . isModeUpdated ( ) ) ) { eventPublisher . postUpdate ( itemName , ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . getModeString ( ) ) ; } else if ( ( ( provider . getBindingType ( itemName ) ) == ( BindingType . ACTUAL ) ) && ( ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . isTemperatureActualUpdated ( ) ) ) { eventPublisher . postUpdate ( itemName , ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . getTemperatureActual ( ) ) ; } else <START_BUG> if ( ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . isTemperatureSetpointUpdated ( ) ) { <END_BUG> eventPublisher . postUpdate ( itemName , ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . getTemperatureSetpoint ( ) ) ; } break ; case ShutterContact : if ( ( ( org . openhab . binding . maxcube . internal . message . ShutterContact ) ( device ) ) . isShutterStateUpdated ( ) ) { eventPublisher . postUpdate ( itemName , ( ( org . openhab . binding . maxcube . internal . message . ShutterContact ) ( device ) ) . getShutterState ( ) ) ; } break ; default : } } } } } catch ( UnknownHostException e ) { MaxCubeBinding . logger . info ( "Cannot<seq2seq4repair_space>establish<seq2seq4repair_space>connection<seq2seq4repair_space>with<seq2seq4repair_space>MAX!Cube<seq2seq4repair_space>lan<seq2seq4repair_space>gateway<seq2seq4repair_space>while<seq2seq4repair_space>connecting<seq2seq4repair_space>to<seq2seq4repair_space>'{}'" , MaxCubeBinding . ip ) ; MaxCubeBinding . logger . debug ( Utils . getStackTrace ( e ) ) ; socket = null ; } catch ( IOException e ) { MaxCubeBinding . logger . info ( "Cannot<seq2seq4repair_space>read<seq2seq4repair_space>data<seq2seq4repair_space>from<seq2seq4repair_space>MAX!Cube<seq2seq4repair_space>lan<seq2seq4repair_space>gateway<seq2seq4repair_space>while<seq2seq4repair_space>connecting<seq2seq4repair_space>to<seq2seq4repair_space>'{}'" , MaxCubeBinding . ip ) ; MaxCubeBinding . logger . debug ( Utils . getStackTrace ( e ) ) ; socket = null ; } } @ Override public void internalReceiveCommand ( String itemName , Command command ) { } private boolean socketConnect ( ) throws IOException , UnknownHostException { } private Device findDevice ( String serialNumber , ArrayList < Device > devices ) { } private Message processRawMessage ( String raw ) { } @ SuppressWarnings ( "rawtypes" ) public void updated ( Dictionary config ) throws ConfigurationException { }

Fix:
if ( ( ( ( org . openhab . binding . maxcube . internal . message . HeatingThermostat ) ( device ) ) . isTemperatureSetpointUpdated ( ) ) && ( ( provider . getBindingType ( itemName ) ) == null ) ) {