[
  {"type":"KeywordNamespace","value":"module"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeA2TypeB"},
  {"type":"Punctuation","value":";"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"KeywordNamespace","value":"create"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"b"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordNamespace","value":"from"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"a"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeA"},
  {"type":"Punctuation","value":";"},
  {"type":"TextWhitespace","value":"\n\n"},
  {"type":"KeywordNamespace","value":"rule"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"RootA2RootB"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"from"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"NameNamespace","value":"rtA"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeA"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"RootA"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"to"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"NameNamespace","value":"rtB"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"RootB"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"("},
  {"type":"TextWhitespace","value":"\n\t\t\t"},
  {"type":"NameNamespace","value":"defs"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"\u003c-"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"rtA"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"elms"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"iterate"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":";"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"res"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordType","value":"Set"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"TypeA"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"ElementA"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Operator","value":"="},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordType","value":"Set"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{}"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"|"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t"},
  {"type":"Keyword","value":"if"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"res"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"collect"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"f"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"|"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"f"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"name"},
  {"type":"Punctuation","value":")"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"includes"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"name"},
  {"type":"Punctuation","value":"))"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Keyword","value":"then"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t\t"},
  {"type":"NameNamespace","value":"res"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t"},
  {"type":"Keyword","value":"else"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t\t"},
  {"type":"NameNamespace","value":"res"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"including"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t"},
  {"type":"Keyword","value":"endif"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t"},
  {"type":"Punctuation","value":")"},
  {"type":"CommentSingle","value":"-- here we keep only one element of each name value"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"collect"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"|"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Keyword","value":"thisModule"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"Definition"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":")),"},
  {"type":"TextWhitespace","value":"\n\t\t\t\t"},
  {"type":"CommentSingle","value":"-- then we create a DefinitionB from each selected element"},
  {"type":"TextWhitespace","value":"\n\t\t\t"},
  {"type":"NameNamespace","value":"elms"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"\u003c-"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"rtA"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"elms"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n\n"},
  {"type":"KeywordDeclaration","value":"lazy"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordNamespace","value":"rule"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"Definition"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"from"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"NameNamespace","value":"s"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeA"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"ElementA"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"to"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"NameNamespace","value":"t"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"DefinitionB"},
  {"type":"Punctuation","value":"("},
  {"type":"TextWhitespace","value":"\n\t\t\t"},
  {"type":"NameNamespace","value":"name"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"\u003c-"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"s"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"name"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n\n"},
  {"type":"KeywordNamespace","value":"helper"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordNamespace","value":"def"},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"nameToAssignHistory"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordType","value":"Sequence"},
  {"type":"Punctuation","value":"("},
  {"type":"KeywordType","value":"Tuple"},
  {"type":"NameNamespace","value":"Type"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"ElementB"},
  {"type":"Punctuation","value":","},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"s"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordType","value":"String"},
  {"type":"Punctuation","value":"))"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Operator","value":"="},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordType","value":"Sequence"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{};"},
  {"type":"TextWhitespace","value":"\n\n"},
  {"type":"KeywordNamespace","value":"rule"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"NameToAssign"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"ElementB"},
  {"type":"Punctuation","value":","},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"s"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordType","value":"String"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"do"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Keyword","value":"thisModule"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"nameToAssignHistory"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"\u003c-"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Keyword","value":"thisModule"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"nameToAssignHistory"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"append"},
  {"type":"Punctuation","value":"("},
  {"type":"KeywordType","value":"Tuple"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"NameNamespace","value":"e"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Operator","value":"="},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":","},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"s"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Operator","value":"="},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"s"},
  {"type":"Punctuation","value":"});"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n\n"},
  {"type":"KeywordNamespace","value":"rule"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"Element"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"from"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"NameNamespace","value":"s"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeA"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"ElementA"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"to"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"NameNamespace","value":"t"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":":"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"ElementB"},
  {"type":"Punctuation","value":"("},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"do"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"CommentSingle","value":"-- The corresponding name for the current ElementB is added in the map."},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"CommentSingle","value":"-- This map will be used at the end of the transformation to create a link between ElementB and DefinitionB"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Keyword","value":"thisModule"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"NameToAssign"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"t"},
  {"type":"Punctuation","value":","},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"s"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"name"},
  {"type":"Punctuation","value":");"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n\n"},
  {"type":"CommentSingle","value":"-- execute delayed actions"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"KeywordDeclaration","value":"endpoint"},
  {"type":"TextWhitespace","value":" "},
  {"type":"KeywordNamespace","value":"rule"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"EndRule"},
  {"type":"Punctuation","value":"()"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"KeywordNamespace","value":"do"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Keyword","value":"for"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"dta"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Keyword","value":"in"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Keyword","value":"thisModule"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"nameToAssignHistory"},
  {"type":"Punctuation","value":")"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"{"},
  {"type":"TextWhitespace","value":"\n\t\t\t"},
  {"type":"CommentSingle","value":"-- We create a link between an ElementB and the corresponding DefinitionB"},
  {"type":"TextWhitespace","value":"\n\t\t\t"},
  {"type":"NameNamespace","value":"dta"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"definition"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"\u003c-"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"TypeB"},
  {"type":"Punctuation","value":"!"},
  {"type":"NameNamespace","value":"DefinitionB"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"allInstancesFrom"},
  {"type":"Punctuation","value":"("},
  {"type":"LiteralString","value":"'b'"},
  {"type":"Punctuation","value":")"},
  {"type":"Operator","value":"-\u003e"},
  {"type":"NameNamespace","value":"any"},
  {"type":"Punctuation","value":"("},
  {"type":"NameNamespace","value":"e"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Punctuation","value":"|"},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"e"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"name"},
  {"type":"TextWhitespace","value":" "},
  {"type":"Operator","value":"="},
  {"type":"TextWhitespace","value":" "},
  {"type":"NameNamespace","value":"dta"},
  {"type":"Punctuation","value":"."},
  {"type":"NameNamespace","value":"s"},
  {"type":"Punctuation","value":");"},
  {"type":"TextWhitespace","value":"\n\t\t"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n\t"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n"},
  {"type":"Punctuation","value":"}"},
  {"type":"TextWhitespace","value":"\n"}
]
