Program: 62635
Project: 62635
Buggy source:
@Override public void initialize(){
  logger.debug("String_Node_Str");
  String nodeParm=this.getThing().getProperties().get(ZWaveBindingConstants.PROPERTY_NODEID);
  if (nodeParm == null) {
    nodeParm=this.getThing().getProperties().get("String_Node_Str");
    this.getThing().setProperty(ZWaveBindingConstants.PROPERTY_NODEID,nodeParm);
  }
  if (nodeParm == null) {
    logger.error("String_Node_Str",this.getThing().getUID());
    return;
  }
  try {
    nodeId=Integer.parseInt(nodeParm);
  }
 catch (  final NumberFormatException ex) {
    logger.error("String_Node_Str",nodeParm,this.getThing().getUID());
    return;
  }
  pollingPeriod=POLLING_PERIOD_DEFAULT;
  final Object pollParm=getConfig().get(ZWaveBindingConstants.CONFIGURATION_POLLPERIOD);
  if (pollParm instanceof BigDecimal) {
    try {
      pollingPeriod=((BigDecimal)pollParm).intValue();
    }
 catch (    final NumberFormatException ex) {
      logger.warn("String_Node_Str",nodeId,pollParm);
    }
  }
  thingChannelsCmd=new ArrayList<ZWaveThingChannel>();
  thingChannelsPoll=new ArrayList<ZWaveThingChannel>();
  thingChannelsState=new ArrayList<ZWaveThingChannel>();
  for (  Channel channel : getThing().getChannels()) {
    Map<String,String> properties=channel.getProperties();
    Configuration configuration=channel.getConfiguration();
    logger.debug("String_Node_Str",nodeId,channel.getUID());
    for (    String key : properties.keySet()) {
      String[] bindingType=key.split("String_Node_Str");
      if (bindingType.length != 3) {
        continue;
      }
      if (!ZWaveBindingConstants.CHANNEL_CFG_BINDING.equals(bindingType[0])) {
        continue;
      }
      String[] bindingProperties=properties.get(key).split("String_Node_Str");
      String[] cmdClasses=bindingProperties[0].split("String_Node_Str");
      Map<String,String> argumentMap=new HashMap<String,String>();
      if (bindingProperties.length == 2) {
        String[] arguments=bindingProperties[1].split("String_Node_Str");
        for (        String arg : arguments) {
          String[] prop=arg.split("String_Node_Str");
          argumentMap.put(prop[0],prop[1]);
        }
      }
      for (      String configName : configuration.getProperties().keySet()) {
        argumentMap.put(configName,configuration.get(configName).toString());
      }
      boolean first=true;
      for (      String cc : cmdClasses) {
        String[] ccSplit=cc.split("String_Node_Str");
        int endpoint=0;
        if (ccSplit.length == 2) {
          endpoint=Integer.parseInt(ccSplit[1]);
        }
        DataType dataType=DataType.DecimalType;
        try {
          dataType=DataType.valueOf(bindingType[2]);
        }
 catch (        IllegalArgumentException e) {
          logger.warn("String_Node_Str",nodeId,dataType);
        }
        ZWaveThingChannel chan=new ZWaveThingChannel(channel.getUID(),dataType,ccSplit[0],endpoint,argumentMap);
        if (first && ("String_Node_Str".equals(bindingType[1]) || "String_Node_Str".equals(bindingType[1]))) {
          thingChannelsCmd.add(chan);
        }
        if ("String_Node_Str".equals(bindingType[1]) || "String_Node_Str".equals(bindingType[1])) {
          thingChannelsState.add(chan);
          if (first == true) {
            thingChannelsState.add(chan);
          }
        }
        first=false;
      }
    }
  }
  Bridge bridge=getBridge();
  if (bridge != null) {
    ThingHandler handler=bridge.getHandler();
    if (handler instanceof ZWaveControllerHandler) {
      bridgeHandlerInitialized(handler,bridge);
    }
  }
  startPolling();
}

Fixed version (ground truth):
@Override public void initialize(){
  logger.debug("String_Node_Str");
  String nodeParm=this.getThing().getProperties().get(ZWaveBindingConstants.PROPERTY_NODEID);
  if (nodeParm == null) {
    nodeParm=this.getThing().getProperties().get("String_Node_Str");
    this.getThing().setProperty(ZWaveBindingConstants.PROPERTY_NODEID,nodeParm);
  }
  if (nodeParm == null) {
    logger.error("String_Node_Str",this.getThing().getUID());
    return;
  }
  try {
    nodeId=Integer.parseInt(nodeParm);
  }
 catch (  final NumberFormatException ex) {
    logger.error("String_Node_Str",nodeParm,this.getThing().getUID());
    return;
  }
  pollingPeriod=POLLING_PERIOD_DEFAULT;
  final Object pollParm=getConfig().get(ZWaveBindingConstants.CONFIGURATION_POLLPERIOD);
  if (pollParm instanceof BigDecimal) {
    try {
      pollingPeriod=((BigDecimal)pollParm).intValue();
    }
 catch (    final NumberFormatException ex) {
      logger.warn("String_Node_Str",nodeId,pollParm);
    }
  }
  thingChannelsCmd=new ArrayList<ZWaveThingChannel>();
  thingChannelsPoll=new ArrayList<ZWaveThingChannel>();
  thingChannelsState=new ArrayList<ZWaveThingChannel>();
  for (  Channel channel : getThing().getChannels()) {
    Map<String,String> properties=channel.getProperties();
    Configuration configuration=channel.getConfiguration();
    logger.debug("String_Node_Str",nodeId,channel.getUID());
    for (    String key : properties.keySet()) {
      String[] bindingType=key.split("String_Node_Str");
      if (bindingType.length != 3) {
        continue;
      }
      if (!ZWaveBindingConstants.CHANNEL_CFG_BINDING.equals(bindingType[0])) {
        continue;
      }
      String[] bindingProperties=properties.get(key).split("String_Node_Str");
      String[] cmdClasses=bindingProperties[0].split("String_Node_Str");
      Map<String,String> argumentMap=new HashMap<String,String>();
      if (bindingProperties.length == 2) {
        String[] arguments=bindingProperties[1].split("String_Node_Str");
        for (        String arg : arguments) {
          String[] prop=arg.split("String_Node_Str");
          argumentMap.put(prop[0],prop[1]);
        }
      }
      for (      String configName : configuration.getProperties().keySet()) {
        argumentMap.put(configName,configuration.get(configName).toString());
      }
      boolean first=true;
      for (      String cc : cmdClasses) {
        String[] ccSplit=cc.split("String_Node_Str");
        int endpoint=0;
        if (ccSplit.length == 2) {
          endpoint=Integer.parseInt(ccSplit[1]);
        }
        DataType dataType=DataType.DecimalType;
        try {
          dataType=DataType.valueOf(bindingType[2]);
        }
 catch (        IllegalArgumentException e) {
          logger.warn("String_Node_Str",nodeId,dataType);
        }
        ZWaveThingChannel chan=new ZWaveThingChannel(channel.getUID(),dataType,ccSplit[0],endpoint,argumentMap);
        if (first && ("String_Node_Str".equals(bindingType[1]) || "String_Node_Str".equals(bindingType[1]))) {
          thingChannelsCmd.add(chan);
        }
        if (first) {
          thingChannelsPoll.add(chan);
        }
        if ("String_Node_Str".equals(bindingType[1]) || "String_Node_Str".equals(bindingType[1])) {
          thingChannelsState.add(chan);
          if (first == true) {
            thingChannelsState.add(chan);
          }
        }
        first=false;
      }
    }
  }
  Bridge bridge=getBridge();
  if (bridge != null) {
    ThingHandler handler=bridge.getHandler();
    if (handler instanceof ZWaveControllerHandler) {
      bridgeHandlerInitialized(handler,bridge);
    }
  }
  startPolling();
}