public static Edu.Stanford.Nlp.Patterns.CandidatePhrase CreateOrGet(string phrase, string phraseLemma, ICounter <string> features)
 {
     phrase = phrase.Trim();
     if (candidatePhraseMap.Contains(phrase))
     {
         Edu.Stanford.Nlp.Patterns.CandidatePhrase p = candidatePhraseMap[phrase];
         p.phraseLemma = phraseLemma;
         //If features are non-empty, add to the current set
         if (features != null && features.Size() > 0)
         {
             if (p.features == null)
             {
                 p.features = new ClassicCounter <string>();
             }
             p.features.AddAll(features);
         }
         return(p);
     }
     else
     {
         Edu.Stanford.Nlp.Patterns.CandidatePhrase p = new Edu.Stanford.Nlp.Patterns.CandidatePhrase(phrase, phraseLemma, features);
         candidatePhraseMap[phrase] = p;
         return(p);
     }
 }
 // static void setCandidatePhraseMap(ConcurrentHashMap<String, CandidatePhrase> candmap){
 //  candidatePhraseMap = candmap;
 // }
 public static Edu.Stanford.Nlp.Patterns.CandidatePhrase CreateOrGet(string phrase)
 {
     phrase = phrase.Trim();
     if (candidatePhraseMap.Contains(phrase))
     {
         return(candidatePhraseMap[phrase]);
     }
     else
     {
         Edu.Stanford.Nlp.Patterns.CandidatePhrase p = new Edu.Stanford.Nlp.Patterns.CandidatePhrase(phrase);
         candidatePhraseMap[phrase] = p;
         return(p);
     }
 }
 public static void DeletePhrase(Edu.Stanford.Nlp.Patterns.CandidatePhrase p)
 {
     Sharpen.Collections.Remove(candidatePhraseMap, p);
 }