Buggy code:
@ XStreamAlias ( "thermostatFanModeCommandClass" ) public class ZWaveThermostatFanModeCommandClass extends ZWaveCommandClass implements ZWaveBasicCommands , ZWaveCommandClassDynamicState , ZWaveCommandClassInitialization { @ XStreamOmitField private static final Logger logger = LoggerFactory . getLogger ( ZWaveThermostatFanModeCommandClass . class ) ; private static final byte THERMOSTAT_FAN_MODE_SET = 1 ; private static final byte THERMOSTAT_FAN_MODE_GET = 2 ; private static final byte THERMOSTAT_FAN_MODE_REPORT = 3 ; private static final byte THERMOSTAT_FAN_MODE_SUPPORTED_GET = 4 ; private static final byte THERMOSTAT_FAN_MODE_SUPPORTED_REPORT = 5 ; private final Set < ZWaveThermostatFanModeCommandClass . FanModeType > fanModeTypes = new HashSet < ZWaveThermostatFanModeCommandClass . FanModeType > ( ) ; @ XStreamOmitField private boolean initialiseDone = false ; @ XStreamOmitField private boolean dynamicDone = false ; private boolean isGetSupported = true ; public ZWaveThermostatFanModeCommandClass ( ZWaveNode node , ZWaveController controller , ZWaveEndpoint endpoint ) { } @ Override public CommandClass getCommandClass ( ) { } @ Override public int getMaxVersion ( ) { } @ Override public void handleApplicationCommandRequest ( SerialMessage serialMessage , int offset , int endpoint ) { } protected void processThermostatFanModeReport ( SerialMessage serialMessage , int offset , int endpoint ) { } @ Override public Collection < SerialMessage > initialize ( boolean refresh ) { } @ Override public Collection < SerialMessage > getDynamicValues ( boolean refresh ) { } @ Override public SerialMessage getValueMessage ( ) { if ( ( isGetSupported ) == false ) { ZWaveThermostatFanModeCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Node<seq2seq4repair_space>doesn't<seq2seq4repair_space>support<seq2seq4repair_space>get<seq2seq4repair_space>requests" , this . getNode ( ) . getNodeId ( ) ) ; return null ; } ZWaveThermostatFanModeCommandClass . logger . debug ( "NODE<seq2seq4repair_space>{}:<seq2seq4repair_space>Creating<seq2seq4repair_space>new<seq2seq4repair_space>message<seq2seq4repair_space>for<seq2seq4repair_space>application<seq2seq4repair_space>command<seq2seq4repair_space>THERMOSTAT_FAN_MODE_GET" , this . getNode ( ) . getNodeId ( ) ) ; <START_BUG> SerialMessage result = new SerialMessage ( this . getNode ( ) . getNodeId ( ) , SerialMessageClass . SendData , SerialMessageType . Request , SerialMessageClass . SendData , SerialMessagePriority . Get ) ; <END_BUG> byte [ ] payload = new byte [ ] { ( ( byte ) ( this . getNode ( ) . getNodeId ( ) ) ) , 2 , ( ( byte ) ( getCommandClass ( ) . getKey ( ) ) ) , ZWaveThermostatFanModeCommandClass . THERMOSTAT_FAN_MODE_GET } ; result . setMessagePayload ( payload ) ; return result ; } @ Override public void setGetSupported ( Boolean supported ) { } public SerialMessage getSupportedMessage ( ) { } @ Override public SerialMessage setValueMessage ( int value ) { } @ XStreamAlias ( "fanModeType" ) public enum FanModeType { AUTO_LOW ( 0 , "Auto<seq2seq4repair_space>Low" ) , ON_LOW ( 1 , "On<seq2seq4repair_space>Low" ) , AUTO_HIGH ( 2 , "Auto<seq2seq4repair_space>High" ) , ON_HIGH ( 3 , "On<seq2seq4repair_space>High" ) , UNKNOWN_4 ( 4 , "Unknown<seq2seq4repair_space>4" ) , UNKNOWN_5 ( 5 , "Unknown<seq2seq4repair_space>5" ) , CIRCULATE ( 6 , "Circulate" ) ; private static Map < Integer , ZWaveThermostatFanModeCommandClass . FanModeType > codeToFanModeTypeMapping ; private int key ; private String label ; private FanModeType ( int key , String label ) { } private static void initMapping ( ) { } public static ZWaveThermostatFanModeCommandClass . FanModeType getFanModeType ( int i ) { } public int getKey ( ) { } public String getLabel ( ) { } } }

Fix:
SerialMessage result = new SerialMessage ( this . getNode ( ) . getNodeId ( ) , SerialMessageClass . SendData , SerialMessageType . Request , SerialMessageClass . ApplicationCommandHandler , SerialMessagePriority . Get ) ;