/* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġ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 Ġnet . pot ot sk iy . apps . lom out . api . script . medi ator Ċ Ċ import Ġnet . pot ot sk iy . apps . lom out . api . AppConfig Exception Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . Script Build Helper Ċ import Ġnet . pot ot sk iy . apps . lom out . api . document . Document Ċ import Ġnet . pot ot sk iy . apps . lom out . api . document . Document Metadata Ċ import Ġnet . pot ot sk iy . apps . lom out . api . document . document Metadata Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . assertThat Thrown By Ċ import Ġorg . bson . code cs . pojo . annotations . B son Ignore Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . parallel . Execution Ċ import Ġorg . junit . jupiter . api . parallel . Execution Mode Ċ Ċ @ Suppress (" Magic Number ") Ċ @ Execution ( Execution Mode . CON CURRENT ) Ċ internal Ġclass ĠMed iator Configuration Builder Test Ġ{ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġclass ĠInput Entity 1 Ġ: ĠDocument () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġin Attr 1 : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ@ get : B son Ignore ĊĠĠĠĠĠĠĠ Ġval Ġext Attr 1 : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" extended Ġvalue Ġfrom Ġthe Ġbuilder " ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠDocument Metadata ( Input Entity 1 :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġclass ĠInput Entity 2 Ġ: ĠDocument () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġin Attr 2 : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ@ get : B son Ignore ĊĠĠĠĠĠĠĠ Ġval Ġext Attr 2 : ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ 3 2 L ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠDocument Metadata ( Input Entity 2 :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġclass ĠInput Entity 3 Ġ: ĠDocument () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġin Attr : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġclass ĠImport Output 1 Ġ: ĠDocument () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġout Attr 1 : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġout Attr 2 : ĠLong Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠDocument Metadata ( Import Output 1 :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhelper Ġ= ĠScript Build Helper () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġcheck Conf Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconf Ġ= Ġcreate Conf () ĊĠĠĠĠĠĠĠ ĠassertThat ( conf ). isNotNull . isInstanceOf ( Mediator Configuration :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( conf . lines ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġconf . lines . first () ĊĠĠĠĠĠĠĠ ĠassertThat ( line ). isInstanceOf ( Production Line :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( line . input Entities ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( line . input Entities . map Ġ{ Ġit . entity . simple Name Ġ}). contains Exactly Elements Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" Input Entity 1 ", Ġ" Input Entity 2 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġinput Entity Ġ= Ġline . input Entities . first () ĊĠĠĠĠĠĠĠ ĠassertThat ( input Entity ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( input Entity . entity . simple Name ). isEqualTo (" Input Entity 1 ") ĊĠĠĠĠĠĠĠ ĠassertThat ( input Entity . include Deleted ). isEqualTo ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Entity Ġ= Ġline . output Entity ĊĠĠĠĠĠĠĠ ĠassertThat ( output Entity ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( output Entity . simple Name ). isEqualTo (" Import Output 1 ") ĊĠĠĠĠĠĠĠ ĠassertThat ( output Entity . document Metadata . attributes . values ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġroot Pipeline Ġ= Ġline . pipeline ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . classifier ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . assembler ). isNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . data Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly Elements Of ( listOf ( Pipeline . CLASS . MATCH ED , ĠPipeline . CLASS . UN MATCH ED )) ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 0 ]. data Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly Elements Of ( listOf ( Pipeline . CLASS . MATCH ED )) ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 0 ]. classifier ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 0 ]. pipelines ). isEmpty () ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 0 ]. assembler ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 1 ]. data Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly Elements Of ( listOf ( Pipeline . CLASS . UN MATCH ED )) ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 1 ]. classifier ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 1 ]. pipelines ). isEmpty () ĊĠĠĠĠĠĠĠ ĠassertThat ( root Pipeline . pipelines [ 1 ]. assembler ). isNotNull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġcheck Empty Input Error Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġcreate Conf Empty Input () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( AppConfig Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message Containing (" At Ġleast Ġone Ġinput Ġentity Ġmust Ġbe Ġdefined ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġno Pipeline Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġcreate Conf No Pipeline () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( AppConfig Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message Containing (" Production Ġline Ġmust Ġhave Ġstart Ġpipeline ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġno Assembler Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġcreate Conf No Assembler () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( AppConfig Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message Containing (" Pipeline Ġwith Ġthe Ġmatched Ġchild Ġmust Ġhave Ġassembler ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġline Self Cy cl ing Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġcreate Conf Line Self Cy cl ing () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( AppConfig Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message Containing (" There Ġis Ġproduction Ġline Ġcy cl ing Ġdependency .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġline Cy cl ing Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġcreate Conf Line Cy cl ing () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( AppConfig Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message Containing (" There Ġis Ġproduction Ġline Ġcy cl ing Ġdependency .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Conf (): ĠMed iator Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMed iator Configuration . Builder ( helper ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Import Output 1 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 1 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 2 :: class ) Ġ{ Ġinclude Deleted () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . match () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . MATCH ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠImport Output 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . UN MATCH ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ{ Ġit . match () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠImport Output 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Conf Empty Input (): ĠMed iator Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMed iator Configuration . Builder ( helper ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Import Output 1 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . match () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . MATCH ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠImport Output 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . UN MATCH ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ{ Ġit . match () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠImport Output 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Conf No Pipeline (): ĠMed iator Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMed iator Configuration . Builder ( helper ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Import Output 1 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 1 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 2 :: class ) Ġ{ Ġinclude Deleted () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Conf No Assembler (): ĠMed iator Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMed iator Configuration . Builder ( helper ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Import Output 1 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 1 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 2 :: class ) Ġ{ Ġinclude Deleted () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . match () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . MATCH ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠImport Output 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . UN MATCH ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ{ Ġit . match () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline ( Pipeline . CLASS . UN MATCH ED ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠImport Output 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Conf Line Self Cy cl ing (): ĠMed iator Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMed iator Configuration . Builder ( helper ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Input Entity 1 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 1 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠInput Entity 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Conf Line Cy cl ing (): ĠMed iator Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMed iator Configuration . Builder ( helper ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Input Entity 1 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 2 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠInput Entity 1 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce < Input Entity 2 > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Import Output 1 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity ( Input Entity 1 :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassembler Ġ{ ĠInput Entity 2 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} Ċ } ĊĊ