Refactor DataFormPrinter to use Memoizer, support nested terms.

DataFormPrinter is hardcoded to support _term and _subterm
hacks and present the terms in a readable way.
Memoizer is searched for an implementation of
NodePresentable, which helps with visualization of SNode
and SNodeReference.
This commit is contained in:
Fedor Isakov 2020-06-21 21:29:26 +02:00
parent 44a25ada3a
commit e4347fc092
3 changed files with 2072 additions and 1214 deletions

View File

@ -17,6 +17,7 @@
<dependency reexport="false">8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)</dependency>
<dependency reexport="false">ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)</dependency>
<dependency reexport="false">9a4afe51-f114-4595-b5df-048ce3c596be(jetbrains.mps.runtime)</dependency>
<dependency reexport="false">f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)</dependency>
</dependencies>
<languageVersions>
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="11" />
@ -38,6 +39,7 @@
<module reference="6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)" version="0" />
<module reference="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)" version="0" />
<module reference="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" version="0" />
<module reference="f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)" version="0" />
<module reference="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" version="0" />
<module reference="9e98f4e2-decf-4e97-bf80-9109e8b759aa(jetbrains.mps.lang.feedback.context)" version="0" />
<module reference="bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)" version="0" />

View File

@ -21,6 +21,9 @@
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1082485599095" name="jetbrains.mps.baseLanguage.structure.BlockStatement" flags="nn" index="9aQIb">
<child id="1082485599096" name="statements" index="9aQI4" />
</concept>
<concept id="1202948039474" name="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" flags="nn" index="liA8E" />
<concept id="1465982738277781862" name="jetbrains.mps.baseLanguage.structure.PlaceholderMember" flags="ng" index="2tJIrI" />
<concept id="1197027756228" name="jetbrains.mps.baseLanguage.structure.DotExpression" flags="nn" index="2OqwBi">
@ -5337,5 +5340,519 @@
</node>
</node>
</node>
<node concept="3s_ewN" id="5wYq9r5qQ29">
<property role="3s_ewP" value="DataFormPrinter" />
<node concept="3Tm1VV" id="5wYq9r5qQ2a" role="1B3o_S" />
<node concept="3s_gsd" id="5wYq9r5qQ2b" role="3s_ewO">
<node concept="3s$Bmu" id="5wYq9r5qQcj" role="3s_gse">
<property role="3s$Bm0" value="simpleTerm" />
<node concept="3cqZAl" id="5wYq9r5qQck" role="3clF45" />
<node concept="3Tm1VV" id="5wYq9r5qQcl" role="1B3o_S" />
<node concept="3clFbS" id="5wYq9r5qQcm" role="3clF47">
<node concept="9aQIb" id="5wYq9r5$k5c" role="3cqZAp">
<node concept="3clFbS" id="5wYq9r5$k5e" role="9aQI4">
<node concept="3cpWs8" id="5wYq9r5qRUD" role="3cqZAp">
<node concept="3cpWsn" id="5wYq9r5qRUE" role="3cpWs9">
<property role="TrG5h" value="term" />
<node concept="3uibUv" id="5wYq9r5qRUF" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="5wYq9r5qRUG" role="33vP2m">
<node concept="1oi5UN" id="5wYq9r5qRUH" role="1oi0x0">
<node concept="1oi5Wm" id="5wYq9r5qRUI" role="1ojpOf">
<property role="TrG5h" value="concept" />
<node concept="1oi5XN" id="5wYq9r5qRUJ" role="1oi5zu">
<property role="1oi5yK" value="ClassifierType" />
</node>
</node>
<node concept="1oi5Wm" id="5wYq9r5qRUK" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="5wYq9r5qRUL" role="1oi5zu">
<property role="1oi5yK" value="Object" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="5wYq9r5qSoc" role="3cqZAp">
<node concept="Xl_RD" id="5wYq9r5qSry" role="3tpDZB">
<property role="Xl_RC" value="(concept='ClassifierType' classifier='Object')" />
</node>
<node concept="2YIFZM" id="5wYq9r5vLy2" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="5wYq9r5vLy3" role="37wK5m">
<ref role="3cqZAo" node="5wYq9r5qRUE" resolve="term" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5wYq9r5vLC4" role="3cqZAp" />
<node concept="9aQIb" id="5wYq9r5$kg1" role="3cqZAp">
<node concept="3clFbS" id="5wYq9r5$kg3" role="9aQI4">
<node concept="3cpWs8" id="5wYq9r5vL_B" role="3cqZAp">
<node concept="3cpWsn" id="5wYq9r5vL_C" role="3cpWs9">
<property role="TrG5h" value="term" />
<node concept="3uibUv" id="5wYq9r5vL_D" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="5wYq9r5vL_E" role="33vP2m">
<node concept="1oi5UN" id="5wYq9r5vL_F" role="1oi0x0">
<node concept="1oi5Wm" id="5wYq9r5vL_G" role="1ojpOf">
<property role="TrG5h" value="concept" />
<node concept="1oi5XN" id="5wYq9r5vL_H" role="1oi5zu">
<property role="1oi5yK" value="ClassifierType" />
</node>
</node>
<node concept="1oi5Wm" id="5wYq9r5vL_I" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="5wYq9r5vL_J" role="1oi5zu">
<property role="1oi5yK" value="List" />
</node>
</node>
<node concept="1oi5ST" id="5wYq9r5vLE4" role="1ojpOf">
<property role="TrG5h" value="parameter" />
<node concept="1oi5UN" id="5wYq9r5vLEz" role="1oi5TL">
<node concept="1oi5Wm" id="5wYq9r5vShq" role="1ojpOf">
<property role="TrG5h" value="concept" />
<node concept="1oi5XN" id="5wYq9r5vShr" role="1oi5zu">
<property role="1oi5yK" value="Type" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="5wYq9r5vL_z" role="3cqZAp">
<node concept="Xl_RD" id="5wYq9r5vL_$" role="3tpDZB">
<property role="Xl_RC" value="(concept='ClassifierType' classifier='List' parameter:(concept='Type'))" />
</node>
<node concept="2YIFZM" id="5wYq9r5vL__" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="5wYq9r5$jRU" role="37wK5m">
<ref role="3cqZAo" node="5wYq9r5vL_C" resolve="term" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5wYq9r5$dUy" role="3cqZAp" />
<node concept="9aQIb" id="5wYq9r5$krw" role="3cqZAp">
<node concept="3clFbS" id="5wYq9r5$kry" role="9aQI4">
<node concept="3cpWs8" id="5wYq9r5$dPK" role="3cqZAp">
<node concept="3cpWsn" id="5wYq9r5$dPL" role="3cpWs9">
<property role="TrG5h" value="term" />
<node concept="3uibUv" id="5wYq9r5$dPM" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="5wYq9r5$dPN" role="33vP2m">
<node concept="1oi5UN" id="5wYq9r5$dPO" role="1oi0x0">
<node concept="1oi5Wm" id="5wYq9r5$dPP" role="1ojpOf">
<property role="TrG5h" value="concept" />
<node concept="1oi5XN" id="5wYq9r5$dPQ" role="1oi5zu">
<property role="1oi5yK" value="ClassifierType" />
</node>
</node>
<node concept="1oi5Wm" id="5wYq9r5$dPR" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="5wYq9r5$dPS" role="1oi5zu">
<property role="1oi5yK" value="Pair" />
</node>
</node>
<node concept="1oi5ST" id="5wYq9r5$dPT" role="1ojpOf">
<property role="TrG5h" value="parameters" />
<node concept="KCUsM" id="5wYq9r5$dYZ" role="1oi5TL">
<node concept="1oi5UN" id="5wYq9r5$dYC" role="KCVpo">
<node concept="1oi5Wm" id="5wYq9r5$dZo" role="1ojpOf">
<property role="TrG5h" value="concept" />
<node concept="1oi5XN" id="5wYq9r5$dZy" role="1oi5zu">
<property role="1oi5yK" value="Type1" />
</node>
</node>
</node>
<node concept="1oi5UN" id="5wYq9r5$dXB" role="KCVpo">
<node concept="1oi5Wm" id="5wYq9r5$dZ$" role="1ojpOf">
<property role="TrG5h" value="concept" />
<node concept="1oi5XN" id="5wYq9r5$dZI" role="1oi5zu">
<property role="1oi5yK" value="Type2" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="5wYq9r5$dPG" role="3cqZAp">
<node concept="Xl_RD" id="5wYq9r5$dPH" role="3tpDZB">
<property role="Xl_RC" value="(concept='ClassifierType' classifier='Pair' parameters:[(concept='Type1'), (concept='Type2')])" />
</node>
<node concept="2YIFZM" id="5wYq9r5$dPI" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="5wYq9r5$jTm" role="37wK5m">
<ref role="3cqZAo" node="5wYq9r5$dPL" resolve="term" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3s$Bmu" id="5wYq9r5_SCs" role="3s_gse">
<property role="3s$Bm0" value="simplType" />
<node concept="3cqZAl" id="5wYq9r5_SCt" role="3clF45" />
<node concept="3Tm1VV" id="5wYq9r5_SCu" role="1B3o_S" />
<node concept="3clFbS" id="5wYq9r5_SCv" role="3clF47">
<node concept="9aQIb" id="5wYq9r5_SGE" role="3cqZAp">
<node concept="3clFbS" id="5wYq9r5_SGF" role="9aQI4">
<node concept="3cpWs8" id="5wYq9r5_SGG" role="3cqZAp">
<node concept="3cpWsn" id="5wYq9r5_SGH" role="3cpWs9">
<property role="TrG5h" value="typeterm" />
<node concept="3uibUv" id="5wYq9r5_SGI" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="5wYq9r5_SGJ" role="33vP2m">
<node concept="1oi5UN" id="5wYq9r5_SGK" role="1oi0x0">
<node concept="1oi5Wm" id="5wYq9r5_Yh8" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="5wYq9r5_Yjo" role="1oi5zu">
<property role="1oi5yK" value="boolean" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="5wYq9r5_SGP" role="3cqZAp">
<node concept="Xl_RD" id="5wYq9r5_SGQ" role="3tpDZB">
<property role="Xl_RC" value="boolean()" />
</node>
<node concept="2YIFZM" id="5wYq9r5_SGR" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="5wYq9r5_SGS" role="37wK5m">
<ref role="3cqZAo" node="5wYq9r5_SGH" resolve="typeterm" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5wYq9r5Av9T" role="3cqZAp" />
<node concept="9aQIb" id="5wYq9r5Av4C" role="3cqZAp">
<node concept="3clFbS" id="5wYq9r5Av4D" role="9aQI4">
<node concept="3cpWs8" id="5wYq9r5Av4E" role="3cqZAp">
<node concept="3cpWsn" id="5wYq9r5Av4F" role="3cpWs9">
<property role="TrG5h" value="typeterm" />
<node concept="3uibUv" id="5wYq9r5Av4G" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="5wYq9r5Av4H" role="33vP2m">
<node concept="1oi5UN" id="5wYq9r5Av4I" role="1oi0x0">
<node concept="1oi5Wm" id="5wYq9r5Av4J" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="5wYq9r5Av4K" role="1oi5zu">
<property role="1oi5yK" value="classifier" />
</node>
</node>
<node concept="1oi5Wm" id="5wYq9r5Av4L" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="5wYq9r5Av4M" role="1oi5zu">
<property role="1oi5yK" value="Object" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="5wYq9r5Av4N" role="3cqZAp">
<node concept="Xl_RD" id="5wYq9r5Av4O" role="3tpDZB">
<property role="Xl_RC" value="classifier(classifier='Object')" />
</node>
<node concept="2YIFZM" id="5wYq9r5Av4P" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="5wYq9r5Av4Q" role="37wK5m">
<ref role="3cqZAo" node="5wYq9r5Av4F" resolve="typeterm" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5wYq9r5AzAh" role="3cqZAp" />
<node concept="9aQIb" id="5wYq9r5Azwb" role="3cqZAp">
<node concept="3clFbS" id="5wYq9r5Azwc" role="9aQI4">
<node concept="3cpWs8" id="5wYq9r5Azwd" role="3cqZAp">
<node concept="3cpWsn" id="5wYq9r5Azwe" role="3cpWs9">
<property role="TrG5h" value="typeterm" />
<node concept="3uibUv" id="5wYq9r5Azwf" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="5wYq9r5Azwg" role="33vP2m">
<node concept="1oi5UN" id="5wYq9r5Azwh" role="1oi0x0">
<node concept="1oi5Wm" id="5wYq9r5Azwi" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="5wYq9r5Azwj" role="1oi5zu">
<property role="1oi5yK" value="classifier" />
</node>
</node>
<node concept="1oi5Wm" id="5wYq9r5Azwk" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="5wYq9r5Azwl" role="1oi5zu">
<property role="1oi5yK" value="List" />
</node>
</node>
<node concept="1oi5ST" id="5wYq9r5AzCW" role="1ojpOf">
<property role="TrG5h" value="parameters" />
<node concept="KCUsM" id="5wYq9r5AzGq" role="1oi5TL">
<node concept="1oi5UN" id="5wYq9r5AzGA" role="KCVpo">
<node concept="1oi5Wm" id="5wYq9r5AzGC" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="5wYq9r5AzGE" role="1oi5zu">
<property role="1oi5yK" value="classifier" />
</node>
</node>
<node concept="1oi5Wm" id="5wYq9r5AzGG" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="5wYq9r5AzGH" role="1oi5zu">
<property role="1oi5yK" value="String" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="5wYq9r5Azwm" role="3cqZAp">
<node concept="Xl_RD" id="5wYq9r5Azwn" role="3tpDZB">
<property role="Xl_RC" value="classifier(classifier='List' parameters:[classifier(classifier='String')])" />
</node>
<node concept="2YIFZM" id="5wYq9r5Azwo" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="5wYq9r5Azwp" role="37wK5m">
<ref role="3cqZAo" node="5wYq9r5Azwe" resolve="typeterm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3s$Bmu" id="6Dg__VJ4oU9" role="3s_gse">
<property role="3s$Bm0" value="complexType" />
<node concept="3cqZAl" id="6Dg__VJ4oUa" role="3clF45" />
<node concept="3Tm1VV" id="6Dg__VJ4oUb" role="1B3o_S" />
<node concept="3clFbS" id="6Dg__VJ4oUc" role="3clF47">
<node concept="9aQIb" id="6Dg__VJ4oUd" role="3cqZAp">
<node concept="3clFbS" id="6Dg__VJ4oUe" role="9aQI4">
<node concept="3cpWs8" id="6Dg__VJ4oUf" role="3cqZAp">
<node concept="3cpWsn" id="6Dg__VJ4oUg" role="3cpWs9">
<property role="TrG5h" value="typeterm" />
<node concept="3uibUv" id="6Dg__VJ4oUh" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="6Dg__VJ4oUi" role="33vP2m">
<node concept="1oi5UN" id="6Dg__VJ4oUj" role="1oi0x0">
<node concept="1oi5Wm" id="6Dg__VJ4oUk" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ4oUl" role="1oi5zu">
<property role="1oi5yK" value="primType" />
</node>
</node>
<node concept="1oi5ST" id="6Dg__VJ4p_Y" role="1ojpOf">
<property role="TrG5h" value="_subterm" />
<node concept="1oi5UN" id="6Dg__VJ4pCs" role="1oi5TL">
<node concept="1oi5Wm" id="6Dg__VJ4pCA" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ4pCB" role="1oi5zu">
<property role="1oi5yK" value="boolean" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="6Dg__VJ4oUm" role="3cqZAp">
<node concept="Xl_RD" id="6Dg__VJ4oUn" role="3tpDZB">
<property role="Xl_RC" value="boolean()" />
</node>
<node concept="2YIFZM" id="6Dg__VJ4oUo" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="6Dg__VJ4oUp" role="37wK5m">
<ref role="3cqZAo" node="6Dg__VJ4oUg" resolve="typeterm" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="6Dg__VJ4oUq" role="3cqZAp" />
<node concept="9aQIb" id="6Dg__VJ4oUr" role="3cqZAp">
<node concept="3clFbS" id="6Dg__VJ4oUs" role="9aQI4">
<node concept="3cpWs8" id="6Dg__VJ9y17" role="3cqZAp">
<node concept="3cpWsn" id="6Dg__VJ9y18" role="3cpWs9">
<property role="TrG5h" value="typeterm" />
<node concept="3uibUv" id="6Dg__VJ9y19" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="6Dg__VJ9y1a" role="33vP2m">
<node concept="1oi5UN" id="6Dg__VJ9y1b" role="1oi0x0">
<node concept="1oi5Wm" id="6Dg__VJ9y1c" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ9y1d" role="1oi5zu">
<property role="1oi5yK" value="parameterized" />
</node>
</node>
<node concept="1oi5ST" id="6Dg__VJ9y1e" role="1ojpOf">
<property role="TrG5h" value="parameter" />
<node concept="KCUsM" id="6Dg__VJ9y1f" role="1oi5TL" />
</node>
<node concept="1oi5ST" id="6Dg__VJ9y1g" role="1ojpOf">
<property role="TrG5h" value="_subterm" />
<node concept="1oi5UN" id="6Dg__VJ9y1h" role="1oi5TL">
<node concept="1oi5Wm" id="6Dg__VJ9y1i" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ9y1j" role="1oi5zu">
<property role="1oi5yK" value="classifier" />
</node>
</node>
<node concept="1oi5Wm" id="6Dg__VJ9y1k" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="6Dg__VJ9y1l" role="1oi5zu">
<property role="1oi5yK" value="Object" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="6Dg__VJ9y13" role="3cqZAp">
<node concept="Xl_RD" id="6Dg__VJ9y14" role="3tpDZB">
<property role="Xl_RC" value="classifier(classifier='Object')" />
</node>
<node concept="2YIFZM" id="6Dg__VJ9y15" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="6Dg__VJ9ywH" role="37wK5m">
<ref role="3cqZAo" node="6Dg__VJ9y18" resolve="typeterm" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="6Dg__VJ4oUE" role="3cqZAp" />
<node concept="9aQIb" id="6Dg__VJ4oUF" role="3cqZAp">
<node concept="3clFbS" id="6Dg__VJ4oUG" role="9aQI4">
<node concept="3cpWs8" id="6Dg__VJ4oUt" role="3cqZAp">
<node concept="3cpWsn" id="6Dg__VJ4oUu" role="3cpWs9">
<property role="TrG5h" value="typeterm" />
<node concept="3uibUv" id="6Dg__VJ4oUv" role="1tU5fm">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="DataForm" />
</node>
<node concept="1oi1Uc" id="6Dg__VJ4oUw" role="33vP2m">
<node concept="1oi5UN" id="6Dg__VJ4oUx" role="1oi0x0">
<node concept="1oi5Wm" id="6Dg__VJ4oUy" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ4oUz" role="1oi5zu">
<property role="1oi5yK" value="parameterized" />
</node>
</node>
<node concept="1oi5ST" id="6Dg__VJ8ILJ" role="1ojpOf">
<property role="TrG5h" value="parameter" />
<node concept="KCUsM" id="6Dg__VJ8INx" role="1oi5TL">
<node concept="1oi5UN" id="6Dg__VJa3Mv" role="KCVpo">
<node concept="1oi5ST" id="6Dg__VJa3M_" role="1ojpOf">
<property role="TrG5h" value="parameter" />
<node concept="KCUsM" id="6Dg__VJa3MA" role="1oi5TL" />
</node>
<node concept="1oi5ST" id="6Dg__VJa3ML" role="1ojpOf">
<property role="TrG5h" value="_subterm" />
<node concept="1oi5UN" id="6Dg__VJa3MM" role="1oi5TL">
<node concept="1oi5Wm" id="6Dg__VJa3MN" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJa3MO" role="1oi5zu">
<property role="1oi5yK" value="classifier" />
</node>
</node>
<node concept="1oi5Wm" id="6Dg__VJa3MP" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="6Dg__VJa3MQ" role="1oi5zu">
<property role="1oi5yK" value="String" />
</node>
</node>
</node>
</node>
<node concept="1oi5Wm" id="6Dg__VJa3Mx" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJa3My" role="1oi5zu">
<property role="1oi5yK" value="parameterized" />
</node>
</node>
</node>
</node>
</node>
<node concept="1oi5ST" id="6Dg__VJ8IEB" role="1ojpOf">
<property role="TrG5h" value="_subterm" />
<node concept="1oi5UN" id="6Dg__VJ8IH7" role="1oi5TL">
<node concept="1oi5Wm" id="6Dg__VJ8IIf" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ8IIr" role="1oi5zu">
<property role="1oi5yK" value="collection" />
</node>
</node>
<node concept="1oi5ST" id="6Dg__VJ9P20" role="1ojpOf">
<property role="TrG5h" value="_subterm" />
<node concept="1oi5UN" id="6Dg__VJ9P21" role="1oi5TL">
<node concept="1oi5Wm" id="6Dg__VJ9P22" role="1ojpOf">
<property role="TrG5h" value="_term" />
<node concept="1oi5XN" id="6Dg__VJ9P23" role="1oi5zu">
<property role="1oi5yK" value="list" />
</node>
</node>
<node concept="1oi5Wm" id="6Dg__VJ9P24" role="1ojpOf">
<property role="TrG5h" value="classifier" />
<node concept="1oi5XN" id="6Dg__VJ9P25" role="1oi5zu">
<property role="1oi5yK" value="List" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3vlDli" id="6Dg__VJ4oUX" role="3cqZAp">
<node concept="Xl_RD" id="6Dg__VJ4oUY" role="3tpDZB">
<property role="Xl_RC" value="list(parameter:[classifier(classifier='String')] classifier='List')" />
</node>
<node concept="2YIFZM" id="6Dg__VJ4oUZ" role="3tpDZA">
<ref role="37wK5l" to="6exd:1G9MbtSGvMe" resolve="print" />
<ref role="1Pybhc" to="6exd:1G9MbtSGvLs" resolve="DataFormPrinter" />
<node concept="37vLTw" id="6Dg__VJ9yC6" role="37wK5m">
<ref role="3cqZAo" node="6Dg__VJ4oUu" resolve="typeterm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>