cuelang.org/go@v0.13.0/cue/testdata/benchmarks/cycleshare.txtar (about)

     1  -- in.cue --
     2  // Test that cyclic references do not break structure sharing. This was the
     3  // underlying problem of Issue #3587. Note that this is not a problem related
     4  // to disjunctions.
     5  
     6  // These definitions represent a large tree of disjunctions.
     7  #D1: {a: #D2} | {b: #D2} | {c: #D2}
     8  #D2: {a: #D3} | {b: #D3} | {c: #D3}
     9  #D3: {
    10      one: {a: int} | {b: int} | {c: int}
    11      two: {a: string} | {b: string} | {c: string}
    12      three: {a: bool} | {b: bool} | {c: bool}
    13  }
    14  
    15  root: y: #D1 | [#D1] | {x: #D1} // Expensive path
    16  root: x: empty: {}
    17  
    18  root: "0": data: root_0.x.empty
    19  root: "1": data: root_1.x.empty
    20  root: "2": data: root_2.x.empty
    21  root: "3": data: root_3.x.empty
    22  
    23   // We want root to be shared in all of these cases.
    24  let root_0 = root
    25  let root_1 = root
    26  root_2: root
    27  root_3: root
    28  -- out/evalalpha/stats --
    29  Leaks:  64
    30  Freed:  0
    31  Reused: 0
    32  Allocs: 64
    33  Retain: 0
    34  
    35  Unifications: 43
    36  Conjuncts:    70
    37  Disjuncts:    21
    38  
    39  CloseIDElems: 6
    40  NumCloseIDs: 1
    41  -- diff/-out/evalalpha/stats<==>+out/eval/stats --
    42  diff old new
    43  --- old
    44  +++ new
    45  @@ -1,9 +1,12 @@
    46  -Leaks:  8
    47  -Freed:  965
    48  -Reused: 951
    49  -Allocs: 22
    50  -Retain: 17
    51  -
    52  -Unifications: 559
    53  -Conjuncts:    1046
    54  -Disjuncts:    976
    55  +Leaks:  64
    56  +Freed:  0
    57  +Reused: 0
    58  +Allocs: 64
    59  +Retain: 0
    60  +
    61  +Unifications: 43
    62  +Conjuncts:    70
    63  +Disjuncts:    21
    64  +
    65  +CloseIDElems: 6
    66  +NumCloseIDs: 1
    67  -- out/eval/stats --
    68  Leaks:  8
    69  Freed:  965
    70  Reused: 951
    71  Allocs: 22
    72  Retain: 17
    73  
    74  Unifications: 559
    75  Conjuncts:    1046
    76  Disjuncts:    976
    77  -- out/evalalpha --
    78  (struct){
    79    #D1: (#struct){ |((#struct){
    80        a: (#struct){ |((#struct){
    81            a: ~(#D3)
    82          }, (#struct){
    83            b: ~(#D3)
    84          }, (#struct){
    85            c: ~(#D3)
    86          }) }
    87      }, (#struct){
    88        b: (#struct){ |((#struct){
    89            a: ~(#D3)
    90          }, (#struct){
    91            b: ~(#D3)
    92          }, (#struct){
    93            c: ~(#D3)
    94          }) }
    95      }, (#struct){
    96        c: (#struct){ |((#struct){
    97            a: ~(#D3)
    98          }, (#struct){
    99            b: ~(#D3)
   100          }, (#struct){
   101            c: ~(#D3)
   102          }) }
   103      }) }
   104    #D2: (#struct){ |((#struct){
   105        a: ~(#D3)
   106      }, (#struct){
   107        b: ~(#D3)
   108      }, (#struct){
   109        c: ~(#D3)
   110      }) }
   111    #D3: (#struct){
   112      one: (#struct){ |((#struct){
   113          a: (int){ int }
   114        }, (#struct){
   115          b: (int){ int }
   116        }, (#struct){
   117          c: (int){ int }
   118        }) }
   119      two: (#struct){ |((#struct){
   120          a: (string){ string }
   121        }, (#struct){
   122          b: (string){ string }
   123        }, (#struct){
   124          c: (string){ string }
   125        }) }
   126      three: (#struct){ |((#struct){
   127          a: (bool){ bool }
   128        }, (#struct){
   129          b: (bool){ bool }
   130        }, (#struct){
   131          c: (bool){ bool }
   132        }) }
   133    }
   134    root: (struct){
   135      y: ((list|struct)){ |((#struct){
   136          a: (#struct){ |((#struct){
   137              a: ~(#D3)
   138            }, (#struct){
   139              b: ~(#D3)
   140            }, (#struct){
   141              c: ~(#D3)
   142            }) }
   143        }, (#struct){
   144          b: (#struct){ |((#struct){
   145              a: ~(#D3)
   146            }, (#struct){
   147              b: ~(#D3)
   148            }, (#struct){
   149              c: ~(#D3)
   150            }) }
   151        }, (#struct){
   152          c: (#struct){ |((#struct){
   153              a: ~(#D3)
   154            }, (#struct){
   155              b: ~(#D3)
   156            }, (#struct){
   157              c: ~(#D3)
   158            }) }
   159        }, (#list){
   160          0: (#struct){ |((#struct){
   161              a: (#struct){ |((#struct){
   162                  a: ~(#D3)
   163                }, (#struct){
   164                  b: ~(#D3)
   165                }, (#struct){
   166                  c: ~(#D3)
   167                }) }
   168            }, (#struct){
   169              b: (#struct){ |((#struct){
   170                  a: ~(#D3)
   171                }, (#struct){
   172                  b: ~(#D3)
   173                }, (#struct){
   174                  c: ~(#D3)
   175                }) }
   176            }, (#struct){
   177              c: (#struct){ |((#struct){
   178                  a: ~(#D3)
   179                }, (#struct){
   180                  b: ~(#D3)
   181                }, (#struct){
   182                  c: ~(#D3)
   183                }) }
   184            }) }
   185        }, (struct){
   186          x: (#struct){ |((#struct){
   187              a: (#struct){ |((#struct){
   188                  a: ~(#D3)
   189                }, (#struct){
   190                  b: ~(#D3)
   191                }, (#struct){
   192                  c: ~(#D3)
   193                }) }
   194            }, (#struct){
   195              b: (#struct){ |((#struct){
   196                  a: ~(#D3)
   197                }, (#struct){
   198                  b: ~(#D3)
   199                }, (#struct){
   200                  c: ~(#D3)
   201                }) }
   202            }, (#struct){
   203              c: (#struct){ |((#struct){
   204                  a: ~(#D3)
   205                }, (#struct){
   206                  b: ~(#D3)
   207                }, (#struct){
   208                  c: ~(#D3)
   209                }) }
   210            }) }
   211        }) }
   212      x: (struct){
   213        empty: (struct){
   214        }
   215      }
   216      "0": (struct){
   217        data: (struct){
   218        }
   219      }
   220      "1": (struct){
   221        data: (struct){
   222        }
   223      }
   224      "2": (struct){
   225        data: (struct){
   226        }
   227      }
   228      "3": (struct){
   229        data: (struct){
   230        }
   231      }
   232    }
   233    let root_0#1 = ~(root)
   234    let root_1#2 = ~(root)
   235    root_2: ~(root)
   236    root_3: ~(root)
   237  }
   238  -- diff/-out/evalalpha<==>+out/eval --
   239  diff old new
   240  --- old
   241  +++ new
   242  @@ -1,305 +1,35 @@
   243  -Errors:
   244  -root_2: structural cycle:
   245  -    ./in.cue:19:18
   246  -
   247  -Result:
   248  -(_|_){
   249  -  // [structural cycle]
   250  +(struct){
   251     #D1: (#struct){ |((#struct){
   252         a: (#struct){ |((#struct){
   253  -          a: (#struct){
   254  -            one: (#struct){ |((#struct){
   255  -                a: (int){ int }
   256  -              }, (#struct){
   257  -                b: (int){ int }
   258  -              }, (#struct){
   259  -                c: (int){ int }
   260  -              }) }
   261  -            two: (#struct){ |((#struct){
   262  -                a: (string){ string }
   263  -              }, (#struct){
   264  -                b: (string){ string }
   265  -              }, (#struct){
   266  -                c: (string){ string }
   267  -              }) }
   268  -            three: (#struct){ |((#struct){
   269  -                a: (bool){ bool }
   270  -              }, (#struct){
   271  -                b: (bool){ bool }
   272  -              }, (#struct){
   273  -                c: (bool){ bool }
   274  -              }) }
   275  -          }
   276  -        }, (#struct){
   277  -          b: (#struct){
   278  -            one: (#struct){ |((#struct){
   279  -                a: (int){ int }
   280  -              }, (#struct){
   281  -                b: (int){ int }
   282  -              }, (#struct){
   283  -                c: (int){ int }
   284  -              }) }
   285  -            two: (#struct){ |((#struct){
   286  -                a: (string){ string }
   287  -              }, (#struct){
   288  -                b: (string){ string }
   289  -              }, (#struct){
   290  -                c: (string){ string }
   291  -              }) }
   292  -            three: (#struct){ |((#struct){
   293  -                a: (bool){ bool }
   294  -              }, (#struct){
   295  -                b: (bool){ bool }
   296  -              }, (#struct){
   297  -                c: (bool){ bool }
   298  -              }) }
   299  -          }
   300  -        }, (#struct){
   301  -          c: (#struct){
   302  -            one: (#struct){ |((#struct){
   303  -                a: (int){ int }
   304  -              }, (#struct){
   305  -                b: (int){ int }
   306  -              }, (#struct){
   307  -                c: (int){ int }
   308  -              }) }
   309  -            two: (#struct){ |((#struct){
   310  -                a: (string){ string }
   311  -              }, (#struct){
   312  -                b: (string){ string }
   313  -              }, (#struct){
   314  -                c: (string){ string }
   315  -              }) }
   316  -            three: (#struct){ |((#struct){
   317  -                a: (bool){ bool }
   318  -              }, (#struct){
   319  -                b: (bool){ bool }
   320  -              }, (#struct){
   321  -                c: (bool){ bool }
   322  -              }) }
   323  -          }
   324  +          a: ~(#D3)
   325  +        }, (#struct){
   326  +          b: ~(#D3)
   327  +        }, (#struct){
   328  +          c: ~(#D3)
   329           }) }
   330       }, (#struct){
   331         b: (#struct){ |((#struct){
   332  -          a: (#struct){
   333  -            one: (#struct){ |((#struct){
   334  -                a: (int){ int }
   335  -              }, (#struct){
   336  -                b: (int){ int }
   337  -              }, (#struct){
   338  -                c: (int){ int }
   339  -              }) }
   340  -            two: (#struct){ |((#struct){
   341  -                a: (string){ string }
   342  -              }, (#struct){
   343  -                b: (string){ string }
   344  -              }, (#struct){
   345  -                c: (string){ string }
   346  -              }) }
   347  -            three: (#struct){ |((#struct){
   348  -                a: (bool){ bool }
   349  -              }, (#struct){
   350  -                b: (bool){ bool }
   351  -              }, (#struct){
   352  -                c: (bool){ bool }
   353  -              }) }
   354  -          }
   355  -        }, (#struct){
   356  -          b: (#struct){
   357  -            one: (#struct){ |((#struct){
   358  -                a: (int){ int }
   359  -              }, (#struct){
   360  -                b: (int){ int }
   361  -              }, (#struct){
   362  -                c: (int){ int }
   363  -              }) }
   364  -            two: (#struct){ |((#struct){
   365  -                a: (string){ string }
   366  -              }, (#struct){
   367  -                b: (string){ string }
   368  -              }, (#struct){
   369  -                c: (string){ string }
   370  -              }) }
   371  -            three: (#struct){ |((#struct){
   372  -                a: (bool){ bool }
   373  -              }, (#struct){
   374  -                b: (bool){ bool }
   375  -              }, (#struct){
   376  -                c: (bool){ bool }
   377  -              }) }
   378  -          }
   379  -        }, (#struct){
   380  -          c: (#struct){
   381  -            one: (#struct){ |((#struct){
   382  -                a: (int){ int }
   383  -              }, (#struct){
   384  -                b: (int){ int }
   385  -              }, (#struct){
   386  -                c: (int){ int }
   387  -              }) }
   388  -            two: (#struct){ |((#struct){
   389  -                a: (string){ string }
   390  -              }, (#struct){
   391  -                b: (string){ string }
   392  -              }, (#struct){
   393  -                c: (string){ string }
   394  -              }) }
   395  -            three: (#struct){ |((#struct){
   396  -                a: (bool){ bool }
   397  -              }, (#struct){
   398  -                b: (bool){ bool }
   399  -              }, (#struct){
   400  -                c: (bool){ bool }
   401  -              }) }
   402  -          }
   403  +          a: ~(#D3)
   404  +        }, (#struct){
   405  +          b: ~(#D3)
   406  +        }, (#struct){
   407  +          c: ~(#D3)
   408           }) }
   409       }, (#struct){
   410         c: (#struct){ |((#struct){
   411  -          a: (#struct){
   412  -            one: (#struct){ |((#struct){
   413  -                a: (int){ int }
   414  -              }, (#struct){
   415  -                b: (int){ int }
   416  -              }, (#struct){
   417  -                c: (int){ int }
   418  -              }) }
   419  -            two: (#struct){ |((#struct){
   420  -                a: (string){ string }
   421  -              }, (#struct){
   422  -                b: (string){ string }
   423  -              }, (#struct){
   424  -                c: (string){ string }
   425  -              }) }
   426  -            three: (#struct){ |((#struct){
   427  -                a: (bool){ bool }
   428  -              }, (#struct){
   429  -                b: (bool){ bool }
   430  -              }, (#struct){
   431  -                c: (bool){ bool }
   432  -              }) }
   433  -          }
   434  -        }, (#struct){
   435  -          b: (#struct){
   436  -            one: (#struct){ |((#struct){
   437  -                a: (int){ int }
   438  -              }, (#struct){
   439  -                b: (int){ int }
   440  -              }, (#struct){
   441  -                c: (int){ int }
   442  -              }) }
   443  -            two: (#struct){ |((#struct){
   444  -                a: (string){ string }
   445  -              }, (#struct){
   446  -                b: (string){ string }
   447  -              }, (#struct){
   448  -                c: (string){ string }
   449  -              }) }
   450  -            three: (#struct){ |((#struct){
   451  -                a: (bool){ bool }
   452  -              }, (#struct){
   453  -                b: (bool){ bool }
   454  -              }, (#struct){
   455  -                c: (bool){ bool }
   456  -              }) }
   457  -          }
   458  -        }, (#struct){
   459  -          c: (#struct){
   460  -            one: (#struct){ |((#struct){
   461  -                a: (int){ int }
   462  -              }, (#struct){
   463  -                b: (int){ int }
   464  -              }, (#struct){
   465  -                c: (int){ int }
   466  -              }) }
   467  -            two: (#struct){ |((#struct){
   468  -                a: (string){ string }
   469  -              }, (#struct){
   470  -                b: (string){ string }
   471  -              }, (#struct){
   472  -                c: (string){ string }
   473  -              }) }
   474  -            three: (#struct){ |((#struct){
   475  -                a: (bool){ bool }
   476  -              }, (#struct){
   477  -                b: (bool){ bool }
   478  -              }, (#struct){
   479  -                c: (bool){ bool }
   480  -              }) }
   481  -          }
   482  +          a: ~(#D3)
   483  +        }, (#struct){
   484  +          b: ~(#D3)
   485  +        }, (#struct){
   486  +          c: ~(#D3)
   487           }) }
   488       }) }
   489     #D2: (#struct){ |((#struct){
   490  -      a: (#struct){
   491  -        one: (#struct){ |((#struct){
   492  -            a: (int){ int }
   493  -          }, (#struct){
   494  -            b: (int){ int }
   495  -          }, (#struct){
   496  -            c: (int){ int }
   497  -          }) }
   498  -        two: (#struct){ |((#struct){
   499  -            a: (string){ string }
   500  -          }, (#struct){
   501  -            b: (string){ string }
   502  -          }, (#struct){
   503  -            c: (string){ string }
   504  -          }) }
   505  -        three: (#struct){ |((#struct){
   506  -            a: (bool){ bool }
   507  -          }, (#struct){
   508  -            b: (bool){ bool }
   509  -          }, (#struct){
   510  -            c: (bool){ bool }
   511  -          }) }
   512  -      }
   513  -    }, (#struct){
   514  -      b: (#struct){
   515  -        one: (#struct){ |((#struct){
   516  -            a: (int){ int }
   517  -          }, (#struct){
   518  -            b: (int){ int }
   519  -          }, (#struct){
   520  -            c: (int){ int }
   521  -          }) }
   522  -        two: (#struct){ |((#struct){
   523  -            a: (string){ string }
   524  -          }, (#struct){
   525  -            b: (string){ string }
   526  -          }, (#struct){
   527  -            c: (string){ string }
   528  -          }) }
   529  -        three: (#struct){ |((#struct){
   530  -            a: (bool){ bool }
   531  -          }, (#struct){
   532  -            b: (bool){ bool }
   533  -          }, (#struct){
   534  -            c: (bool){ bool }
   535  -          }) }
   536  -      }
   537  -    }, (#struct){
   538  -      c: (#struct){
   539  -        one: (#struct){ |((#struct){
   540  -            a: (int){ int }
   541  -          }, (#struct){
   542  -            b: (int){ int }
   543  -          }, (#struct){
   544  -            c: (int){ int }
   545  -          }) }
   546  -        two: (#struct){ |((#struct){
   547  -            a: (string){ string }
   548  -          }, (#struct){
   549  -            b: (string){ string }
   550  -          }, (#struct){
   551  -            c: (string){ string }
   552  -          }) }
   553  -        three: (#struct){ |((#struct){
   554  -            a: (bool){ bool }
   555  -          }, (#struct){
   556  -            b: (bool){ bool }
   557  -          }, (#struct){
   558  -            c: (bool){ bool }
   559  -          }) }
   560  -      }
   561  +      a: ~(#D3)
   562  +    }, (#struct){
   563  +      b: ~(#D3)
   564  +    }, (#struct){
   565  +      c: ~(#D3)
   566       }) }
   567     #D3: (#struct){
   568       one: (#struct){ |((#struct){
   569  @@ -324,676 +54,81 @@
   570           c: (bool){ bool }
   571         }) }
   572     }
   573  -  root: (_|_){
   574  -    // [structural cycle]
   575  +  root: (struct){
   576       y: ((list|struct)){ |((#struct){
   577           a: (#struct){ |((#struct){
   578  -            a: (#struct){
   579  -              one: (#struct){ |((#struct){
   580  -                  a: (int){ int }
   581  -                }, (#struct){
   582  -                  b: (int){ int }
   583  -                }, (#struct){
   584  -                  c: (int){ int }
   585  -                }) }
   586  -              two: (#struct){ |((#struct){
   587  -                  a: (string){ string }
   588  -                }, (#struct){
   589  -                  b: (string){ string }
   590  -                }, (#struct){
   591  -                  c: (string){ string }
   592  -                }) }
   593  -              three: (#struct){ |((#struct){
   594  -                  a: (bool){ bool }
   595  -                }, (#struct){
   596  -                  b: (bool){ bool }
   597  -                }, (#struct){
   598  -                  c: (bool){ bool }
   599  -                }) }
   600  -            }
   601  -          }, (#struct){
   602  -            b: (#struct){
   603  -              one: (#struct){ |((#struct){
   604  -                  a: (int){ int }
   605  -                }, (#struct){
   606  -                  b: (int){ int }
   607  -                }, (#struct){
   608  -                  c: (int){ int }
   609  -                }) }
   610  -              two: (#struct){ |((#struct){
   611  -                  a: (string){ string }
   612  -                }, (#struct){
   613  -                  b: (string){ string }
   614  -                }, (#struct){
   615  -                  c: (string){ string }
   616  -                }) }
   617  -              three: (#struct){ |((#struct){
   618  -                  a: (bool){ bool }
   619  -                }, (#struct){
   620  -                  b: (bool){ bool }
   621  -                }, (#struct){
   622  -                  c: (bool){ bool }
   623  -                }) }
   624  -            }
   625  -          }, (#struct){
   626  -            c: (#struct){
   627  -              one: (#struct){ |((#struct){
   628  -                  a: (int){ int }
   629  -                }, (#struct){
   630  -                  b: (int){ int }
   631  -                }, (#struct){
   632  -                  c: (int){ int }
   633  -                }) }
   634  -              two: (#struct){ |((#struct){
   635  -                  a: (string){ string }
   636  -                }, (#struct){
   637  -                  b: (string){ string }
   638  -                }, (#struct){
   639  -                  c: (string){ string }
   640  -                }) }
   641  -              three: (#struct){ |((#struct){
   642  -                  a: (bool){ bool }
   643  -                }, (#struct){
   644  -                  b: (bool){ bool }
   645  -                }, (#struct){
   646  -                  c: (bool){ bool }
   647  -                }) }
   648  -            }
   649  +            a: ~(#D3)
   650  +          }, (#struct){
   651  +            b: ~(#D3)
   652  +          }, (#struct){
   653  +            c: ~(#D3)
   654             }) }
   655         }, (#struct){
   656           b: (#struct){ |((#struct){
   657  -            a: (#struct){
   658  -              one: (#struct){ |((#struct){
   659  -                  a: (int){ int }
   660  -                }, (#struct){
   661  -                  b: (int){ int }
   662  -                }, (#struct){
   663  -                  c: (int){ int }
   664  -                }) }
   665  -              two: (#struct){ |((#struct){
   666  -                  a: (string){ string }
   667  -                }, (#struct){
   668  -                  b: (string){ string }
   669  -                }, (#struct){
   670  -                  c: (string){ string }
   671  -                }) }
   672  -              three: (#struct){ |((#struct){
   673  -                  a: (bool){ bool }
   674  -                }, (#struct){
   675  -                  b: (bool){ bool }
   676  -                }, (#struct){
   677  -                  c: (bool){ bool }
   678  -                }) }
   679  -            }
   680  -          }, (#struct){
   681  -            b: (#struct){
   682  -              one: (#struct){ |((#struct){
   683  -                  a: (int){ int }
   684  -                }, (#struct){
   685  -                  b: (int){ int }
   686  -                }, (#struct){
   687  -                  c: (int){ int }
   688  -                }) }
   689  -              two: (#struct){ |((#struct){
   690  -                  a: (string){ string }
   691  -                }, (#struct){
   692  -                  b: (string){ string }
   693  -                }, (#struct){
   694  -                  c: (string){ string }
   695  -                }) }
   696  -              three: (#struct){ |((#struct){
   697  -                  a: (bool){ bool }
   698  -                }, (#struct){
   699  -                  b: (bool){ bool }
   700  -                }, (#struct){
   701  -                  c: (bool){ bool }
   702  -                }) }
   703  -            }
   704  -          }, (#struct){
   705  -            c: (#struct){
   706  -              one: (#struct){ |((#struct){
   707  -                  a: (int){ int }
   708  -                }, (#struct){
   709  -                  b: (int){ int }
   710  -                }, (#struct){
   711  -                  c: (int){ int }
   712  -                }) }
   713  -              two: (#struct){ |((#struct){
   714  -                  a: (string){ string }
   715  -                }, (#struct){
   716  -                  b: (string){ string }
   717  -                }, (#struct){
   718  -                  c: (string){ string }
   719  -                }) }
   720  -              three: (#struct){ |((#struct){
   721  -                  a: (bool){ bool }
   722  -                }, (#struct){
   723  -                  b: (bool){ bool }
   724  -                }, (#struct){
   725  -                  c: (bool){ bool }
   726  -                }) }
   727  -            }
   728  +            a: ~(#D3)
   729  +          }, (#struct){
   730  +            b: ~(#D3)
   731  +          }, (#struct){
   732  +            c: ~(#D3)
   733             }) }
   734         }, (#struct){
   735           c: (#struct){ |((#struct){
   736  -            a: (#struct){
   737  -              one: (#struct){ |((#struct){
   738  -                  a: (int){ int }
   739  -                }, (#struct){
   740  -                  b: (int){ int }
   741  -                }, (#struct){
   742  -                  c: (int){ int }
   743  -                }) }
   744  -              two: (#struct){ |((#struct){
   745  -                  a: (string){ string }
   746  -                }, (#struct){
   747  -                  b: (string){ string }
   748  -                }, (#struct){
   749  -                  c: (string){ string }
   750  -                }) }
   751  -              three: (#struct){ |((#struct){
   752  -                  a: (bool){ bool }
   753  -                }, (#struct){
   754  -                  b: (bool){ bool }
   755  -                }, (#struct){
   756  -                  c: (bool){ bool }
   757  -                }) }
   758  -            }
   759  -          }, (#struct){
   760  -            b: (#struct){
   761  -              one: (#struct){ |((#struct){
   762  -                  a: (int){ int }
   763  -                }, (#struct){
   764  -                  b: (int){ int }
   765  -                }, (#struct){
   766  -                  c: (int){ int }
   767  -                }) }
   768  -              two: (#struct){ |((#struct){
   769  -                  a: (string){ string }
   770  -                }, (#struct){
   771  -                  b: (string){ string }
   772  -                }, (#struct){
   773  -                  c: (string){ string }
   774  -                }) }
   775  -              three: (#struct){ |((#struct){
   776  -                  a: (bool){ bool }
   777  -                }, (#struct){
   778  -                  b: (bool){ bool }
   779  -                }, (#struct){
   780  -                  c: (bool){ bool }
   781  -                }) }
   782  -            }
   783  -          }, (#struct){
   784  -            c: (#struct){
   785  -              one: (#struct){ |((#struct){
   786  -                  a: (int){ int }
   787  -                }, (#struct){
   788  -                  b: (int){ int }
   789  -                }, (#struct){
   790  -                  c: (int){ int }
   791  -                }) }
   792  -              two: (#struct){ |((#struct){
   793  -                  a: (string){ string }
   794  -                }, (#struct){
   795  -                  b: (string){ string }
   796  -                }, (#struct){
   797  -                  c: (string){ string }
   798  -                }) }
   799  -              three: (#struct){ |((#struct){
   800  -                  a: (bool){ bool }
   801  -                }, (#struct){
   802  -                  b: (bool){ bool }
   803  -                }, (#struct){
   804  -                  c: (bool){ bool }
   805  -                }) }
   806  -            }
   807  +            a: ~(#D3)
   808  +          }, (#struct){
   809  +            b: ~(#D3)
   810  +          }, (#struct){
   811  +            c: ~(#D3)
   812             }) }
   813         }, (#list){
   814           0: (#struct){ |((#struct){
   815               a: (#struct){ |((#struct){
   816  -                a: (#struct){
   817  -                  one: (#struct){ |((#struct){
   818  -                      a: (int){ int }
   819  -                    }, (#struct){
   820  -                      b: (int){ int }
   821  -                    }, (#struct){
   822  -                      c: (int){ int }
   823  -                    }) }
   824  -                  two: (#struct){ |((#struct){
   825  -                      a: (string){ string }
   826  -                    }, (#struct){
   827  -                      b: (string){ string }
   828  -                    }, (#struct){
   829  -                      c: (string){ string }
   830  -                    }) }
   831  -                  three: (#struct){ |((#struct){
   832  -                      a: (bool){ bool }
   833  -                    }, (#struct){
   834  -                      b: (bool){ bool }
   835  -                    }, (#struct){
   836  -                      c: (bool){ bool }
   837  -                    }) }
   838  -                }
   839  -              }, (#struct){
   840  -                b: (#struct){
   841  -                  one: (#struct){ |((#struct){
   842  -                      a: (int){ int }
   843  -                    }, (#struct){
   844  -                      b: (int){ int }
   845  -                    }, (#struct){
   846  -                      c: (int){ int }
   847  -                    }) }
   848  -                  two: (#struct){ |((#struct){
   849  -                      a: (string){ string }
   850  -                    }, (#struct){
   851  -                      b: (string){ string }
   852  -                    }, (#struct){
   853  -                      c: (string){ string }
   854  -                    }) }
   855  -                  three: (#struct){ |((#struct){
   856  -                      a: (bool){ bool }
   857  -                    }, (#struct){
   858  -                      b: (bool){ bool }
   859  -                    }, (#struct){
   860  -                      c: (bool){ bool }
   861  -                    }) }
   862  -                }
   863  -              }, (#struct){
   864  -                c: (#struct){
   865  -                  one: (#struct){ |((#struct){
   866  -                      a: (int){ int }
   867  -                    }, (#struct){
   868  -                      b: (int){ int }
   869  -                    }, (#struct){
   870  -                      c: (int){ int }
   871  -                    }) }
   872  -                  two: (#struct){ |((#struct){
   873  -                      a: (string){ string }
   874  -                    }, (#struct){
   875  -                      b: (string){ string }
   876  -                    }, (#struct){
   877  -                      c: (string){ string }
   878  -                    }) }
   879  -                  three: (#struct){ |((#struct){
   880  -                      a: (bool){ bool }
   881  -                    }, (#struct){
   882  -                      b: (bool){ bool }
   883  -                    }, (#struct){
   884  -                      c: (bool){ bool }
   885  -                    }) }
   886  -                }
   887  -              }) }
   888  -          }, (#struct){
   889  -            b: (#struct){ |((#struct){
   890  -                a: (#struct){
   891  -                  one: (#struct){ |((#struct){
   892  -                      a: (int){ int }
   893  -                    }, (#struct){
   894  -                      b: (int){ int }
   895  -                    }, (#struct){
   896  -                      c: (int){ int }
   897  -                    }) }
   898  -                  two: (#struct){ |((#struct){
   899  -                      a: (string){ string }
   900  -                    }, (#struct){
   901  -                      b: (string){ string }
   902  -                    }, (#struct){
   903  -                      c: (string){ string }
   904  -                    }) }
   905  -                  three: (#struct){ |((#struct){
   906  -                      a: (bool){ bool }
   907  -                    }, (#struct){
   908  -                      b: (bool){ bool }
   909  -                    }, (#struct){
   910  -                      c: (bool){ bool }
   911  -                    }) }
   912  -                }
   913  -              }, (#struct){
   914  -                b: (#struct){
   915  -                  one: (#struct){ |((#struct){
   916  -                      a: (int){ int }
   917  -                    }, (#struct){
   918  -                      b: (int){ int }
   919  -                    }, (#struct){
   920  -                      c: (int){ int }
   921  -                    }) }
   922  -                  two: (#struct){ |((#struct){
   923  -                      a: (string){ string }
   924  -                    }, (#struct){
   925  -                      b: (string){ string }
   926  -                    }, (#struct){
   927  -                      c: (string){ string }
   928  -                    }) }
   929  -                  three: (#struct){ |((#struct){
   930  -                      a: (bool){ bool }
   931  -                    }, (#struct){
   932  -                      b: (bool){ bool }
   933  -                    }, (#struct){
   934  -                      c: (bool){ bool }
   935  -                    }) }
   936  -                }
   937  -              }, (#struct){
   938  -                c: (#struct){
   939  -                  one: (#struct){ |((#struct){
   940  -                      a: (int){ int }
   941  -                    }, (#struct){
   942  -                      b: (int){ int }
   943  -                    }, (#struct){
   944  -                      c: (int){ int }
   945  -                    }) }
   946  -                  two: (#struct){ |((#struct){
   947  -                      a: (string){ string }
   948  -                    }, (#struct){
   949  -                      b: (string){ string }
   950  -                    }, (#struct){
   951  -                      c: (string){ string }
   952  -                    }) }
   953  -                  three: (#struct){ |((#struct){
   954  -                      a: (bool){ bool }
   955  -                    }, (#struct){
   956  -                      b: (bool){ bool }
   957  -                    }, (#struct){
   958  -                      c: (bool){ bool }
   959  -                    }) }
   960  -                }
   961  -              }) }
   962  -          }, (#struct){
   963  -            c: (#struct){ |((#struct){
   964  -                a: (#struct){
   965  -                  one: (#struct){ |((#struct){
   966  -                      a: (int){ int }
   967  -                    }, (#struct){
   968  -                      b: (int){ int }
   969  -                    }, (#struct){
   970  -                      c: (int){ int }
   971  -                    }) }
   972  -                  two: (#struct){ |((#struct){
   973  -                      a: (string){ string }
   974  -                    }, (#struct){
   975  -                      b: (string){ string }
   976  -                    }, (#struct){
   977  -                      c: (string){ string }
   978  -                    }) }
   979  -                  three: (#struct){ |((#struct){
   980  -                      a: (bool){ bool }
   981  -                    }, (#struct){
   982  -                      b: (bool){ bool }
   983  -                    }, (#struct){
   984  -                      c: (bool){ bool }
   985  -                    }) }
   986  -                }
   987  -              }, (#struct){
   988  -                b: (#struct){
   989  -                  one: (#struct){ |((#struct){
   990  -                      a: (int){ int }
   991  -                    }, (#struct){
   992  -                      b: (int){ int }
   993  -                    }, (#struct){
   994  -                      c: (int){ int }
   995  -                    }) }
   996  -                  two: (#struct){ |((#struct){
   997  -                      a: (string){ string }
   998  -                    }, (#struct){
   999  -                      b: (string){ string }
  1000  -                    }, (#struct){
  1001  -                      c: (string){ string }
  1002  -                    }) }
  1003  -                  three: (#struct){ |((#struct){
  1004  -                      a: (bool){ bool }
  1005  -                    }, (#struct){
  1006  -                      b: (bool){ bool }
  1007  -                    }, (#struct){
  1008  -                      c: (bool){ bool }
  1009  -                    }) }
  1010  -                }
  1011  -              }, (#struct){
  1012  -                c: (#struct){
  1013  -                  one: (#struct){ |((#struct){
  1014  -                      a: (int){ int }
  1015  -                    }, (#struct){
  1016  -                      b: (int){ int }
  1017  -                    }, (#struct){
  1018  -                      c: (int){ int }
  1019  -                    }) }
  1020  -                  two: (#struct){ |((#struct){
  1021  -                      a: (string){ string }
  1022  -                    }, (#struct){
  1023  -                      b: (string){ string }
  1024  -                    }, (#struct){
  1025  -                      c: (string){ string }
  1026  -                    }) }
  1027  -                  three: (#struct){ |((#struct){
  1028  -                      a: (bool){ bool }
  1029  -                    }, (#struct){
  1030  -                      b: (bool){ bool }
  1031  -                    }, (#struct){
  1032  -                      c: (bool){ bool }
  1033  -                    }) }
  1034  -                }
  1035  +                a: ~(#D3)
  1036  +              }, (#struct){
  1037  +                b: ~(#D3)
  1038  +              }, (#struct){
  1039  +                c: ~(#D3)
  1040  +              }) }
  1041  +          }, (#struct){
  1042  +            b: (#struct){ |((#struct){
  1043  +                a: ~(#D3)
  1044  +              }, (#struct){
  1045  +                b: ~(#D3)
  1046  +              }, (#struct){
  1047  +                c: ~(#D3)
  1048  +              }) }
  1049  +          }, (#struct){
  1050  +            c: (#struct){ |((#struct){
  1051  +                a: ~(#D3)
  1052  +              }, (#struct){
  1053  +                b: ~(#D3)
  1054  +              }, (#struct){
  1055  +                c: ~(#D3)
  1056                 }) }
  1057             }) }
  1058         }, (struct){
  1059           x: (#struct){ |((#struct){
  1060               a: (#struct){ |((#struct){
  1061  -                a: (#struct){
  1062  -                  one: (#struct){ |((#struct){
  1063  -                      a: (int){ int }
  1064  -                    }, (#struct){
  1065  -                      b: (int){ int }
  1066  -                    }, (#struct){
  1067  -                      c: (int){ int }
  1068  -                    }) }
  1069  -                  two: (#struct){ |((#struct){
  1070  -                      a: (string){ string }
  1071  -                    }, (#struct){
  1072  -                      b: (string){ string }
  1073  -                    }, (#struct){
  1074  -                      c: (string){ string }
  1075  -                    }) }
  1076  -                  three: (#struct){ |((#struct){
  1077  -                      a: (bool){ bool }
  1078  -                    }, (#struct){
  1079  -                      b: (bool){ bool }
  1080  -                    }, (#struct){
  1081  -                      c: (bool){ bool }
  1082  -                    }) }
  1083  -                }
  1084  -              }, (#struct){
  1085  -                b: (#struct){
  1086  -                  one: (#struct){ |((#struct){
  1087  -                      a: (int){ int }
  1088  -                    }, (#struct){
  1089  -                      b: (int){ int }
  1090  -                    }, (#struct){
  1091  -                      c: (int){ int }
  1092  -                    }) }
  1093  -                  two: (#struct){ |((#struct){
  1094  -                      a: (string){ string }
  1095  -                    }, (#struct){
  1096  -                      b: (string){ string }
  1097  -                    }, (#struct){
  1098  -                      c: (string){ string }
  1099  -                    }) }
  1100  -                  three: (#struct){ |((#struct){
  1101  -                      a: (bool){ bool }
  1102  -                    }, (#struct){
  1103  -                      b: (bool){ bool }
  1104  -                    }, (#struct){
  1105  -                      c: (bool){ bool }
  1106  -                    }) }
  1107  -                }
  1108  -              }, (#struct){
  1109  -                c: (#struct){
  1110  -                  one: (#struct){ |((#struct){
  1111  -                      a: (int){ int }
  1112  -                    }, (#struct){
  1113  -                      b: (int){ int }
  1114  -                    }, (#struct){
  1115  -                      c: (int){ int }
  1116  -                    }) }
  1117  -                  two: (#struct){ |((#struct){
  1118  -                      a: (string){ string }
  1119  -                    }, (#struct){
  1120  -                      b: (string){ string }
  1121  -                    }, (#struct){
  1122  -                      c: (string){ string }
  1123  -                    }) }
  1124  -                  three: (#struct){ |((#struct){
  1125  -                      a: (bool){ bool }
  1126  -                    }, (#struct){
  1127  -                      b: (bool){ bool }
  1128  -                    }, (#struct){
  1129  -                      c: (bool){ bool }
  1130  -                    }) }
  1131  -                }
  1132  -              }) }
  1133  -          }, (#struct){
  1134  -            b: (#struct){ |((#struct){
  1135  -                a: (#struct){
  1136  -                  one: (#struct){ |((#struct){
  1137  -                      a: (int){ int }
  1138  -                    }, (#struct){
  1139  -                      b: (int){ int }
  1140  -                    }, (#struct){
  1141  -                      c: (int){ int }
  1142  -                    }) }
  1143  -                  two: (#struct){ |((#struct){
  1144  -                      a: (string){ string }
  1145  -                    }, (#struct){
  1146  -                      b: (string){ string }
  1147  -                    }, (#struct){
  1148  -                      c: (string){ string }
  1149  -                    }) }
  1150  -                  three: (#struct){ |((#struct){
  1151  -                      a: (bool){ bool }
  1152  -                    }, (#struct){
  1153  -                      b: (bool){ bool }
  1154  -                    }, (#struct){
  1155  -                      c: (bool){ bool }
  1156  -                    }) }
  1157  -                }
  1158  -              }, (#struct){
  1159  -                b: (#struct){
  1160  -                  one: (#struct){ |((#struct){
  1161  -                      a: (int){ int }
  1162  -                    }, (#struct){
  1163  -                      b: (int){ int }
  1164  -                    }, (#struct){
  1165  -                      c: (int){ int }
  1166  -                    }) }
  1167  -                  two: (#struct){ |((#struct){
  1168  -                      a: (string){ string }
  1169  -                    }, (#struct){
  1170  -                      b: (string){ string }
  1171  -                    }, (#struct){
  1172  -                      c: (string){ string }
  1173  -                    }) }
  1174  -                  three: (#struct){ |((#struct){
  1175  -                      a: (bool){ bool }
  1176  -                    }, (#struct){
  1177  -                      b: (bool){ bool }
  1178  -                    }, (#struct){
  1179  -                      c: (bool){ bool }
  1180  -                    }) }
  1181  -                }
  1182  -              }, (#struct){
  1183  -                c: (#struct){
  1184  -                  one: (#struct){ |((#struct){
  1185  -                      a: (int){ int }
  1186  -                    }, (#struct){
  1187  -                      b: (int){ int }
  1188  -                    }, (#struct){
  1189  -                      c: (int){ int }
  1190  -                    }) }
  1191  -                  two: (#struct){ |((#struct){
  1192  -                      a: (string){ string }
  1193  -                    }, (#struct){
  1194  -                      b: (string){ string }
  1195  -                    }, (#struct){
  1196  -                      c: (string){ string }
  1197  -                    }) }
  1198  -                  three: (#struct){ |((#struct){
  1199  -                      a: (bool){ bool }
  1200  -                    }, (#struct){
  1201  -                      b: (bool){ bool }
  1202  -                    }, (#struct){
  1203  -                      c: (bool){ bool }
  1204  -                    }) }
  1205  -                }
  1206  -              }) }
  1207  -          }, (#struct){
  1208  -            c: (#struct){ |((#struct){
  1209  -                a: (#struct){
  1210  -                  one: (#struct){ |((#struct){
  1211  -                      a: (int){ int }
  1212  -                    }, (#struct){
  1213  -                      b: (int){ int }
  1214  -                    }, (#struct){
  1215  -                      c: (int){ int }
  1216  -                    }) }
  1217  -                  two: (#struct){ |((#struct){
  1218  -                      a: (string){ string }
  1219  -                    }, (#struct){
  1220  -                      b: (string){ string }
  1221  -                    }, (#struct){
  1222  -                      c: (string){ string }
  1223  -                    }) }
  1224  -                  three: (#struct){ |((#struct){
  1225  -                      a: (bool){ bool }
  1226  -                    }, (#struct){
  1227  -                      b: (bool){ bool }
  1228  -                    }, (#struct){
  1229  -                      c: (bool){ bool }
  1230  -                    }) }
  1231  -                }
  1232  -              }, (#struct){
  1233  -                b: (#struct){
  1234  -                  one: (#struct){ |((#struct){
  1235  -                      a: (int){ int }
  1236  -                    }, (#struct){
  1237  -                      b: (int){ int }
  1238  -                    }, (#struct){
  1239  -                      c: (int){ int }
  1240  -                    }) }
  1241  -                  two: (#struct){ |((#struct){
  1242  -                      a: (string){ string }
  1243  -                    }, (#struct){
  1244  -                      b: (string){ string }
  1245  -                    }, (#struct){
  1246  -                      c: (string){ string }
  1247  -                    }) }
  1248  -                  three: (#struct){ |((#struct){
  1249  -                      a: (bool){ bool }
  1250  -                    }, (#struct){
  1251  -                      b: (bool){ bool }
  1252  -                    }, (#struct){
  1253  -                      c: (bool){ bool }
  1254  -                    }) }
  1255  -                }
  1256  -              }, (#struct){
  1257  -                c: (#struct){
  1258  -                  one: (#struct){ |((#struct){
  1259  -                      a: (int){ int }
  1260  -                    }, (#struct){
  1261  -                      b: (int){ int }
  1262  -                    }, (#struct){
  1263  -                      c: (int){ int }
  1264  -                    }) }
  1265  -                  two: (#struct){ |((#struct){
  1266  -                      a: (string){ string }
  1267  -                    }, (#struct){
  1268  -                      b: (string){ string }
  1269  -                    }, (#struct){
  1270  -                      c: (string){ string }
  1271  -                    }) }
  1272  -                  three: (#struct){ |((#struct){
  1273  -                      a: (bool){ bool }
  1274  -                    }, (#struct){
  1275  -                      b: (bool){ bool }
  1276  -                    }, (#struct){
  1277  -                      c: (bool){ bool }
  1278  -                    }) }
  1279  -                }
  1280  +                a: ~(#D3)
  1281  +              }, (#struct){
  1282  +                b: ~(#D3)
  1283  +              }, (#struct){
  1284  +                c: ~(#D3)
  1285  +              }) }
  1286  +          }, (#struct){
  1287  +            b: (#struct){ |((#struct){
  1288  +                a: ~(#D3)
  1289  +              }, (#struct){
  1290  +                b: ~(#D3)
  1291  +              }, (#struct){
  1292  +                c: ~(#D3)
  1293  +              }) }
  1294  +          }, (#struct){
  1295  +            c: (#struct){ |((#struct){
  1296  +                a: ~(#D3)
  1297  +              }, (#struct){
  1298  +                b: ~(#D3)
  1299  +              }, (#struct){
  1300  +                c: ~(#D3)
  1301                 }) }
  1302             }) }
  1303         }) }
  1304  @@ -1009,34 +144,17 @@
  1305         data: (struct){
  1306         }
  1307       }
  1308  -    "2": (_|_){
  1309  -      // [structural cycle]
  1310  -      data: (_|_){
  1311  -        // [structural cycle] root_2: structural cycle:
  1312  -        //     ./in.cue:19:18
  1313  -      }
  1314  -    }
  1315  -    "3": (_|_){
  1316  -      // [structural cycle]
  1317  -      data: (_|_){
  1318  -        // [structural cycle] root_2: structural cycle:
  1319  -        //     ./in.cue:19:18
  1320  -      }
  1321  -    }
  1322  -  }
  1323  -  let root_0#1 = (_|_){
  1324  -    // [structural cycle] root_0: structural cycle:
  1325  -    //     ./in.cue:17:18
  1326  -  }
  1327  -  let root_1#2 = (_|_){
  1328  -    // [structural cycle] root_1: structural cycle:
  1329  -    //     ./in.cue:18:18
  1330  -  }
  1331  -  root_2: (_|_){
  1332  -    // [structural cycle] root_2: structural cycle:
  1333  -    //     ./in.cue:19:18
  1334  -  }
  1335  -  root_3: (_|_){
  1336  -    // [structural cycle]
  1337  -  }
  1338  +    "2": (struct){
  1339  +      data: (struct){
  1340  +      }
  1341  +    }
  1342  +    "3": (struct){
  1343  +      data: (struct){
  1344  +      }
  1345  +    }
  1346  +  }
  1347  +  let root_0#1 = ~(root)
  1348  +  let root_1#2 = ~(root)
  1349  +  root_2: ~(root)
  1350  +  root_3: ~(root)
  1351   }
  1352  -- out/eval --
  1353  Errors:
  1354  root_2: structural cycle:
  1355      ./in.cue:19:18
  1356  
  1357  Result:
  1358  (_|_){
  1359    // [structural cycle]
  1360    #D1: (#struct){ |((#struct){
  1361        a: (#struct){ |((#struct){
  1362            a: (#struct){
  1363              one: (#struct){ |((#struct){
  1364                  a: (int){ int }
  1365                }, (#struct){
  1366                  b: (int){ int }
  1367                }, (#struct){
  1368                  c: (int){ int }
  1369                }) }
  1370              two: (#struct){ |((#struct){
  1371                  a: (string){ string }
  1372                }, (#struct){
  1373                  b: (string){ string }
  1374                }, (#struct){
  1375                  c: (string){ string }
  1376                }) }
  1377              three: (#struct){ |((#struct){
  1378                  a: (bool){ bool }
  1379                }, (#struct){
  1380                  b: (bool){ bool }
  1381                }, (#struct){
  1382                  c: (bool){ bool }
  1383                }) }
  1384            }
  1385          }, (#struct){
  1386            b: (#struct){
  1387              one: (#struct){ |((#struct){
  1388                  a: (int){ int }
  1389                }, (#struct){
  1390                  b: (int){ int }
  1391                }, (#struct){
  1392                  c: (int){ int }
  1393                }) }
  1394              two: (#struct){ |((#struct){
  1395                  a: (string){ string }
  1396                }, (#struct){
  1397                  b: (string){ string }
  1398                }, (#struct){
  1399                  c: (string){ string }
  1400                }) }
  1401              three: (#struct){ |((#struct){
  1402                  a: (bool){ bool }
  1403                }, (#struct){
  1404                  b: (bool){ bool }
  1405                }, (#struct){
  1406                  c: (bool){ bool }
  1407                }) }
  1408            }
  1409          }, (#struct){
  1410            c: (#struct){
  1411              one: (#struct){ |((#struct){
  1412                  a: (int){ int }
  1413                }, (#struct){
  1414                  b: (int){ int }
  1415                }, (#struct){
  1416                  c: (int){ int }
  1417                }) }
  1418              two: (#struct){ |((#struct){
  1419                  a: (string){ string }
  1420                }, (#struct){
  1421                  b: (string){ string }
  1422                }, (#struct){
  1423                  c: (string){ string }
  1424                }) }
  1425              three: (#struct){ |((#struct){
  1426                  a: (bool){ bool }
  1427                }, (#struct){
  1428                  b: (bool){ bool }
  1429                }, (#struct){
  1430                  c: (bool){ bool }
  1431                }) }
  1432            }
  1433          }) }
  1434      }, (#struct){
  1435        b: (#struct){ |((#struct){
  1436            a: (#struct){
  1437              one: (#struct){ |((#struct){
  1438                  a: (int){ int }
  1439                }, (#struct){
  1440                  b: (int){ int }
  1441                }, (#struct){
  1442                  c: (int){ int }
  1443                }) }
  1444              two: (#struct){ |((#struct){
  1445                  a: (string){ string }
  1446                }, (#struct){
  1447                  b: (string){ string }
  1448                }, (#struct){
  1449                  c: (string){ string }
  1450                }) }
  1451              three: (#struct){ |((#struct){
  1452                  a: (bool){ bool }
  1453                }, (#struct){
  1454                  b: (bool){ bool }
  1455                }, (#struct){
  1456                  c: (bool){ bool }
  1457                }) }
  1458            }
  1459          }, (#struct){
  1460            b: (#struct){
  1461              one: (#struct){ |((#struct){
  1462                  a: (int){ int }
  1463                }, (#struct){
  1464                  b: (int){ int }
  1465                }, (#struct){
  1466                  c: (int){ int }
  1467                }) }
  1468              two: (#struct){ |((#struct){
  1469                  a: (string){ string }
  1470                }, (#struct){
  1471                  b: (string){ string }
  1472                }, (#struct){
  1473                  c: (string){ string }
  1474                }) }
  1475              three: (#struct){ |((#struct){
  1476                  a: (bool){ bool }
  1477                }, (#struct){
  1478                  b: (bool){ bool }
  1479                }, (#struct){
  1480                  c: (bool){ bool }
  1481                }) }
  1482            }
  1483          }, (#struct){
  1484            c: (#struct){
  1485              one: (#struct){ |((#struct){
  1486                  a: (int){ int }
  1487                }, (#struct){
  1488                  b: (int){ int }
  1489                }, (#struct){
  1490                  c: (int){ int }
  1491                }) }
  1492              two: (#struct){ |((#struct){
  1493                  a: (string){ string }
  1494                }, (#struct){
  1495                  b: (string){ string }
  1496                }, (#struct){
  1497                  c: (string){ string }
  1498                }) }
  1499              three: (#struct){ |((#struct){
  1500                  a: (bool){ bool }
  1501                }, (#struct){
  1502                  b: (bool){ bool }
  1503                }, (#struct){
  1504                  c: (bool){ bool }
  1505                }) }
  1506            }
  1507          }) }
  1508      }, (#struct){
  1509        c: (#struct){ |((#struct){
  1510            a: (#struct){
  1511              one: (#struct){ |((#struct){
  1512                  a: (int){ int }
  1513                }, (#struct){
  1514                  b: (int){ int }
  1515                }, (#struct){
  1516                  c: (int){ int }
  1517                }) }
  1518              two: (#struct){ |((#struct){
  1519                  a: (string){ string }
  1520                }, (#struct){
  1521                  b: (string){ string }
  1522                }, (#struct){
  1523                  c: (string){ string }
  1524                }) }
  1525              three: (#struct){ |((#struct){
  1526                  a: (bool){ bool }
  1527                }, (#struct){
  1528                  b: (bool){ bool }
  1529                }, (#struct){
  1530                  c: (bool){ bool }
  1531                }) }
  1532            }
  1533          }, (#struct){
  1534            b: (#struct){
  1535              one: (#struct){ |((#struct){
  1536                  a: (int){ int }
  1537                }, (#struct){
  1538                  b: (int){ int }
  1539                }, (#struct){
  1540                  c: (int){ int }
  1541                }) }
  1542              two: (#struct){ |((#struct){
  1543                  a: (string){ string }
  1544                }, (#struct){
  1545                  b: (string){ string }
  1546                }, (#struct){
  1547                  c: (string){ string }
  1548                }) }
  1549              three: (#struct){ |((#struct){
  1550                  a: (bool){ bool }
  1551                }, (#struct){
  1552                  b: (bool){ bool }
  1553                }, (#struct){
  1554                  c: (bool){ bool }
  1555                }) }
  1556            }
  1557          }, (#struct){
  1558            c: (#struct){
  1559              one: (#struct){ |((#struct){
  1560                  a: (int){ int }
  1561                }, (#struct){
  1562                  b: (int){ int }
  1563                }, (#struct){
  1564                  c: (int){ int }
  1565                }) }
  1566              two: (#struct){ |((#struct){
  1567                  a: (string){ string }
  1568                }, (#struct){
  1569                  b: (string){ string }
  1570                }, (#struct){
  1571                  c: (string){ string }
  1572                }) }
  1573              three: (#struct){ |((#struct){
  1574                  a: (bool){ bool }
  1575                }, (#struct){
  1576                  b: (bool){ bool }
  1577                }, (#struct){
  1578                  c: (bool){ bool }
  1579                }) }
  1580            }
  1581          }) }
  1582      }) }
  1583    #D2: (#struct){ |((#struct){
  1584        a: (#struct){
  1585          one: (#struct){ |((#struct){
  1586              a: (int){ int }
  1587            }, (#struct){
  1588              b: (int){ int }
  1589            }, (#struct){
  1590              c: (int){ int }
  1591            }) }
  1592          two: (#struct){ |((#struct){
  1593              a: (string){ string }
  1594            }, (#struct){
  1595              b: (string){ string }
  1596            }, (#struct){
  1597              c: (string){ string }
  1598            }) }
  1599          three: (#struct){ |((#struct){
  1600              a: (bool){ bool }
  1601            }, (#struct){
  1602              b: (bool){ bool }
  1603            }, (#struct){
  1604              c: (bool){ bool }
  1605            }) }
  1606        }
  1607      }, (#struct){
  1608        b: (#struct){
  1609          one: (#struct){ |((#struct){
  1610              a: (int){ int }
  1611            }, (#struct){
  1612              b: (int){ int }
  1613            }, (#struct){
  1614              c: (int){ int }
  1615            }) }
  1616          two: (#struct){ |((#struct){
  1617              a: (string){ string }
  1618            }, (#struct){
  1619              b: (string){ string }
  1620            }, (#struct){
  1621              c: (string){ string }
  1622            }) }
  1623          three: (#struct){ |((#struct){
  1624              a: (bool){ bool }
  1625            }, (#struct){
  1626              b: (bool){ bool }
  1627            }, (#struct){
  1628              c: (bool){ bool }
  1629            }) }
  1630        }
  1631      }, (#struct){
  1632        c: (#struct){
  1633          one: (#struct){ |((#struct){
  1634              a: (int){ int }
  1635            }, (#struct){
  1636              b: (int){ int }
  1637            }, (#struct){
  1638              c: (int){ int }
  1639            }) }
  1640          two: (#struct){ |((#struct){
  1641              a: (string){ string }
  1642            }, (#struct){
  1643              b: (string){ string }
  1644            }, (#struct){
  1645              c: (string){ string }
  1646            }) }
  1647          three: (#struct){ |((#struct){
  1648              a: (bool){ bool }
  1649            }, (#struct){
  1650              b: (bool){ bool }
  1651            }, (#struct){
  1652              c: (bool){ bool }
  1653            }) }
  1654        }
  1655      }) }
  1656    #D3: (#struct){
  1657      one: (#struct){ |((#struct){
  1658          a: (int){ int }
  1659        }, (#struct){
  1660          b: (int){ int }
  1661        }, (#struct){
  1662          c: (int){ int }
  1663        }) }
  1664      two: (#struct){ |((#struct){
  1665          a: (string){ string }
  1666        }, (#struct){
  1667          b: (string){ string }
  1668        }, (#struct){
  1669          c: (string){ string }
  1670        }) }
  1671      three: (#struct){ |((#struct){
  1672          a: (bool){ bool }
  1673        }, (#struct){
  1674          b: (bool){ bool }
  1675        }, (#struct){
  1676          c: (bool){ bool }
  1677        }) }
  1678    }
  1679    root: (_|_){
  1680      // [structural cycle]
  1681      y: ((list|struct)){ |((#struct){
  1682          a: (#struct){ |((#struct){
  1683              a: (#struct){
  1684                one: (#struct){ |((#struct){
  1685                    a: (int){ int }
  1686                  }, (#struct){
  1687                    b: (int){ int }
  1688                  }, (#struct){
  1689                    c: (int){ int }
  1690                  }) }
  1691                two: (#struct){ |((#struct){
  1692                    a: (string){ string }
  1693                  }, (#struct){
  1694                    b: (string){ string }
  1695                  }, (#struct){
  1696                    c: (string){ string }
  1697                  }) }
  1698                three: (#struct){ |((#struct){
  1699                    a: (bool){ bool }
  1700                  }, (#struct){
  1701                    b: (bool){ bool }
  1702                  }, (#struct){
  1703                    c: (bool){ bool }
  1704                  }) }
  1705              }
  1706            }, (#struct){
  1707              b: (#struct){
  1708                one: (#struct){ |((#struct){
  1709                    a: (int){ int }
  1710                  }, (#struct){
  1711                    b: (int){ int }
  1712                  }, (#struct){
  1713                    c: (int){ int }
  1714                  }) }
  1715                two: (#struct){ |((#struct){
  1716                    a: (string){ string }
  1717                  }, (#struct){
  1718                    b: (string){ string }
  1719                  }, (#struct){
  1720                    c: (string){ string }
  1721                  }) }
  1722                three: (#struct){ |((#struct){
  1723                    a: (bool){ bool }
  1724                  }, (#struct){
  1725                    b: (bool){ bool }
  1726                  }, (#struct){
  1727                    c: (bool){ bool }
  1728                  }) }
  1729              }
  1730            }, (#struct){
  1731              c: (#struct){
  1732                one: (#struct){ |((#struct){
  1733                    a: (int){ int }
  1734                  }, (#struct){
  1735                    b: (int){ int }
  1736                  }, (#struct){
  1737                    c: (int){ int }
  1738                  }) }
  1739                two: (#struct){ |((#struct){
  1740                    a: (string){ string }
  1741                  }, (#struct){
  1742                    b: (string){ string }
  1743                  }, (#struct){
  1744                    c: (string){ string }
  1745                  }) }
  1746                three: (#struct){ |((#struct){
  1747                    a: (bool){ bool }
  1748                  }, (#struct){
  1749                    b: (bool){ bool }
  1750                  }, (#struct){
  1751                    c: (bool){ bool }
  1752                  }) }
  1753              }
  1754            }) }
  1755        }, (#struct){
  1756          b: (#struct){ |((#struct){
  1757              a: (#struct){
  1758                one: (#struct){ |((#struct){
  1759                    a: (int){ int }
  1760                  }, (#struct){
  1761                    b: (int){ int }
  1762                  }, (#struct){
  1763                    c: (int){ int }
  1764                  }) }
  1765                two: (#struct){ |((#struct){
  1766                    a: (string){ string }
  1767                  }, (#struct){
  1768                    b: (string){ string }
  1769                  }, (#struct){
  1770                    c: (string){ string }
  1771                  }) }
  1772                three: (#struct){ |((#struct){
  1773                    a: (bool){ bool }
  1774                  }, (#struct){
  1775                    b: (bool){ bool }
  1776                  }, (#struct){
  1777                    c: (bool){ bool }
  1778                  }) }
  1779              }
  1780            }, (#struct){
  1781              b: (#struct){
  1782                one: (#struct){ |((#struct){
  1783                    a: (int){ int }
  1784                  }, (#struct){
  1785                    b: (int){ int }
  1786                  }, (#struct){
  1787                    c: (int){ int }
  1788                  }) }
  1789                two: (#struct){ |((#struct){
  1790                    a: (string){ string }
  1791                  }, (#struct){
  1792                    b: (string){ string }
  1793                  }, (#struct){
  1794                    c: (string){ string }
  1795                  }) }
  1796                three: (#struct){ |((#struct){
  1797                    a: (bool){ bool }
  1798                  }, (#struct){
  1799                    b: (bool){ bool }
  1800                  }, (#struct){
  1801                    c: (bool){ bool }
  1802                  }) }
  1803              }
  1804            }, (#struct){
  1805              c: (#struct){
  1806                one: (#struct){ |((#struct){
  1807                    a: (int){ int }
  1808                  }, (#struct){
  1809                    b: (int){ int }
  1810                  }, (#struct){
  1811                    c: (int){ int }
  1812                  }) }
  1813                two: (#struct){ |((#struct){
  1814                    a: (string){ string }
  1815                  }, (#struct){
  1816                    b: (string){ string }
  1817                  }, (#struct){
  1818                    c: (string){ string }
  1819                  }) }
  1820                three: (#struct){ |((#struct){
  1821                    a: (bool){ bool }
  1822                  }, (#struct){
  1823                    b: (bool){ bool }
  1824                  }, (#struct){
  1825                    c: (bool){ bool }
  1826                  }) }
  1827              }
  1828            }) }
  1829        }, (#struct){
  1830          c: (#struct){ |((#struct){
  1831              a: (#struct){
  1832                one: (#struct){ |((#struct){
  1833                    a: (int){ int }
  1834                  }, (#struct){
  1835                    b: (int){ int }
  1836                  }, (#struct){
  1837                    c: (int){ int }
  1838                  }) }
  1839                two: (#struct){ |((#struct){
  1840                    a: (string){ string }
  1841                  }, (#struct){
  1842                    b: (string){ string }
  1843                  }, (#struct){
  1844                    c: (string){ string }
  1845                  }) }
  1846                three: (#struct){ |((#struct){
  1847                    a: (bool){ bool }
  1848                  }, (#struct){
  1849                    b: (bool){ bool }
  1850                  }, (#struct){
  1851                    c: (bool){ bool }
  1852                  }) }
  1853              }
  1854            }, (#struct){
  1855              b: (#struct){
  1856                one: (#struct){ |((#struct){
  1857                    a: (int){ int }
  1858                  }, (#struct){
  1859                    b: (int){ int }
  1860                  }, (#struct){
  1861                    c: (int){ int }
  1862                  }) }
  1863                two: (#struct){ |((#struct){
  1864                    a: (string){ string }
  1865                  }, (#struct){
  1866                    b: (string){ string }
  1867                  }, (#struct){
  1868                    c: (string){ string }
  1869                  }) }
  1870                three: (#struct){ |((#struct){
  1871                    a: (bool){ bool }
  1872                  }, (#struct){
  1873                    b: (bool){ bool }
  1874                  }, (#struct){
  1875                    c: (bool){ bool }
  1876                  }) }
  1877              }
  1878            }, (#struct){
  1879              c: (#struct){
  1880                one: (#struct){ |((#struct){
  1881                    a: (int){ int }
  1882                  }, (#struct){
  1883                    b: (int){ int }
  1884                  }, (#struct){
  1885                    c: (int){ int }
  1886                  }) }
  1887                two: (#struct){ |((#struct){
  1888                    a: (string){ string }
  1889                  }, (#struct){
  1890                    b: (string){ string }
  1891                  }, (#struct){
  1892                    c: (string){ string }
  1893                  }) }
  1894                three: (#struct){ |((#struct){
  1895                    a: (bool){ bool }
  1896                  }, (#struct){
  1897                    b: (bool){ bool }
  1898                  }, (#struct){
  1899                    c: (bool){ bool }
  1900                  }) }
  1901              }
  1902            }) }
  1903        }, (#list){
  1904          0: (#struct){ |((#struct){
  1905              a: (#struct){ |((#struct){
  1906                  a: (#struct){
  1907                    one: (#struct){ |((#struct){
  1908                        a: (int){ int }
  1909                      }, (#struct){
  1910                        b: (int){ int }
  1911                      }, (#struct){
  1912                        c: (int){ int }
  1913                      }) }
  1914                    two: (#struct){ |((#struct){
  1915                        a: (string){ string }
  1916                      }, (#struct){
  1917                        b: (string){ string }
  1918                      }, (#struct){
  1919                        c: (string){ string }
  1920                      }) }
  1921                    three: (#struct){ |((#struct){
  1922                        a: (bool){ bool }
  1923                      }, (#struct){
  1924                        b: (bool){ bool }
  1925                      }, (#struct){
  1926                        c: (bool){ bool }
  1927                      }) }
  1928                  }
  1929                }, (#struct){
  1930                  b: (#struct){
  1931                    one: (#struct){ |((#struct){
  1932                        a: (int){ int }
  1933                      }, (#struct){
  1934                        b: (int){ int }
  1935                      }, (#struct){
  1936                        c: (int){ int }
  1937                      }) }
  1938                    two: (#struct){ |((#struct){
  1939                        a: (string){ string }
  1940                      }, (#struct){
  1941                        b: (string){ string }
  1942                      }, (#struct){
  1943                        c: (string){ string }
  1944                      }) }
  1945                    three: (#struct){ |((#struct){
  1946                        a: (bool){ bool }
  1947                      }, (#struct){
  1948                        b: (bool){ bool }
  1949                      }, (#struct){
  1950                        c: (bool){ bool }
  1951                      }) }
  1952                  }
  1953                }, (#struct){
  1954                  c: (#struct){
  1955                    one: (#struct){ |((#struct){
  1956                        a: (int){ int }
  1957                      }, (#struct){
  1958                        b: (int){ int }
  1959                      }, (#struct){
  1960                        c: (int){ int }
  1961                      }) }
  1962                    two: (#struct){ |((#struct){
  1963                        a: (string){ string }
  1964                      }, (#struct){
  1965                        b: (string){ string }
  1966                      }, (#struct){
  1967                        c: (string){ string }
  1968                      }) }
  1969                    three: (#struct){ |((#struct){
  1970                        a: (bool){ bool }
  1971                      }, (#struct){
  1972                        b: (bool){ bool }
  1973                      }, (#struct){
  1974                        c: (bool){ bool }
  1975                      }) }
  1976                  }
  1977                }) }
  1978            }, (#struct){
  1979              b: (#struct){ |((#struct){
  1980                  a: (#struct){
  1981                    one: (#struct){ |((#struct){
  1982                        a: (int){ int }
  1983                      }, (#struct){
  1984                        b: (int){ int }
  1985                      }, (#struct){
  1986                        c: (int){ int }
  1987                      }) }
  1988                    two: (#struct){ |((#struct){
  1989                        a: (string){ string }
  1990                      }, (#struct){
  1991                        b: (string){ string }
  1992                      }, (#struct){
  1993                        c: (string){ string }
  1994                      }) }
  1995                    three: (#struct){ |((#struct){
  1996                        a: (bool){ bool }
  1997                      }, (#struct){
  1998                        b: (bool){ bool }
  1999                      }, (#struct){
  2000                        c: (bool){ bool }
  2001                      }) }
  2002                  }
  2003                }, (#struct){
  2004                  b: (#struct){
  2005                    one: (#struct){ |((#struct){
  2006                        a: (int){ int }
  2007                      }, (#struct){
  2008                        b: (int){ int }
  2009                      }, (#struct){
  2010                        c: (int){ int }
  2011                      }) }
  2012                    two: (#struct){ |((#struct){
  2013                        a: (string){ string }
  2014                      }, (#struct){
  2015                        b: (string){ string }
  2016                      }, (#struct){
  2017                        c: (string){ string }
  2018                      }) }
  2019                    three: (#struct){ |((#struct){
  2020                        a: (bool){ bool }
  2021                      }, (#struct){
  2022                        b: (bool){ bool }
  2023                      }, (#struct){
  2024                        c: (bool){ bool }
  2025                      }) }
  2026                  }
  2027                }, (#struct){
  2028                  c: (#struct){
  2029                    one: (#struct){ |((#struct){
  2030                        a: (int){ int }
  2031                      }, (#struct){
  2032                        b: (int){ int }
  2033                      }, (#struct){
  2034                        c: (int){ int }
  2035                      }) }
  2036                    two: (#struct){ |((#struct){
  2037                        a: (string){ string }
  2038                      }, (#struct){
  2039                        b: (string){ string }
  2040                      }, (#struct){
  2041                        c: (string){ string }
  2042                      }) }
  2043                    three: (#struct){ |((#struct){
  2044                        a: (bool){ bool }
  2045                      }, (#struct){
  2046                        b: (bool){ bool }
  2047                      }, (#struct){
  2048                        c: (bool){ bool }
  2049                      }) }
  2050                  }
  2051                }) }
  2052            }, (#struct){
  2053              c: (#struct){ |((#struct){
  2054                  a: (#struct){
  2055                    one: (#struct){ |((#struct){
  2056                        a: (int){ int }
  2057                      }, (#struct){
  2058                        b: (int){ int }
  2059                      }, (#struct){
  2060                        c: (int){ int }
  2061                      }) }
  2062                    two: (#struct){ |((#struct){
  2063                        a: (string){ string }
  2064                      }, (#struct){
  2065                        b: (string){ string }
  2066                      }, (#struct){
  2067                        c: (string){ string }
  2068                      }) }
  2069                    three: (#struct){ |((#struct){
  2070                        a: (bool){ bool }
  2071                      }, (#struct){
  2072                        b: (bool){ bool }
  2073                      }, (#struct){
  2074                        c: (bool){ bool }
  2075                      }) }
  2076                  }
  2077                }, (#struct){
  2078                  b: (#struct){
  2079                    one: (#struct){ |((#struct){
  2080                        a: (int){ int }
  2081                      }, (#struct){
  2082                        b: (int){ int }
  2083                      }, (#struct){
  2084                        c: (int){ int }
  2085                      }) }
  2086                    two: (#struct){ |((#struct){
  2087                        a: (string){ string }
  2088                      }, (#struct){
  2089                        b: (string){ string }
  2090                      }, (#struct){
  2091                        c: (string){ string }
  2092                      }) }
  2093                    three: (#struct){ |((#struct){
  2094                        a: (bool){ bool }
  2095                      }, (#struct){
  2096                        b: (bool){ bool }
  2097                      }, (#struct){
  2098                        c: (bool){ bool }
  2099                      }) }
  2100                  }
  2101                }, (#struct){
  2102                  c: (#struct){
  2103                    one: (#struct){ |((#struct){
  2104                        a: (int){ int }
  2105                      }, (#struct){
  2106                        b: (int){ int }
  2107                      }, (#struct){
  2108                        c: (int){ int }
  2109                      }) }
  2110                    two: (#struct){ |((#struct){
  2111                        a: (string){ string }
  2112                      }, (#struct){
  2113                        b: (string){ string }
  2114                      }, (#struct){
  2115                        c: (string){ string }
  2116                      }) }
  2117                    three: (#struct){ |((#struct){
  2118                        a: (bool){ bool }
  2119                      }, (#struct){
  2120                        b: (bool){ bool }
  2121                      }, (#struct){
  2122                        c: (bool){ bool }
  2123                      }) }
  2124                  }
  2125                }) }
  2126            }) }
  2127        }, (struct){
  2128          x: (#struct){ |((#struct){
  2129              a: (#struct){ |((#struct){
  2130                  a: (#struct){
  2131                    one: (#struct){ |((#struct){
  2132                        a: (int){ int }
  2133                      }, (#struct){
  2134                        b: (int){ int }
  2135                      }, (#struct){
  2136                        c: (int){ int }
  2137                      }) }
  2138                    two: (#struct){ |((#struct){
  2139                        a: (string){ string }
  2140                      }, (#struct){
  2141                        b: (string){ string }
  2142                      }, (#struct){
  2143                        c: (string){ string }
  2144                      }) }
  2145                    three: (#struct){ |((#struct){
  2146                        a: (bool){ bool }
  2147                      }, (#struct){
  2148                        b: (bool){ bool }
  2149                      }, (#struct){
  2150                        c: (bool){ bool }
  2151                      }) }
  2152                  }
  2153                }, (#struct){
  2154                  b: (#struct){
  2155                    one: (#struct){ |((#struct){
  2156                        a: (int){ int }
  2157                      }, (#struct){
  2158                        b: (int){ int }
  2159                      }, (#struct){
  2160                        c: (int){ int }
  2161                      }) }
  2162                    two: (#struct){ |((#struct){
  2163                        a: (string){ string }
  2164                      }, (#struct){
  2165                        b: (string){ string }
  2166                      }, (#struct){
  2167                        c: (string){ string }
  2168                      }) }
  2169                    three: (#struct){ |((#struct){
  2170                        a: (bool){ bool }
  2171                      }, (#struct){
  2172                        b: (bool){ bool }
  2173                      }, (#struct){
  2174                        c: (bool){ bool }
  2175                      }) }
  2176                  }
  2177                }, (#struct){
  2178                  c: (#struct){
  2179                    one: (#struct){ |((#struct){
  2180                        a: (int){ int }
  2181                      }, (#struct){
  2182                        b: (int){ int }
  2183                      }, (#struct){
  2184                        c: (int){ int }
  2185                      }) }
  2186                    two: (#struct){ |((#struct){
  2187                        a: (string){ string }
  2188                      }, (#struct){
  2189                        b: (string){ string }
  2190                      }, (#struct){
  2191                        c: (string){ string }
  2192                      }) }
  2193                    three: (#struct){ |((#struct){
  2194                        a: (bool){ bool }
  2195                      }, (#struct){
  2196                        b: (bool){ bool }
  2197                      }, (#struct){
  2198                        c: (bool){ bool }
  2199                      }) }
  2200                  }
  2201                }) }
  2202            }, (#struct){
  2203              b: (#struct){ |((#struct){
  2204                  a: (#struct){
  2205                    one: (#struct){ |((#struct){
  2206                        a: (int){ int }
  2207                      }, (#struct){
  2208                        b: (int){ int }
  2209                      }, (#struct){
  2210                        c: (int){ int }
  2211                      }) }
  2212                    two: (#struct){ |((#struct){
  2213                        a: (string){ string }
  2214                      }, (#struct){
  2215                        b: (string){ string }
  2216                      }, (#struct){
  2217                        c: (string){ string }
  2218                      }) }
  2219                    three: (#struct){ |((#struct){
  2220                        a: (bool){ bool }
  2221                      }, (#struct){
  2222                        b: (bool){ bool }
  2223                      }, (#struct){
  2224                        c: (bool){ bool }
  2225                      }) }
  2226                  }
  2227                }, (#struct){
  2228                  b: (#struct){
  2229                    one: (#struct){ |((#struct){
  2230                        a: (int){ int }
  2231                      }, (#struct){
  2232                        b: (int){ int }
  2233                      }, (#struct){
  2234                        c: (int){ int }
  2235                      }) }
  2236                    two: (#struct){ |((#struct){
  2237                        a: (string){ string }
  2238                      }, (#struct){
  2239                        b: (string){ string }
  2240                      }, (#struct){
  2241                        c: (string){ string }
  2242                      }) }
  2243                    three: (#struct){ |((#struct){
  2244                        a: (bool){ bool }
  2245                      }, (#struct){
  2246                        b: (bool){ bool }
  2247                      }, (#struct){
  2248                        c: (bool){ bool }
  2249                      }) }
  2250                  }
  2251                }, (#struct){
  2252                  c: (#struct){
  2253                    one: (#struct){ |((#struct){
  2254                        a: (int){ int }
  2255                      }, (#struct){
  2256                        b: (int){ int }
  2257                      }, (#struct){
  2258                        c: (int){ int }
  2259                      }) }
  2260                    two: (#struct){ |((#struct){
  2261                        a: (string){ string }
  2262                      }, (#struct){
  2263                        b: (string){ string }
  2264                      }, (#struct){
  2265                        c: (string){ string }
  2266                      }) }
  2267                    three: (#struct){ |((#struct){
  2268                        a: (bool){ bool }
  2269                      }, (#struct){
  2270                        b: (bool){ bool }
  2271                      }, (#struct){
  2272                        c: (bool){ bool }
  2273                      }) }
  2274                  }
  2275                }) }
  2276            }, (#struct){
  2277              c: (#struct){ |((#struct){
  2278                  a: (#struct){
  2279                    one: (#struct){ |((#struct){
  2280                        a: (int){ int }
  2281                      }, (#struct){
  2282                        b: (int){ int }
  2283                      }, (#struct){
  2284                        c: (int){ int }
  2285                      }) }
  2286                    two: (#struct){ |((#struct){
  2287                        a: (string){ string }
  2288                      }, (#struct){
  2289                        b: (string){ string }
  2290                      }, (#struct){
  2291                        c: (string){ string }
  2292                      }) }
  2293                    three: (#struct){ |((#struct){
  2294                        a: (bool){ bool }
  2295                      }, (#struct){
  2296                        b: (bool){ bool }
  2297                      }, (#struct){
  2298                        c: (bool){ bool }
  2299                      }) }
  2300                  }
  2301                }, (#struct){
  2302                  b: (#struct){
  2303                    one: (#struct){ |((#struct){
  2304                        a: (int){ int }
  2305                      }, (#struct){
  2306                        b: (int){ int }
  2307                      }, (#struct){
  2308                        c: (int){ int }
  2309                      }) }
  2310                    two: (#struct){ |((#struct){
  2311                        a: (string){ string }
  2312                      }, (#struct){
  2313                        b: (string){ string }
  2314                      }, (#struct){
  2315                        c: (string){ string }
  2316                      }) }
  2317                    three: (#struct){ |((#struct){
  2318                        a: (bool){ bool }
  2319                      }, (#struct){
  2320                        b: (bool){ bool }
  2321                      }, (#struct){
  2322                        c: (bool){ bool }
  2323                      }) }
  2324                  }
  2325                }, (#struct){
  2326                  c: (#struct){
  2327                    one: (#struct){ |((#struct){
  2328                        a: (int){ int }
  2329                      }, (#struct){
  2330                        b: (int){ int }
  2331                      }, (#struct){
  2332                        c: (int){ int }
  2333                      }) }
  2334                    two: (#struct){ |((#struct){
  2335                        a: (string){ string }
  2336                      }, (#struct){
  2337                        b: (string){ string }
  2338                      }, (#struct){
  2339                        c: (string){ string }
  2340                      }) }
  2341                    three: (#struct){ |((#struct){
  2342                        a: (bool){ bool }
  2343                      }, (#struct){
  2344                        b: (bool){ bool }
  2345                      }, (#struct){
  2346                        c: (bool){ bool }
  2347                      }) }
  2348                  }
  2349                }) }
  2350            }) }
  2351        }) }
  2352      x: (struct){
  2353        empty: (struct){
  2354        }
  2355      }
  2356      "0": (struct){
  2357        data: (struct){
  2358        }
  2359      }
  2360      "1": (struct){
  2361        data: (struct){
  2362        }
  2363      }
  2364      "2": (_|_){
  2365        // [structural cycle]
  2366        data: (_|_){
  2367          // [structural cycle] root_2: structural cycle:
  2368          //     ./in.cue:19:18
  2369        }
  2370      }
  2371      "3": (_|_){
  2372        // [structural cycle]
  2373        data: (_|_){
  2374          // [structural cycle] root_2: structural cycle:
  2375          //     ./in.cue:19:18
  2376        }
  2377      }
  2378    }
  2379    let root_0#1 = (_|_){
  2380      // [structural cycle] root_0: structural cycle:
  2381      //     ./in.cue:17:18
  2382    }
  2383    let root_1#2 = (_|_){
  2384      // [structural cycle] root_1: structural cycle:
  2385      //     ./in.cue:18:18
  2386    }
  2387    root_2: (_|_){
  2388      // [structural cycle] root_2: structural cycle:
  2389      //     ./in.cue:19:18
  2390    }
  2391    root_3: (_|_){
  2392      // [structural cycle]
  2393    }
  2394  }
  2395  -- out/compile --
  2396  --- in.cue
  2397  {
  2398    #D1: ({
  2399      a: 〈1;#D2〉
  2400    }|{
  2401      b: 〈1;#D2〉
  2402    }|{
  2403      c: 〈1;#D2〉
  2404    })
  2405    #D2: ({
  2406      a: 〈1;#D3〉
  2407    }|{
  2408      b: 〈1;#D3〉
  2409    }|{
  2410      c: 〈1;#D3〉
  2411    })
  2412    #D3: {
  2413      one: ({
  2414        a: int
  2415      }|{
  2416        b: int
  2417      }|{
  2418        c: int
  2419      })
  2420      two: ({
  2421        a: string
  2422      }|{
  2423        b: string
  2424      }|{
  2425        c: string
  2426      })
  2427      three: ({
  2428        a: bool
  2429      }|{
  2430        b: bool
  2431      }|{
  2432        c: bool
  2433      })
  2434    }
  2435    root: {
  2436      y: (〈1;#D1〉|[
  2437        〈2;#D1〉,
  2438      ]|{
  2439        x: 〈2;#D1〉
  2440      })
  2441    }
  2442    root: {
  2443      x: {
  2444        empty: {}
  2445      }
  2446    }
  2447    root: {
  2448      "0": {
  2449        data: 〈2;let root_0#1〉.x.empty
  2450      }
  2451    }
  2452    root: {
  2453      "1": {
  2454        data: 〈2;let root_1#2〉.x.empty
  2455      }
  2456    }
  2457    root: {
  2458      "2": {
  2459        data: 〈2;root_2〉.x.empty
  2460      }
  2461    }
  2462    root: {
  2463      "3": {
  2464        data: 〈2;root_3〉.x.empty
  2465      }
  2466    }
  2467    let root_0#1 = 〈0;root〉
  2468    let root_1#2 = 〈0;root〉
  2469    root_2: 〈0;root〉
  2470    root_3: 〈0;root〉
  2471  }