code: @Override
    public AnalyzedSentence disambiguate(AnalyzedSentence input) {
  
      lazyInit();
  
      AnalyzedTokenReadings[] inputTokens = input.getTokens();
      AnalyzedTokenReadings[] outputTokens = inputTokens;
      
      for (int i = 1; i < inputTokens.length; i++) {
        AnalyzedTokenReadings analyzedToken = inputTokens[i];
        
        String firstToken = analyzedToken.getToken();
        
        List<MultiWordEntry> multiwordItems = tokenToPosTagMap.get(firstToken);
        
        if( multiwordItems == null ) {
          if (allowFirstCapitalized && StringTools.isCapitalizedWord(firstToken) ) {
            multiwordItems = tokenToPosTagMap.get(StringTools.lowercaseFirstChar(firstToken));
          }
          if( multiwordItems == null )
            continue;
        }
        
        MultiWordEntry multiwordEntry = findMultiwordEntry(inputTokens, i, multiwordItems);
        
        if( multiwordEntry == null )
          continue;
  
        for(int multiwordPos=0, inputTokenPos=i; multiwordPos<multiwordEntry.tokens.size(); inputTokenPos++) {
          AnalyzedTokenReadings currentToken = inputTokens[inputTokenPos];
          
          if( currentToken.isWhitespace() ) {
            continue;
          }
          
          String multiwordTag = formatPosTag(multiwordEntry.tag, multiwordPos, multiwordEntry.tokens.size());
  
          outputTokens[inputTokenPos] = prepareNewReading(multiwordEntry.getLemma(), currentToken.getToken(), currentToken, multiwordTag);
          ++multiwordPos;
        }
      }
      
      return new AnalyzedSentence(outputTokens);
    }
docs: Implements multiword POS tags, e.g., &lt;ELLIPSIS&gt; for ellipsis (...)
  start, and &lt;/ELLIPSIS&gt; for ellipsis end.
  
  @param input The tokens to be chunked.
  @return AnalyzedSentence with additional markers.