Minor refactorings in program producing code. Consolidating everything related to program producing into a single package.

This commit is contained in:
Fedor Isakov 2019-02-15 12:10:10 +01:00
parent 83e5ce8c26
commit 2f8ff698b3
3 changed files with 7835 additions and 7977 deletions

View File

@ -244,26 +244,11 @@
<child id="1199569916463" name="body" index="1bW5cS" />
</concept>
</language>
<language id="f2801650-65d5-424e-bb1b-463a8781b786" name="jetbrains.mps.baseLanguage.javadoc">
<concept id="5349172909345501395" name="jetbrains.mps.baseLanguage.javadoc.structure.BaseDocComment" flags="ng" index="P$AiS">
<child id="8465538089690331502" name="body" index="TZ5H$" />
</concept>
<concept id="8465538089690331500" name="jetbrains.mps.baseLanguage.javadoc.structure.CommentLine" flags="ng" index="TZ5HA">
<child id="8970989240999019149" name="part" index="1dT_Ay" />
</concept>
<concept id="8970989240999019143" name="jetbrains.mps.baseLanguage.javadoc.structure.TextCommentLinePart" flags="ng" index="1dT_AC">
<property id="8970989240999019144" name="text" index="1dT_AB" />
</concept>
<concept id="2068944020170241612" name="jetbrains.mps.baseLanguage.javadoc.structure.ClassifierDocComment" flags="ng" index="3UR2Jj" />
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="7400021826771268254" name="jetbrains.mps.lang.smodel.structure.SNodePointerType" flags="ig" index="2sp9CU" />
<concept id="1138055754698" name="jetbrains.mps.lang.smodel.structure.SNodeType" flags="in" index="3Tqbb2" />
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1133920641626" name="jetbrains.mps.lang.core.structure.BaseConcept" flags="ng" index="2VYdi">
<child id="5169995583184591170" name="smodelAttribute" index="lGtFl" />
</concept>
<concept id="1169194658468" name="jetbrains.mps.lang.core.structure.INamedConcept" flags="ng" index="TrEIO">
<property id="1169194664001" name="name" index="TrG5h" />
</concept>
@ -275,7 +260,6 @@
<concept id="540871147943773365" name="jetbrains.mps.baseLanguage.collections.structure.SingleArgumentSequenceOperation" flags="nn" index="25WWJ4">
<child id="540871147943773366" name="argument" index="25WWJ7" />
</concept>
<concept id="2526372162255441536" name="jetbrains.mps.baseLanguage.collections.structure.AsUnmodifiableOperation" flags="nn" index="26Dbio" />
<concept id="1204980550705" name="jetbrains.mps.baseLanguage.collections.structure.VisitAllOperation" flags="nn" index="2es0OD" />
<concept id="1151688443754" name="jetbrains.mps.baseLanguage.collections.structure.ListType" flags="in" index="_YKpA">
<child id="1151688676805" name="elementType" index="_ZDj9" />
@ -295,15 +279,9 @@
<child id="1237721435807" name="elementType" index="HW$YZ" />
</concept>
<concept id="1227026094155" name="jetbrains.mps.baseLanguage.collections.structure.RemoveLastElementOperation" flags="nn" index="2Kt5_m" />
<concept id="1201306600024" name="jetbrains.mps.baseLanguage.collections.structure.ContainsKeyOperation" flags="nn" index="2Nt0df">
<child id="1201654602639" name="key" index="38cxEo" />
</concept>
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1237909114519" name="jetbrains.mps.baseLanguage.collections.structure.GetValuesOperation" flags="nn" index="T8wYR" />
<concept id="1160600644654" name="jetbrains.mps.baseLanguage.collections.structure.ListCreatorWithInit" flags="nn" index="Tc6Ow" />
<concept id="1160612413312" name="jetbrains.mps.baseLanguage.collections.structure.AddElementOperation" flags="nn" index="TSZUe" />
<concept id="1160666733551" name="jetbrains.mps.baseLanguage.collections.structure.AddAllElementsOperation" flags="nn" index="X8dFx" />
<concept id="1240216724530" name="jetbrains.mps.baseLanguage.collections.structure.LinkedHashMapCreator" flags="nn" index="32Fmki" />
<concept id="1167380149909" name="jetbrains.mps.baseLanguage.collections.structure.RemoveElementOperation" flags="nn" index="3dhRuq" />
<concept id="1197683403723" name="jetbrains.mps.baseLanguage.collections.structure.MapType" flags="in" index="3rvAFt">
<child id="1197683466920" name="keyType" index="3rvQeY" />
@ -2475,474 +2453,6 @@
</node>
<node concept="2tJIrI" id="4sSe4$oMZ04" role="jymVt" />
</node>
<node concept="312cEu" id="4MqhgXUMauK">
<property role="TrG5h" value="HandlerBuilder" />
<node concept="2tJIrI" id="4MqhgXUMb3v" role="jymVt" />
<node concept="3clFbW" id="4MqhgXUMb4h" role="jymVt">
<node concept="3cqZAl" id="4MqhgXUMb4j" role="3clF45" />
<node concept="3Tm1VV" id="4MqhgXUMb4k" role="1B3o_S" />
<node concept="3clFbS" id="4MqhgXUMb4l" role="3clF47">
<node concept="3clFbF" id="4MqhgXUMb9t" role="3cqZAp">
<node concept="37vLTI" id="4MqhgXUMb9v" role="3clFbG">
<node concept="2OqwBi" id="4MqhgXUMbh6" role="37vLTJ">
<node concept="Xjq3P" id="4MqhgXUMbhX" role="2Oq$k0" />
<node concept="2OwXpG" id="4MqhgXUMbh9" role="2OqNvi">
<ref role="2Oxat5" node="4MqhgXUMb9p" resolve="name" />
</node>
</node>
<node concept="37vLTw" id="4MqhgXUMb9z" role="37vLTx">
<ref role="3cqZAo" node="4MqhgXUMb4S" resolve="name" />
</node>
</node>
</node>
<node concept="3clFbF" id="4MqhgXUMbbd" role="3cqZAp">
<node concept="37vLTI" id="4MqhgXUMbbf" role="3clFbG">
<node concept="2OqwBi" id="4MqhgXUMbjP" role="37vLTJ">
<node concept="Xjq3P" id="4MqhgXUMbkR" role="2Oq$k0" />
<node concept="2OwXpG" id="4MqhgXUMbjS" role="2OqNvi">
<ref role="2Oxat5" node="4MqhgXUMbb9" resolve="primary" />
</node>
</node>
<node concept="37vLTw" id="4MqhgXUMbbj" role="37vLTx">
<ref role="3cqZAo" node="4MqhgXUMb69" resolve="primary" />
</node>
</node>
</node>
<node concept="3clFbF" id="4MqhgXUMKBn" role="3cqZAp">
<node concept="1rXfSq" id="4MqhgXUMKBl" role="3clFbG">
<ref role="37wK5l" node="4MqhgXUMhh_" resolve="init" />
<node concept="37vLTw" id="4MqhgXUMKU9" role="37wK5m">
<ref role="3cqZAo" node="4MqhgXUMh3C" resolve="locations" />
</node>
</node>
</node>
</node>
<node concept="37vLTG" id="4MqhgXUMb4S" role="3clF46">
<property role="TrG5h" value="name" />
<node concept="17QB3L" id="4MqhgXUMb4R" role="1tU5fm" />
</node>
<node concept="37vLTG" id="4MqhgXUMb69" role="3clF46">
<property role="TrG5h" value="primary" />
<node concept="A3Dl8" id="2vGNdoJHq67" role="1tU5fm">
<node concept="3uibUv" id="2vGNdoJHq68" role="A3Ik2">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
</node>
<node concept="37vLTG" id="4MqhgXUMh3C" role="3clF46">
<property role="TrG5h" value="locations" />
<node concept="A3Dl8" id="4MqhgXUMh7W" role="1tU5fm">
<node concept="3qTvmN" id="4MqhgXUNZ97" role="A3Ik2" />
</node>
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUMLGb" role="jymVt" />
<node concept="3clFb_" id="4MqhgXUMbtk" role="jymVt">
<property role="TrG5h" value="addRule" />
<node concept="37vLTG" id="4MqhgXUMgMT" role="3clF46">
<property role="TrG5h" value="location" />
<node concept="3uibUv" id="4MqhgXUMgVa" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="37vLTG" id="4MqhgXUMggv" role="3clF46">
<property role="TrG5h" value="rule" />
<node concept="3uibUv" id="4MqhgXUMgkS" role="1tU5fm">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
<node concept="3cqZAl" id="4MqhgXUMbtm" role="3clF45" />
<node concept="3Tm1VV" id="4MqhgXUMbtn" role="1B3o_S" />
<node concept="3clFbS" id="4MqhgXUMbto" role="3clF47">
<node concept="3clFbJ" id="1N8$BG_2Ocv" role="3cqZAp">
<node concept="3clFbS" id="1N8$BG_2Ocx" role="3clFbx">
<node concept="YS8fn" id="1N8$BG_2PoZ" role="3cqZAp">
<node concept="2ShNRf" id="1N8$BG_2Ppr" role="YScLw">
<node concept="1pGfFk" id="1N8$BG_2QBw" role="2ShVmc">
<ref role="37wK5l" to="wyt6:~IllegalStateException.&lt;init&gt;(java.lang.String)" resolve="IllegalStateException" />
<node concept="3cpWs3" id="1N8$BG_2RYk" role="37wK5m">
<node concept="Xl_RD" id="1N8$BG_2RYW" role="3uHU7w">
<property role="Xl_RC" value="'" />
</node>
<node concept="3cpWs3" id="1N8$BG_2RaX" role="3uHU7B">
<node concept="Xl_RD" id="1N8$BG_2QBT" role="3uHU7B">
<property role="Xl_RC" value="duplicate tag '" />
</node>
<node concept="2OqwBi" id="1N8$BG_2Rmd" role="3uHU7w">
<node concept="37vLTw" id="1N8$BG_2Rbq" role="2Oq$k0">
<ref role="3cqZAo" node="4MqhgXUMggv" resolve="rule" />
</node>
<node concept="liA8E" id="1N8$BG_2RtG" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.tag():java.lang.String" resolve="tag" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="1N8$BG_2O_w" role="3clFbw">
<node concept="37vLTw" id="1N8$BG_2Odt" role="2Oq$k0">
<ref role="3cqZAo" node="1N8$BG_2NH_" resolve="tag2rule" />
</node>
<node concept="2Nt0df" id="1N8$BG_2VmT" role="2OqNvi">
<node concept="2OqwBi" id="1N8$BG_2VuR" role="38cxEo">
<node concept="37vLTw" id="1N8$BG_2Vnr" role="2Oq$k0">
<ref role="3cqZAo" node="4MqhgXUMggv" resolve="rule" />
</node>
<node concept="liA8E" id="1N8$BG_2V_S" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.tag():java.lang.String" resolve="tag" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="1N8$BG_3gnE" role="3cqZAp">
<node concept="37vLTI" id="1N8$BG_3huW" role="3clFbG">
<node concept="37vLTw" id="1N8$BG_3hEG" role="37vLTx">
<ref role="3cqZAo" node="4MqhgXUMggv" resolve="rule" />
</node>
<node concept="3EllGN" id="1N8$BG_3gQw" role="37vLTJ">
<node concept="2OqwBi" id="1N8$BG_3hbs" role="3ElVtu">
<node concept="37vLTw" id="1N8$BG_3h39" role="2Oq$k0">
<ref role="3cqZAo" node="4MqhgXUMggv" resolve="rule" />
</node>
<node concept="liA8E" id="1N8$BG_3hjk" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.tag():java.lang.String" resolve="tag" />
</node>
</node>
<node concept="37vLTw" id="1N8$BG_3gnC" role="3ElQJh">
<ref role="3cqZAo" node="1N8$BG_2NH_" resolve="tag2rule" />
</node>
</node>
</node>
</node>
<node concept="3SKdUt" id="4MqhgXUMgBM" role="3cqZAp">
<node concept="3SKdUq" id="4MqhgXUMgBO" role="3SKWNk">
<property role="3SKdUp" value="TODO: invariant: the rule's head must have a constraint with the primary symbol" />
</node>
</node>
<node concept="3clFbF" id="4MqhgXUMICn" role="3cqZAp">
<node concept="2OqwBi" id="4MqhgXUMJAd" role="3clFbG">
<node concept="3EllGN" id="4MqhgXUMIXB" role="2Oq$k0">
<node concept="37vLTw" id="4MqhgXUMJ3s" role="3ElVtu">
<ref role="3cqZAo" node="4MqhgXUMgMT" resolve="location" />
</node>
<node concept="37vLTw" id="4MqhgXUMICl" role="3ElQJh">
<ref role="3cqZAo" node="4MqhgXUMgHN" resolve="location2rules" />
</node>
</node>
<node concept="TSZUe" id="4MqhgXUMKap" role="2OqNvi">
<node concept="37vLTw" id="4MqhgXUMKgW" role="25WWJ7">
<ref role="3cqZAo" node="4MqhgXUMggv" resolve="rule" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUMb3C" role="jymVt" />
<node concept="3clFb_" id="4MqhgXUMhh_" role="jymVt">
<property role="TrG5h" value="init" />
<node concept="37vLTG" id="4MqhgXUMhtr" role="3clF46">
<property role="TrG5h" value="locations" />
<node concept="A3Dl8" id="4MqhgXUMhxO" role="1tU5fm">
<node concept="3qTvmN" id="4MqhgXUO0SD" role="A3Ik2" />
</node>
</node>
<node concept="3cqZAl" id="4MqhgXUMhhB" role="3clF45" />
<node concept="3Tm6S6" id="4MqhgXUMhmy" role="1B3o_S" />
<node concept="3clFbS" id="4MqhgXUMhhD" role="3clF47">
<node concept="1DcWWT" id="4MqhgXUMhDW" role="3cqZAp">
<node concept="3clFbS" id="4MqhgXUMhDZ" role="2LFqv$">
<node concept="3clFbF" id="4MqhgXUMi_d" role="3cqZAp">
<node concept="37vLTI" id="4MqhgXUMjxs" role="3clFbG">
<node concept="2ShNRf" id="4MqhgXUMjCn" role="37vLTx">
<node concept="Tc6Ow" id="4MqhgXUMj_U" role="2ShVmc">
<node concept="3uibUv" id="4MqhgXUMj_V" role="HW$YZ">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
</node>
<node concept="3EllGN" id="4MqhgXUMiU9" role="37vLTJ">
<node concept="37vLTw" id="4MqhgXUMiYy" role="3ElVtu">
<ref role="3cqZAo" node="4MqhgXUMhE0" resolve="loc" />
</node>
<node concept="37vLTw" id="4MqhgXUMi_c" role="3ElQJh">
<ref role="3cqZAo" node="4MqhgXUMgHN" resolve="location2rules" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="4MqhgXUMhE0" role="1Duv9x">
<property role="TrG5h" value="loc" />
<node concept="3uibUv" id="4MqhgXUMhE4" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="37vLTw" id="4MqhgXUMhE5" role="1DdaDG">
<ref role="3cqZAo" node="4MqhgXUMhtr" resolve="locations" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUNBTW" role="jymVt" />
<node concept="3clFb_" id="4MqhgXUNDLG" role="jymVt">
<property role="TrG5h" value="toHandler" />
<node concept="3uibUv" id="4MqhgXUNEFF" role="3clF45">
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
</node>
<node concept="3Tm1VV" id="4MqhgXUNDLJ" role="1B3o_S" />
<node concept="3clFbS" id="4MqhgXUNDLK" role="3clF47">
<node concept="3clFbF" id="4MqhgXUNGR0" role="3cqZAp">
<node concept="37vLTI" id="4MqhgXUNHvW" role="3clFbG">
<node concept="2OqwBi" id="4MqhgXUNGW4" role="37vLTJ">
<node concept="Xjq3P" id="4MqhgXUNGQZ" role="2Oq$k0" />
<node concept="2OwXpG" id="4MqhgXUNH1M" role="2OqNvi">
<ref role="2Oxat5" node="4MqhgXUMgHN" resolve="location2rules" />
</node>
</node>
<node concept="2YIFZM" id="4MqhgXUNJ$f" role="37vLTx">
<ref role="37wK5l" to="33ny:~Collections.unmodifiableMap(java.util.Map):java.util.Map" resolve="unmodifiableMap" />
<ref role="1Pybhc" to="33ny:~Collections" resolve="Collections" />
<node concept="37vLTw" id="4MqhgXUNJJ2" role="37wK5m">
<ref role="3cqZAo" node="4MqhgXUMgHN" resolve="location2rules" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4MqhgXUNKmT" role="3cqZAp">
<node concept="2ShNRf" id="4MqhgXUNKmP" role="3clFbG">
<node concept="1pGfFk" id="4MqhgXUNKOX" role="2ShVmc">
<ref role="37wK5l" node="4MqhgXUM$CT" resolve="HandlerBuilder.HandlerImpl" />
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUMb3H" role="jymVt" />
<node concept="312cEu" id="4MqhgXUMzTQ" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="HandlerImpl" />
<node concept="2tJIrI" id="4MqhgXUM$3u" role="jymVt" />
<node concept="3clFbW" id="4MqhgXUM$CT" role="jymVt">
<node concept="3cqZAl" id="4MqhgXUM$CV" role="3clF45" />
<node concept="3Tm6S6" id="4MqhgXUM$Jk" role="1B3o_S" />
<node concept="3clFbS" id="4MqhgXUM$CX" role="3clF47" />
</node>
<node concept="2tJIrI" id="4MqhgXUM$ym" role="jymVt" />
<node concept="3clFb_" id="4MqhgXUM$3K" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="name" />
<property role="DiZV1" value="false" />
<property role="od$2w" value="false" />
<node concept="3Tm1VV" id="4MqhgXUM$3L" role="1B3o_S" />
<node concept="3uibUv" id="4MqhgXUM$3N" role="3clF45">
<ref role="3uigEE" to="wyt6:~String" resolve="String" />
</node>
<node concept="3clFbS" id="4MqhgXUM$3O" role="3clF47">
<node concept="3clFbF" id="4MqhgXUM$bb" role="3cqZAp">
<node concept="37vLTw" id="4MqhgXUM$ba" role="3clFbG">
<ref role="3cqZAo" node="4MqhgXUMb9p" resolve="name" />
</node>
</node>
</node>
<node concept="2AHcQZ" id="4MqhgXUM$3P" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="2vGNdoJKjpi" role="jymVt" />
<node concept="3clFb_" id="2vGNdoJKm_W" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="primarySymbols" />
<property role="DiZV1" value="false" />
<property role="od$2w" value="false" />
<node concept="3Tm1VV" id="2vGNdoJKm_X" role="1B3o_S" />
<node concept="3uibUv" id="2vGNdoJKm_Z" role="3clF45">
<ref role="3uigEE" to="wyt6:~Iterable" resolve="Iterable" />
<node concept="3uibUv" id="2vGNdoJKmA0" role="11_B2D">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
<node concept="3clFbS" id="2vGNdoJKmA1" role="3clF47">
<node concept="3clFbF" id="2vGNdoJKnKS" role="3cqZAp">
<node concept="37vLTw" id="2vGNdoJKnKR" role="3clFbG">
<ref role="3cqZAo" node="4MqhgXUMbb9" resolve="primary" />
</node>
</node>
</node>
<node concept="2AHcQZ" id="2vGNdoJKmA2" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUM$rD" role="jymVt" />
<node concept="3clFb_" id="4MqhgXUM$40" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="rules" />
<property role="DiZV1" value="false" />
<property role="od$2w" value="false" />
<node concept="3Tm1VV" id="4MqhgXUM$41" role="1B3o_S" />
<node concept="3uibUv" id="4MqhgXUM$43" role="3clF45">
<ref role="3uigEE" to="wyt6:~Iterable" resolve="Iterable" />
<node concept="3uibUv" id="4MqhgXUM$44" role="11_B2D">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
<node concept="3clFbS" id="4MqhgXUM$45" role="3clF47">
<node concept="3cpWs8" id="4MqhgXUCPqL" role="3cqZAp">
<node concept="3cpWsn" id="4MqhgXUCPqM" role="3cpWs9">
<property role="TrG5h" value="allRules" />
<node concept="_YKpA" id="4MqhgXUCPqH" role="1tU5fm">
<node concept="3uibUv" id="4MqhgXUCPqK" role="_ZDj9">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
<node concept="2ShNRf" id="4MqhgXUCPqN" role="33vP2m">
<node concept="Tc6Ow" id="4MqhgXUCPqO" role="2ShVmc">
<node concept="3uibUv" id="4MqhgXUCPqP" role="HW$YZ">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
</node>
</node>
</node>
<node concept="1DcWWT" id="4MqhgXUPgU4" role="3cqZAp">
<node concept="3clFbS" id="4MqhgXUPgU7" role="2LFqv$">
<node concept="3clFbF" id="4MqhgXUMDP5" role="3cqZAp">
<node concept="2OqwBi" id="4MqhgXUMErd" role="3clFbG">
<node concept="37vLTw" id="4MqhgXUMDP3" role="2Oq$k0">
<ref role="3cqZAo" node="4MqhgXUCPqM" resolve="allRules" />
</node>
<node concept="X8dFx" id="4MqhgXUMFuM" role="2OqNvi">
<node concept="37vLTw" id="4MqhgXUPjiz" role="25WWJ7">
<ref role="3cqZAo" node="4MqhgXUPgU8" resolve="rules" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="4MqhgXUPgU8" role="1Duv9x">
<property role="TrG5h" value="rules" />
<node concept="_YKpA" id="4MqhgXUPgUc" role="1tU5fm">
<node concept="3uibUv" id="4MqhgXUPgUd" role="_ZDj9">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
</node>
<node concept="2OqwBi" id="4MqhgXUPgUe" role="1DdaDG">
<node concept="37vLTw" id="4MqhgXUPgUf" role="2Oq$k0">
<ref role="3cqZAo" node="4MqhgXUMgHN" resolve="location2rules" />
</node>
<node concept="T8wYR" id="4MqhgXUPgUg" role="2OqNvi" />
</node>
</node>
<node concept="3clFbF" id="4MqhgXUM_3o" role="3cqZAp">
<node concept="2OqwBi" id="4MqhgXUMGPA" role="3clFbG">
<node concept="37vLTw" id="4MqhgXUM_3m" role="2Oq$k0">
<ref role="3cqZAo" node="4MqhgXUCPqM" resolve="allRules" />
</node>
<node concept="26Dbio" id="4MqhgXUMHQy" role="2OqNvi" />
</node>
</node>
</node>
<node concept="2AHcQZ" id="4MqhgXUM$46" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUM$3z" role="jymVt" />
<node concept="3Tm1VV" id="4MqhgXUMzTR" role="1B3o_S" />
<node concept="3uibUv" id="4MqhgXUM$3j" role="1zkMxy">
<ref role="3uigEE" to="av0y:~Handler" resolve="Handler" />
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUMzKi" role="jymVt" />
<node concept="3Tm1VV" id="4MqhgXUMauL" role="1B3o_S" />
<node concept="312cEg" id="4MqhgXUMb9p" role="jymVt">
<property role="TrG5h" value="name" />
<property role="3TUv4t" value="true" />
<node concept="3Tm6S6" id="4MqhgXUMb9q" role="1B3o_S" />
<node concept="17QB3L" id="4MqhgXUMb9s" role="1tU5fm" />
</node>
<node concept="312cEg" id="4MqhgXUMbb9" role="jymVt">
<property role="TrG5h" value="primary" />
<property role="3TUv4t" value="true" />
<node concept="3Tm6S6" id="4MqhgXUMbba" role="1B3o_S" />
<node concept="A3Dl8" id="2vGNdoJHqg2" role="1tU5fm">
<node concept="3uibUv" id="2vGNdoJHqg3" role="A3Ik2">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
</node>
<node concept="312cEg" id="4MqhgXUMgHN" role="jymVt">
<property role="TrG5h" value="location2rules" />
<node concept="3Tm6S6" id="4MqhgXUMgHO" role="1B3o_S" />
<node concept="3rvAFt" id="4MqhgXUMgMp" role="1tU5fm">
<node concept="3uibUv" id="4MqhgXUMhRm" role="3rvQeY">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
<node concept="_YKpA" id="4MqhgXUMhTI" role="3rvSg0">
<node concept="3uibUv" id="4MqhgXUMhUi" role="_ZDj9">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
</node>
<node concept="2ShNRf" id="4MqhgXUMifo" role="33vP2m">
<node concept="32Fmki" id="4MqhgXUMieq" role="2ShVmc">
<node concept="3uibUv" id="4MqhgXUMier" role="3rHrn6">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
<node concept="_YKpA" id="4MqhgXUMies" role="3rHtpV">
<node concept="3uibUv" id="4MqhgXUMiet" role="_ZDj9">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
</node>
</node>
</node>
<node concept="312cEg" id="1N8$BG_2NH_" role="jymVt">
<property role="TrG5h" value="tag2rule" />
<node concept="3Tm6S6" id="1N8$BG_2NHA" role="1B3o_S" />
<node concept="3rvAFt" id="1N8$BG_2NKd" role="1tU5fm">
<node concept="17QB3L" id="1N8$BG_2NKm" role="3rvQeY" />
<node concept="3uibUv" id="1N8$BG_2NKp" role="3rvSg0">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
<node concept="2ShNRf" id="1N8$BG_2NLz" role="33vP2m">
<node concept="3rGOSV" id="1N8$BG_2NL4" role="2ShVmc">
<node concept="17QB3L" id="1N8$BG_2NL5" role="3rHrn6" />
<node concept="3uibUv" id="1N8$BG_2NL6" role="3rHtpV">
<ref role="3uigEE" to="av0y:~Rule" resolve="Rule" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUMNaI" role="jymVt" />
<node concept="3UR2Jj" id="2$$Q_FeW4$G" role="lGtFl">
<node concept="TZ5HA" id="2$$Q_FeW4$H" role="TZ5H$">
<node concept="1dT_AC" id="2$$Q_FeW4$I" role="1dT_Ay">
<property role="1dT_AB" value="The builder maintains the list of locations. Every rule added must correspond to a location from the " />
</node>
</node>
<node concept="TZ5HA" id="2$$Q_FeW4$P" role="TZ5H$">
<node concept="1dT_AC" id="2$$Q_FeW4$Q" role="1dT_Ay">
<property role="1dT_AB" value="initial list. " />
</node>
</node>
<node concept="TZ5HA" id="2$$Q_FeW4$V" role="TZ5H$">
<node concept="1dT_AC" id="2$$Q_FeW4$W" role="1dT_Ay">
<property role="1dT_AB" value="" />
</node>
</node>
<node concept="TZ5HA" id="2$$Q_FeW4_3" role="TZ5H$">
<node concept="1dT_AC" id="2$$Q_FeW4_4" role="1dT_Ay">
<property role="1dT_AB" value="Instance of Handler produced by toHandler() returns the rules sorted by location key." />
</node>
</node>
</node>
</node>
<node concept="312cEu" id="18kNIl1vDPZ">
<property role="TrG5h" value="TemplateApplicationSession" />
<property role="1sVAO0" value="true" />