public static O2RulePack createRulePackWithSignatures(O2RulePack o2rulePack, List<String> signaturesToFind, string rulePackName, bool addNonMatchingSignaturesAsNewRule, string languageDBId)
 {
     DI.log.info("in createRulePackWithSignatures");
     var o2RulesThatMatchSignatures = new List<IO2Rule>();
     var indexedRules = IndexedO2Rules.indexAll(o2rulePack.getIO2Rules());
     foreach (var signature in signaturesToFind)
         if (indexedRules.ContainsKey(signature))
             foreach (var o2Rule in indexedRules[signature])
                 o2RulesThatMatchSignatures.Add(o2Rule);
         else
             if (addNonMatchingSignaturesAsNewRule)                                            
                 o2RulesThatMatchSignatures.Add(O2RulePackUtils.createRule(O2RuleType.NotMapped, signature, languageDBId));                    
     DI.log.info("createRulePackWithSignatures completed, there were {0} rules found", o2RulesThatMatchSignatures.Count);
     return new O2RulePack(rulePackName, o2RulesThatMatchSignatures);
 }
 public void setCurrentRulePack(O2RulePack o2RulePack)
 {
     if (o2RulePack == null)
         return;
     currentO2RulePack = o2RulePack;
     indexedCurrentO2Rules = IndexedO2Rules.indexAll(currentO2RulePack.getIO2Rules());
 }