code: private void lazyInit() {
  
      if (tokenToPosTagMap != null) {
        return;
      }
  
      Map<String, List<MultiWordEntry>> map = new HashMap<>();
  
      try (InputStream stream = JLanguageTool.getDataBroker().getFromResourceDirAsStream(filename)) {
        List<String> posTokens = loadWords(stream);
  
        for (String posToken : posTokens) {
          String[] tokenAndTag = posToken.split("\t");
          if (tokenAndTag.length != 2) {
            throw new RuntimeException("Invalid format in " + filename + ": '" + posToken + "', expected two tab-separated parts");
          }
          
          String[] tokens = tokenAndTag[0].split(" ");
          String posTag = tokenAndTag[1];
          
          List<MultiWordEntry> multiwordItems;
          if( map.containsKey(tokens[0]) ) {
            multiwordItems = map.get(tokens[0]);
          }
          else {
            multiwordItems = new ArrayList<>();
            map.put(tokens[0], multiwordItems);
          }
          
          multiwordItems.add(new MultiWordEntry(Arrays.asList(tokens), posTag));
        }
        
        tokenToPosTagMap = map;
      } catch (IOException e) {
        throw new RuntimeException(e);
      }
    }
docs: /*
  Lazy init, thanks to Artur Trzewik