Source:
public static IntegraStateBindingConfig parseConfig(String bindingConfig) throws BindingConfigParseException { ConfigIterator iterator = new ConfigIterator(bindingConfig); ObjectType objectType; try { objectType = iterator.nextOfType(ObjectType.class, "object type"); } catch (Exception e) { return null; } StateType stateType = null; int[] objectNumbers = {}; switch (objectType) { case ZONE: stateType = iterator.nextOfType(ZoneState.class, "zone state type"); break; case PARTITION: stateType = iterator.nextOfType(PartitionState.class, "partition state type"); break; case OUTPUT: stateType = OutputState.OUTPUT; break; case DOORS: stateType = iterator.nextOfType(DoorsState.class, "doors state type"); break; case TROUBLE: stateType = iterator.nextOfType(TroubleState.class, "trouble state type"); break; case TROUBLE_MEMORY: stateType = iterator.nextOfType(TroubleMemoryState.class, "trouble mamory state type"); break; } if (iterator.hasNext()) { try { int objectNumberMax = 8 * stateType.getBytesCount(true); String[] objectNumbersStr = iterator.next().split(","); objectNumbers = new int[objectNumbersStr.length]; for (int i = 0; i < objectNumbersStr.length; ++i) { int objectNumber = Integer.parseInt(objectNumbersStr[i]); if (objectNumber < 1 || objectNumber > objectNumberMax) { throw new BindingConfigParseException( String.format("Invalid object number: %s", bindingConfig)); } objectNumbers[i] = objectNumber; } } catch (NumberFormatException e) { throw new BindingConfigParseException(String.format("Invalid object number: %s", bindingConfig)); } } return new IntegraStateBindingConfig(stateType, objectNumbers, iterator.parseOptions()); }

Target:
public static IntegraStateBindingConfig parseConfig(String bindingConfig) throws BindingConfigParseException { ConfigIterator iterator = new ConfigIterator(bindingConfig); ObjectType objectType; try { objectType = iterator.nextOfType(ObjectType.class, "object type"); } catch (Exception e) { return null; } StateType stateType = null; int[] objectNumbers = {}; switch (objectType) { case ZONE: stateType = iterator.nextOfType(ZoneState.class, "zone state type"); break; case PARTITION: stateType = iterator.nextOfType(PartitionState.class, "partition state type"); break; case OUTPUT: stateType = OutputState.OUTPUT; break; case DOORS: stateType = iterator.nextOfType(DoorsState.class, "doors state type"); break; case TROUBLE: stateType = iterator.nextOfType(TroubleState.class, "trouble state type"); break; case TROUBLE_MEMORY: stateType = iterator.nextOfType(TroubleMemoryState.class, "trouble memory state type"); break; } if (iterator.hasNext()) { try { int objectNumberMax = 8 * stateType.getBytesCount(true); String[] objectNumbersStr = iterator.next().split(","); objectNumbers = new int[objectNumbersStr.length]; for (int i = 0; i < objectNumbersStr.length; ++i) { int objectNumber = Integer.parseInt(objectNumbersStr[i]); if (objectNumber < 1 || objectNumber > objectNumberMax) { throw new BindingConfigParseException( String.format("Invalid object number: %s", bindingConfig)); } objectNumbers[i] = objectNumber; } } catch (NumberFormatException e) { throw new BindingConfigParseException(String.format("Invalid object number: %s", bindingConfig)); } } return new IntegraStateBindingConfig(stateType, objectNumbers, iterator.parseOptions()); }