docs: @Override
    protected void initParser() throws MtasConfigException {
      super.initParser();
      if (config != null) {
  
        // always word, no mappings
        wordType = new MtasParserType<>(MAPPING_TYPE_WORD, null, false);
  
        for (int i = 0; i < config.children.size(); i++) {
          MtasConfiguration current = config.children.get(i);
          if (current.name.equals("mappings")) {
            for (int j = 0; j < current.children.size(); j++) {
              if (current.children.get(j).name.equals("mapping")) {
                MtasConfiguration mapping = current.children.get(j);
                String typeMapping = mapping.attributes.get("type");
                String nameMapping = mapping.attributes.get("name");
                if ((typeMapping != null)) {
                  if (typeMapping.equals(MAPPING_TYPE_WORD)) {
                    MtasSketchParserMappingWord m = new MtasSketchParserMappingWord();
                    m.processConfig(mapping);
                    wordType.addItem(m);
                  } else if (typeMapping.equals(MAPPING_TYPE_WORD_ANNOTATION)
                      && (nameMapping != null)) {
                    MtasSketchParserMappingWordAnnotation m = new MtasSketchParserMappingWordAnnotation();
                    m.processConfig(mapping);
                    if (wordAnnotationTypes
                        .containsKey(Integer.parseInt(nameMapping))) {
                      wordAnnotationTypes.get(Integer.parseInt(nameMapping))
                          .addItem(m);
                    } else {
                      MtasParserType<MtasParserMapping<?>> t = new MtasParserType<>(
                          typeMapping, nameMapping, false);
                      t.addItem(m);
                      wordAnnotationTypes.put(Integer.parseInt(nameMapping), t);
                    }
                  } else if (typeMapping.equals(MAPPING_TYPE_GROUP)
                      && (nameMapping != null)) {
                    MtasSketchParserMappingGroup m = new MtasSketchParserMappingGroup();
                    m.processConfig(mapping);
                    if (groupTypes.containsKey(nameMapping)) {
                      groupTypes.get(nameMapping).addItem(m);
                    } else {
                      MtasParserType<MtasParserMapping<?>> t = new MtasParserType<>(
                          typeMapping, nameMapping, false);
                      t.addItem(m);
                      groupTypes.put(nameMapping, t);
                    }
                  } else {
                    throw new MtasConfigException("unknown mapping type "
                        + typeMapping + " or missing name");
                  }
                }
              }
            }
          }
        }
      }
    }