/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġjet brains . mps . logic . reactor . util Ċ Ċ import Ġjet brains . mps . un ification . Term Ċ Ċ /** Ċ Ġ* Ġ@ author ĠF edor ĠIs ak ov Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠA Ġmap - like Ġstructure Ġto Ġkeep Ġmultiple Ġvalues Ġassociated Ġwith Ġa Ġsingle Ġterm . Ċ Ġ* Ċ Ġ* ĠThe Ġmethod Ġ` put ` Ġupdates Ġthe Ġstructure Ġto Ġcontain Ġthe Ġnew Ġassociation . ĠL ik ew ise , Ġthe Ġmethod Ċ Ġ* Ġ` remove ` Ġupdates Ġit Ġto Ġremove Ġthe Ġassociation . ĠBoth Ġmethods Ġreturn Ġthe Ġsame Ġtrie Ġobject Ġto Ċ Ġ* Ġmake Ġthe ĠAPI Ġcompatible Ġwith Ġthe Ġpersistent Ġversion Ġof Ġthe Ġsame Ġstructure . Ċ Ġ* Ċ Ġ* ĠTerm Ġvariables Ġare Ġsupported : Ġa Ġvariable Ġmatches Ġany Ġterm , Ġincluding Ġother Ġvariable . ĠAll Ġvariables Ġare Ġtreated Ċ Ġ* Ġas Ġ" wild cards ", Ġso Ġthe Ġsubsequent Ġun ification Ġof Ġthe Ġquery Ġterm Ġand Ġthe Ġkey Ġdoes Ġnot Ġnecessarily Ġsucceeds . Ċ Ġ* Ċ Ġ* ĠTo Ġaccess Ġthe Ġstored Ġvalues , Ġthe Ġmethod Ġ` lookup Values ` Ġreturns Ġall Ġvalues Ġassociated Ġwith Ġterms . Ċ Ġ* ĠThe Ġmethod Ġ` all Values ` Ġreturns Ġall Ġstored Ġvalues . ĠNeither Ġmethod Ġmakes Ġany Ġguarantees Ġabout Ġthe Ġcardinality Ġor Ċ Ġ* Ġthe Ġorder Ġof Ġthe Ġvalues Ġreturned . Ċ Ġ*/ Ċ interface ĠTerm T rie < T > Ġ{ ĊĊĠĠĠ Ġfun Ġput ( term : ĠTerm , Ġvalue : ĠT ) ĊĊĠĠĠ Ġfun Ġremove ( term : ĠTerm , Ġvalue : ĠT ) ĠĊĊĠĠĠ Ġfun Ġlookup Values ( term : ĠTerm ): ĠIterable < T > ĊĊĠĠĠ Ġfun Ġall Values (): ĠIterable < T > Ċ } Ċ Ċ fun Ġ< T > Ġterm T rie (): ĠTerm T rie < T > Ġ= ĠClass ic Indexed Term T rie < T >() Ċ