private static void loadLangDefProperties(NodeList properties, BlockGenus genus) {
        Pattern attrExtractor = Pattern.compile("\"(.*)\"");
        Matcher nameMatcher;
        Node prop;
        String key = null, value = null;
        for (int l = 0; l < properties.getLength(); l++) {
            prop = properties.item(l);
            if (prop.getNodeName().equals("LangSpecProperty")) {
                if (prop.getAttributes().getLength() > 0) {
                    nameMatcher = attrExtractor.matcher(prop.getAttributes().getNamedItem("key").toString());
                    if (nameMatcher.find()) {
                        key = nameMatcher.group(1);
                    }
                    Node opt_item = prop.getAttributes().getNamedItem("value");
                    if (opt_item != null) {
                        nameMatcher = attrExtractor.matcher(opt_item.toString());
                        if (nameMatcher.find()) {
                            value = nameMatcher.group(1);
                        }
                    } else {
                        value = prop.getTextContent();
                    }
                    if (key != null && value != null) {
                        genus.properties.put(key, value);
                    }
                }
            }
        }
    }