
-- in.cue --
t1: p1: {
	a
	a: a: 2|1
}
t1: p2: {
	a: a: 2|1
	a
}
t2: p1: {
	d: d.a
	d: a: a: 2|1
}
t2: p2: {
	d: d.a
	d: a: a: 2|1
}
t3: p1: {
	b: a
	b: (1|2) | 2
	a: 1 | 2
}
t3: p2: {
	b: (1|2) | 2
	a: 1 | 2
	b: a
}
-- issue3437.cue --
issue3437: {
	r: L=L.a
	d: a: a: a: {b: 4}|d
	out: r&d
}
-- out/evalalpha --
Errors:
t1.p1: 2 errors in empty disjunction:
t1.p1: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:3:5
    ./in.cue:3:10
t1.p1: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:3:5
    ./in.cue:3:8
t1.p2: 2 errors in empty disjunction:
t1.p2: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:6:5
    ./in.cue:6:10
t1.p2: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:6:5
    ./in.cue:6:8
t2.p1.d: 2 errors in empty disjunction:
t2.p1.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:11:8
    ./in.cue:11:13
t2.p1.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:11:8
    ./in.cue:11:11
t2.p2.d: 2 errors in empty disjunction:
t2.p2.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:15:8
    ./in.cue:15:13
t2.p2.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:15:8
    ./in.cue:15:11

Result:
(_|_){
  // [eval]
  t1: (_|_){
    // [eval]
    p1: (_|_){
      // [eval] t1.p1: 2 errors in empty disjunction:
      // t1.p1: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:3:5
      //     ./in.cue:3:10
      // t1.p1: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:3:5
      //     ./in.cue:3:8
      a: (struct){
        a: (_){ _ }
      }
    }
    p2: (_|_){
      // [eval] t1.p2: 2 errors in empty disjunction:
      // t1.p2: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:6:5
      //     ./in.cue:6:10
      // t1.p2: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:6:5
      //     ./in.cue:6:8
      a: (struct){
        a: (_){ _ }
      }
    }
  }
  t2: (_|_){
    // [eval]
    p1: (_|_){
      // [eval]
      d: (_|_){
        // [eval] t2.p1.d: 2 errors in empty disjunction:
        // t2.p1.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:11:8
        //     ./in.cue:11:13
        // t2.p1.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:11:8
        //     ./in.cue:11:11
        a: (struct){
          a: (_){ _ }
        }
      }
    }
    p2: (_|_){
      // [eval]
      d: (_|_){
        // [eval] t2.p2.d: 2 errors in empty disjunction:
        // t2.p2.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:15:8
        //     ./in.cue:15:13
        // t2.p2.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:15:8
        //     ./in.cue:15:11
        a: (struct){
          a: (_){ _ }
        }
      }
    }
  }
  t3: (struct){
    p1: (struct){
      b: (int){ |((int){ 1 }, (int){ 2 }) }
      a: (int){ |((int){ 1 }, (int){ 2 }) }
    }
    p2: (struct){
      b: (int){ |((int){ 1 }, (int){ 2 }) }
      a: (int){ |((int){ 1 }, (int){ 2 }) }
    }
  }
  issue3437: (struct){
    r: (_|_){
      // [cycle] issue3437.r: cycle error referencing a:
      //     ./issue3437.cue:2:9
    }
    d: (struct){
      a: (struct){
        a: (struct){
          a: (struct){
            b: (int){ 4 }
          }
        }
      }
    }
    out: (struct){ |((struct){
        a: (struct){ |((struct){
            a: (struct){ |((struct){
                a: (struct){ |((struct){
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){
                      a: (struct){
                        a: (struct){ |((struct){
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){
                              a: (struct){
                                a: (struct){
                                  b: (int){ 4 }
                                }
                              }
                            }
                          }) }
                      }
                    }
                  }) }
                b: (int){ 4 }
              }, (struct){
                a: (struct){ |((struct){
                    a: (struct){
                      a: (struct){ |((struct){
                          b: (int){ 4 }
                        }, (struct){
                          a: (struct){
                            a: (struct){
                              a: (struct){ |((struct){
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                  }
                                }) }
                            }
                          }
                        }) }
                    }
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){
                      a: (struct){ |((struct){
                          a: (struct){ |((struct){
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){
                                a: (struct){
                                  a: (struct){
                                    b: (int){ 4 }
                                  }
                                }
                              }
                            }) }
                          b: (int){ 4 }
                        }, (struct){
                          a: (struct){ |((struct){
                              a: (struct){
                                a: (struct){ |((struct){
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                    }
                                  }) }
                              }
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){
                                a: (struct){ |((struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                      b: (int){ 4 }
                                    }
                                  }) }
                              }
                            }) }
                        }) }
                    }
                  }) }
              }) }
            b: (int){ 4 }
          }, (struct){
            a: (struct){ |((struct){
                a: (struct){ |((struct){
                    a: (struct){ |((struct){
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){
                          a: (struct){
                            a: (struct){ |((struct){
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){
                                  a: (struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                  }
                                }
                              }) }
                          }
                        }
                      }) }
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){ |((struct){
                        a: (struct){
                          a: (struct){ |((struct){
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){
                                a: (struct){
                                  a: (struct){
                                    b: (int){ 4 }
                                  }
                                }
                              }
                            }) }
                        }
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){
                          a: (struct){ |((struct){
                              a: (struct){ |((struct){
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                  }
                                }) }
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){ |((struct){
                                  a: (struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                  }
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                      b: (int){ 4 }
                                    }
                                  }
                                }) }
                            }) }
                        }
                      }) }
                  }) }
                b: (int){ 4 }
              }, (struct){
                a: (struct){ |((struct){
                    a: (struct){ |((struct){
                        a: (struct){ |((struct){
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){
                              a: (struct){
                                a: (struct){ |((struct){
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                    }
                                  }) }
                              }
                            }
                          }) }
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){ |((struct){
                            a: (struct){
                              a: (struct){ |((struct){
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                  }
                                }) }
                            }
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){
                              a: (struct){ |((struct){
                                  a: (struct){ |((struct){
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                      }
                                    }) }
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){ |((struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                          b: (int){ 4 }
                                        }
                                      }
                                    }) }
                                }) }
                            }
                          }) }
                      }) }
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){ |((struct){
                        a: (struct){ |((struct){
                            a: (struct){ |((struct){
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){
                                  a: (struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                  }
                                }
                              }) }
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){ |((struct){
                                a: (struct){
                                  a: (struct){ |((struct){
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                      }
                                    }) }
                                }
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){
                                  a: (struct){ |((struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                        b: (int){ 4 }
                                      }
                                    }) }
                                }
                              }) }
                          }) }
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){ |((struct){
                            a: (struct){ |((struct){
                                a: (struct){ |((struct){
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                    }
                                  }) }
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){ |((struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                        b: (int){ 4 }
                                      }
                                    }
                                  }) }
                              }) }
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){ |((struct){
                                a: (struct){ |((struct){
                                    a: (struct){ |((struct){
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                          }
                                        }
                                      }) }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){ |((struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                            b: (int){ 4 }
                                          }
                                        }
                                      }) }
                                  }) }
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){ |((struct){
                                    a: (struct){ |((struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                          }
                                          b: (int){ 4 }
                                        }
                                      }) }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){ |((struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                          b: (int){ 4 }
                                        }
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                            b: (int){ 4 }
                                          }
                                          b: (int){ 4 }
                                        }
                                      }) }
                                  }) }
                              }) }
                          }) }
                      }) }
                  }) }
              }) }
          }) }
        b: (int){ 4 }
      }, (struct){
        a: (struct){ |((struct){
            a: (struct){ |((struct){
                a: (struct){ |((struct){
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){
                      a: (struct){
                        a: (struct){ |((struct){
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){
                              a: (struct){
                                a: (struct){
                                  b: (int){ 4 }
                                }
                              }
                            }
                          }) }
                      }
                    }
                  }) }
                b: (int){ 4 }
              }, (struct){
                a: (struct){ |((struct){
                    a: (struct){
                      a: (struct){ |((struct){
                          b: (int){ 4 }
                        }, (struct){
                          a: (struct){
                            a: (struct){
                              a: (struct){ |((struct){
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                  }
                                }) }
                            }
                          }
                        }) }
                    }
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){
                      a: (struct){ |((struct){
                          a: (struct){ |((struct){
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){
                                a: (struct){
                                  a: (struct){
                                    b: (int){ 4 }
                                  }
                                }
                              }
                            }) }
                          b: (int){ 4 }
                        }, (struct){
                          a: (struct){ |((struct){
                              a: (struct){
                                a: (struct){ |((struct){
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                    }
                                  }) }
                              }
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){
                                a: (struct){ |((struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                      b: (int){ 4 }
                                    }
                                  }) }
                              }
                            }) }
                        }) }
                    }
                  }) }
              }) }
            b: (int){ 4 }
          }, (struct){
            a: (struct){ |((struct){
                a: (struct){ |((struct){
                    a: (struct){ |((struct){
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){
                          a: (struct){
                            a: (struct){ |((struct){
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){
                                  a: (struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                  }
                                }
                              }) }
                          }
                        }
                      }) }
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){ |((struct){
                        a: (struct){
                          a: (struct){ |((struct){
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){
                                a: (struct){
                                  a: (struct){
                                    b: (int){ 4 }
                                  }
                                }
                              }
                            }) }
                        }
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){
                          a: (struct){ |((struct){
                              a: (struct){ |((struct){
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                  }
                                }) }
                              b: (int){ 4 }
                            }, (struct){
                              a: (struct){ |((struct){
                                  a: (struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                  }
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                      b: (int){ 4 }
                                    }
                                  }
                                }) }
                            }) }
                        }
                      }) }
                  }) }
                b: (int){ 4 }
              }, (struct){
                a: (struct){ |((struct){
                    a: (struct){ |((struct){
                        a: (struct){ |((struct){
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){
                              a: (struct){
                                a: (struct){ |((struct){
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                    }
                                  }) }
                              }
                            }
                          }) }
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){ |((struct){
                            a: (struct){
                              a: (struct){ |((struct){
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                  }
                                }) }
                            }
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){
                              a: (struct){ |((struct){
                                  a: (struct){ |((struct){
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                      }
                                    }) }
                                  b: (int){ 4 }
                                }, (struct){
                                  a: (struct){ |((struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                          b: (int){ 4 }
                                        }
                                      }
                                    }) }
                                }) }
                            }
                          }) }
                      }) }
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){ |((struct){
                        a: (struct){ |((struct){
                            a: (struct){ |((struct){
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){
                                  a: (struct){
                                    a: (struct){
                                      b: (int){ 4 }
                                    }
                                  }
                                }
                              }) }
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){ |((struct){
                                a: (struct){
                                  a: (struct){ |((struct){
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                      }
                                    }) }
                                }
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){
                                  a: (struct){ |((struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                      b: (int){ 4 }
                                    }, (struct){
                                      a: (struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                        b: (int){ 4 }
                                      }
                                    }) }
                                }
                              }) }
                          }) }
                        b: (int){ 4 }
                      }, (struct){
                        a: (struct){ |((struct){
                            a: (struct){ |((struct){
                                a: (struct){ |((struct){
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                      }
                                    }
                                  }) }
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){ |((struct){
                                    a: (struct){
                                      a: (struct){
                                        b: (int){ 4 }
                                      }
                                    }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){
                                      a: (struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                        b: (int){ 4 }
                                      }
                                    }
                                  }) }
                              }) }
                            b: (int){ 4 }
                          }, (struct){
                            a: (struct){ |((struct){
                                a: (struct){ |((struct){
                                    a: (struct){ |((struct){
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                          }
                                        }
                                      }) }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){ |((struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                        }
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                            b: (int){ 4 }
                                          }
                                        }
                                      }) }
                                  }) }
                                b: (int){ 4 }
                              }, (struct){
                                a: (struct){ |((struct){
                                    a: (struct){ |((struct){
                                        a: (struct){
                                          b: (int){ 4 }
                                        }
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                          }
                                          b: (int){ 4 }
                                        }
                                      }) }
                                    b: (int){ 4 }
                                  }, (struct){
                                    a: (struct){ |((struct){
                                        a: (struct){
                                          a: (struct){
                                            b: (int){ 4 }
                                          }
                                          b: (int){ 4 }
                                        }
                                        b: (int){ 4 }
                                      }, (struct){
                                        a: (struct){
                                          a: (struct){
                                            a: (struct){
                                              b: (int){ 4 }
                                            }
                                            b: (int){ 4 }
                                          }
                                          b: (int){ 4 }
                                        }
                                      }) }
                                  }) }
                              }) }
                          }) }
                      }) }
                  }) }
              }) }
          }) }
      }) }
  }
}
-- out/compile --
--- in.cue
{
  t1: {
    p1: {
      〈0;a〉
      a: {
        a: (2|1)
      }
    }
  }
  t1: {
    p2: {
      a: {
        a: (2|1)
      }
      〈0;a〉
    }
  }
  t2: {
    p1: {
      d: 〈0;d〉.a
      d: {
        a: {
          a: (2|1)
        }
      }
    }
  }
  t2: {
    p2: {
      d: 〈0;d〉.a
      d: {
        a: {
          a: (2|1)
        }
      }
    }
  }
  t3: {
    p1: {
      b: 〈0;a〉
      b: ((1|2)|2)
      a: (1|2)
    }
  }
  t3: {
    p2: {
      b: ((1|2)|2)
      a: (1|2)
      b: 〈0;a〉
    }
  }
}
--- issue3437.cue
{
  issue3437: {
    r: 〈0〉.a
    d: {
      a: {
        a: {
          a: ({
            b: 4
          }|〈3;d〉)
        }
      }
    }
    out: (〈0;r〉 & 〈0;d〉)
  }
}
-- out/evalalpha/stats --
Leaks:  2072
Freed:  0
Reused: 0
Allocs: 2072
Retain: 0

Unifications: 766
Conjuncts:    2012
Disjuncts:    736

CloseIDElems: 0
NumCloseIDs: 241
-- diff/-out/evalalpha/stats<==>+out/eval/stats --
diff old new
--- old
+++ new
@@ -1,9 +1,12 @@
-Leaks:  34
-Freed:  97
-Reused: 85
-Allocs: 46
-Retain: 5
-
-Unifications: 48
-Conjuncts:    150
-Disjuncts:    111
+Leaks:  2072
+Freed:  0
+Reused: 0
+Allocs: 2072
+Retain: 0
+
+Unifications: 766
+Conjuncts:    2012
+Disjuncts:    736
+
+CloseIDElems: 0
+NumCloseIDs: 241
-- out/eval/stats --
Leaks:  34
Freed:  97
Reused: 85
Allocs: 46
Retain: 5

Unifications: 48
Conjuncts:    150
Disjuncts:    111
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -1,11 +1,9 @@
 Errors:
 t1.p1: 2 errors in empty disjunction:
 t1.p1: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
-    ./in.cue:2:2
     ./in.cue:3:5
     ./in.cue:3:10
 t1.p1: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
-    ./in.cue:2:2
     ./in.cue:3:5
     ./in.cue:3:8
 t1.p2: 2 errors in empty disjunction:
@@ -12,27 +10,21 @@
 t1.p2: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
     ./in.cue:6:5
     ./in.cue:6:10
-    ./in.cue:7:2
 t1.p2: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
     ./in.cue:6:5
     ./in.cue:6:8
-    ./in.cue:7:2
 t2.p1.d: 2 errors in empty disjunction:
 t2.p1.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
-    ./in.cue:10:5
     ./in.cue:11:8
     ./in.cue:11:13
 t2.p1.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
-    ./in.cue:10:5
     ./in.cue:11:8
     ./in.cue:11:11
 t2.p2.d: 2 errors in empty disjunction:
 t2.p2.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
-    ./in.cue:14:5
     ./in.cue:15:8
     ./in.cue:15:13
 t2.p2.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
-    ./in.cue:14:5
     ./in.cue:15:8
     ./in.cue:15:11
 
@@ -44,15 +36,13 @@
     p1: (_|_){
       // [eval] t1.p1: 2 errors in empty disjunction:
       // t1.p1: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
-      //     ./in.cue:2:2
       //     ./in.cue:3:5
       //     ./in.cue:3:10
       // t1.p1: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
-      //     ./in.cue:2:2
       //     ./in.cue:3:5
       //     ./in.cue:3:8
       a: (struct){
-        a: (int){ |((int){ 2 }, (int){ 1 }) }
+        a: (_){ _ }
       }
     }
     p2: (_|_){
@@ -60,13 +50,11 @@
       // t1.p2: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
       //     ./in.cue:6:5
       //     ./in.cue:6:10
-      //     ./in.cue:7:2
       // t1.p2: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
       //     ./in.cue:6:5
       //     ./in.cue:6:8
-      //     ./in.cue:7:2
-      a: (struct){
-        a: (int){ |((int){ 2 }, (int){ 1 }) }
+      a: (struct){
+        a: (_){ _ }
       }
     }
   }
@@ -77,15 +65,13 @@
       d: (_|_){
         // [eval] t2.p1.d: 2 errors in empty disjunction:
         // t2.p1.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
-        //     ./in.cue:10:5
         //     ./in.cue:11:8
         //     ./in.cue:11:13
         // t2.p1.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
-        //     ./in.cue:10:5
         //     ./in.cue:11:8
         //     ./in.cue:11:11
         a: (struct){
-          a: (int){ |((int){ 2 }, (int){ 1 }) }
+          a: (_){ _ }
         }
       }
     }
@@ -94,15 +80,13 @@
       d: (_|_){
         // [eval] t2.p2.d: 2 errors in empty disjunction:
         // t2.p2.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
-        //     ./in.cue:14:5
         //     ./in.cue:15:8
         //     ./in.cue:15:13
         // t2.p2.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
-        //     ./in.cue:14:5
         //     ./in.cue:15:8
         //     ./in.cue:15:11
         a: (struct){
-          a: (int){ |((int){ 2 }, (int){ 1 }) }
+          a: (_){ _ }
         }
       }
     }
@@ -119,7 +103,7 @@
   }
   issue3437: (struct){
     r: (_|_){
-      // [incomplete] issue3437.r: cycle error referencing a:
+      // [cycle] issue3437.r: cycle error referencing a:
       //     ./issue3437.cue:2:9
     }
     d: (struct){
@@ -131,33 +115,853 @@
         }
       }
     }
-    out: (struct){
-      a: (struct){
-        a: (struct){ |((struct){
-            a: (struct){
-              b: (int){ 4 }
-            }
-            b: (int){ 4 }
-          }, (struct){
-            a: (struct){
-              a: (struct){
-                a: (struct){ |((struct){
-                    b: (int){ 4 }
-                  }, (struct){
-                    a: (struct){
-                      a: (struct){
-                        a: (struct){
-                          b: (int){ 4 }
-                        }
-                      }
-                    }
-                  }) }
-              }
-              b: (int){ 4 }
-            }
-          }) }
-      }
-      b: (int){ 4 }
-    }
+    out: (struct){ |((struct){
+        a: (struct){ |((struct){
+            a: (struct){ |((struct){
+                a: (struct){ |((struct){
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){
+                      a: (struct){
+                        a: (struct){ |((struct){
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){
+                              a: (struct){
+                                a: (struct){
+                                  b: (int){ 4 }
+                                }
+                              }
+                            }
+                          }) }
+                      }
+                    }
+                  }) }
+                b: (int){ 4 }
+              }, (struct){
+                a: (struct){ |((struct){
+                    a: (struct){
+                      a: (struct){ |((struct){
+                          b: (int){ 4 }
+                        }, (struct){
+                          a: (struct){
+                            a: (struct){
+                              a: (struct){ |((struct){
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }
+                                }) }
+                            }
+                          }
+                        }) }
+                    }
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){
+                      a: (struct){ |((struct){
+                          a: (struct){ |((struct){
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    b: (int){ 4 }
+                                  }
+                                }
+                              }
+                            }) }
+                          b: (int){ 4 }
+                        }, (struct){
+                          a: (struct){ |((struct){
+                              a: (struct){
+                                a: (struct){ |((struct){
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }
+                                  }) }
+                              }
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                      b: (int){ 4 }
+                                    }
+                                  }) }
+                              }
+                            }) }
+                        }) }
+                    }
+                  }) }
+              }) }
+            b: (int){ 4 }
+          }, (struct){
+            a: (struct){ |((struct){
+                a: (struct){ |((struct){
+                    a: (struct){ |((struct){
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){
+                          a: (struct){
+                            a: (struct){ |((struct){
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                }
+                              }) }
+                          }
+                        }
+                      }) }
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){ |((struct){
+                        a: (struct){
+                          a: (struct){ |((struct){
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    b: (int){ 4 }
+                                  }
+                                }
+                              }
+                            }) }
+                        }
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){
+                          a: (struct){ |((struct){
+                              a: (struct){ |((struct){
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }
+                                }) }
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){ |((struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                }) }
+                            }) }
+                        }
+                      }) }
+                  }) }
+                b: (int){ 4 }
+              }, (struct){
+                a: (struct){ |((struct){
+                    a: (struct){ |((struct){
+                        a: (struct){ |((struct){
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){
+                              a: (struct){
+                                a: (struct){ |((struct){
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }
+                                  }) }
+                              }
+                            }
+                          }) }
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){ |((struct){
+                            a: (struct){
+                              a: (struct){ |((struct){
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }
+                                }) }
+                            }
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){
+                              a: (struct){ |((struct){
+                                  a: (struct){ |((struct){
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                      }
+                                    }) }
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){ |((struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }) }
+                                }) }
+                            }
+                          }) }
+                      }) }
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){ |((struct){
+                        a: (struct){ |((struct){
+                            a: (struct){ |((struct){
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                }
+                              }) }
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){ |((struct){
+                                a: (struct){
+                                  a: (struct){ |((struct){
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                      }
+                                    }) }
+                                }
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){
+                                  a: (struct){ |((struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                        b: (int){ 4 }
+                                      }
+                                    }) }
+                                }
+                              }) }
+                          }) }
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){ |((struct){
+                            a: (struct){ |((struct){
+                                a: (struct){ |((struct){
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }
+                                  }) }
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }) }
+                              }) }
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){ |((struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){ |((struct){
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                          }
+                                        }
+                                      }) }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){ |((struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                      }) }
+                                  }) }
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){ |((struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                      }) }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){ |((struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                            b: (int){ 4 }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                      }) }
+                                  }) }
+                              }) }
+                          }) }
+                      }) }
+                  }) }
+              }) }
+          }) }
+        b: (int){ 4 }
+      }, (struct){
+        a: (struct){ |((struct){
+            a: (struct){ |((struct){
+                a: (struct){ |((struct){
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){
+                      a: (struct){
+                        a: (struct){ |((struct){
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){
+                              a: (struct){
+                                a: (struct){
+                                  b: (int){ 4 }
+                                }
+                              }
+                            }
+                          }) }
+                      }
+                    }
+                  }) }
+                b: (int){ 4 }
+              }, (struct){
+                a: (struct){ |((struct){
+                    a: (struct){
+                      a: (struct){ |((struct){
+                          b: (int){ 4 }
+                        }, (struct){
+                          a: (struct){
+                            a: (struct){
+                              a: (struct){ |((struct){
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }
+                                }) }
+                            }
+                          }
+                        }) }
+                    }
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){
+                      a: (struct){ |((struct){
+                          a: (struct){ |((struct){
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    b: (int){ 4 }
+                                  }
+                                }
+                              }
+                            }) }
+                          b: (int){ 4 }
+                        }, (struct){
+                          a: (struct){ |((struct){
+                              a: (struct){
+                                a: (struct){ |((struct){
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }
+                                  }) }
+                              }
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                      b: (int){ 4 }
+                                    }
+                                  }) }
+                              }
+                            }) }
+                        }) }
+                    }
+                  }) }
+              }) }
+            b: (int){ 4 }
+          }, (struct){
+            a: (struct){ |((struct){
+                a: (struct){ |((struct){
+                    a: (struct){ |((struct){
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){
+                          a: (struct){
+                            a: (struct){ |((struct){
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                }
+                              }) }
+                          }
+                        }
+                      }) }
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){ |((struct){
+                        a: (struct){
+                          a: (struct){ |((struct){
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    b: (int){ 4 }
+                                  }
+                                }
+                              }
+                            }) }
+                        }
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){
+                          a: (struct){ |((struct){
+                              a: (struct){ |((struct){
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }
+                                }) }
+                              b: (int){ 4 }
+                            }, (struct){
+                              a: (struct){ |((struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                }) }
+                            }) }
+                        }
+                      }) }
+                  }) }
+                b: (int){ 4 }
+              }, (struct){
+                a: (struct){ |((struct){
+                    a: (struct){ |((struct){
+                        a: (struct){ |((struct){
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){
+                              a: (struct){
+                                a: (struct){ |((struct){
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }
+                                  }) }
+                              }
+                            }
+                          }) }
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){ |((struct){
+                            a: (struct){
+                              a: (struct){ |((struct){
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }
+                                }) }
+                            }
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){
+                              a: (struct){ |((struct){
+                                  a: (struct){ |((struct){
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                      }
+                                    }) }
+                                  b: (int){ 4 }
+                                }, (struct){
+                                  a: (struct){ |((struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }) }
+                                }) }
+                            }
+                          }) }
+                      }) }
+                    b: (int){ 4 }
+                  }, (struct){
+                    a: (struct){ |((struct){
+                        a: (struct){ |((struct){
+                            a: (struct){ |((struct){
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){
+                                  a: (struct){
+                                    a: (struct){
+                                      b: (int){ 4 }
+                                    }
+                                  }
+                                }
+                              }) }
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){ |((struct){
+                                a: (struct){
+                                  a: (struct){ |((struct){
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                      }
+                                    }) }
+                                }
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){
+                                  a: (struct){ |((struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                      b: (int){ 4 }
+                                    }, (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                        b: (int){ 4 }
+                                      }
+                                    }) }
+                                }
+                              }) }
+                          }) }
+                        b: (int){ 4 }
+                      }, (struct){
+                        a: (struct){ |((struct){
+                            a: (struct){ |((struct){
+                                a: (struct){ |((struct){
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                      }
+                                    }
+                                  }) }
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){
+                                      a: (struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                        b: (int){ 4 }
+                                      }
+                                    }
+                                  }) }
+                              }) }
+                            b: (int){ 4 }
+                          }, (struct){
+                            a: (struct){ |((struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){ |((struct){
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                          }
+                                        }
+                                      }) }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){ |((struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                            b: (int){ 4 }
+                                          }
+                                        }
+                                      }) }
+                                  }) }
+                                b: (int){ 4 }
+                              }, (struct){
+                                a: (struct){ |((struct){
+                                    a: (struct){ |((struct){
+                                        a: (struct){
+                                          b: (int){ 4 }
+                                        }
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                      }) }
+                                    b: (int){ 4 }
+                                  }, (struct){
+                                    a: (struct){ |((struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            b: (int){ 4 }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                        b: (int){ 4 }
+                                      }, (struct){
+                                        a: (struct){
+                                          a: (struct){
+                                            a: (struct){
+                                              b: (int){ 4 }
+                                            }
+                                            b: (int){ 4 }
+                                          }
+                                          b: (int){ 4 }
+                                        }
+                                      }) }
+                                  }) }
+                              }) }
+                          }) }
+                      }) }
+                  }) }
+              }) }
+          }) }
+      }) }
   }
 }
-- diff/todo/p2 --
Investigate differing counts of errors in empty disjunctions. This may
indicate a performance issue.
-- out/eval --
Errors:
t1.p1: 2 errors in empty disjunction:
t1.p1: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:2:2
    ./in.cue:3:5
    ./in.cue:3:10
t1.p1: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:2:2
    ./in.cue:3:5
    ./in.cue:3:8
t1.p2: 2 errors in empty disjunction:
t1.p2: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:6:5
    ./in.cue:6:10
    ./in.cue:7:2
t1.p2: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:6:5
    ./in.cue:6:8
    ./in.cue:7:2
t2.p1.d: 2 errors in empty disjunction:
t2.p1.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:10:5
    ./in.cue:11:8
    ./in.cue:11:13
t2.p1.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:10:5
    ./in.cue:11:8
    ./in.cue:11:11
t2.p2.d: 2 errors in empty disjunction:
t2.p2.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:14:5
    ./in.cue:15:8
    ./in.cue:15:13
t2.p2.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
    ./in.cue:14:5
    ./in.cue:15:8
    ./in.cue:15:11

Result:
(_|_){
  // [eval]
  t1: (_|_){
    // [eval]
    p1: (_|_){
      // [eval] t1.p1: 2 errors in empty disjunction:
      // t1.p1: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:2:2
      //     ./in.cue:3:5
      //     ./in.cue:3:10
      // t1.p1: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:2:2
      //     ./in.cue:3:5
      //     ./in.cue:3:8
      a: (struct){
        a: (int){ |((int){ 2 }, (int){ 1 }) }
      }
    }
    p2: (_|_){
      // [eval] t1.p2: 2 errors in empty disjunction:
      // t1.p2: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:6:5
      //     ./in.cue:6:10
      //     ./in.cue:7:2
      // t1.p2: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
      //     ./in.cue:6:5
      //     ./in.cue:6:8
      //     ./in.cue:7:2
      a: (struct){
        a: (int){ |((int){ 2 }, (int){ 1 }) }
      }
    }
  }
  t2: (_|_){
    // [eval]
    p1: (_|_){
      // [eval]
      d: (_|_){
        // [eval] t2.p1.d: 2 errors in empty disjunction:
        // t2.p1.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:10:5
        //     ./in.cue:11:8
        //     ./in.cue:11:13
        // t2.p1.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:10:5
        //     ./in.cue:11:8
        //     ./in.cue:11:11
        a: (struct){
          a: (int){ |((int){ 2 }, (int){ 1 }) }
        }
      }
    }
    p2: (_|_){
      // [eval]
      d: (_|_){
        // [eval] t2.p2.d: 2 errors in empty disjunction:
        // t2.p2.d: conflicting values 1 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:14:5
        //     ./in.cue:15:8
        //     ./in.cue:15:13
        // t2.p2.d: conflicting values 2 and {a:(2|1)} (mismatched types int and struct):
        //     ./in.cue:14:5
        //     ./in.cue:15:8
        //     ./in.cue:15:11
        a: (struct){
          a: (int){ |((int){ 2 }, (int){ 1 }) }
        }
      }
    }
  }
  t3: (struct){
    p1: (struct){
      b: (int){ |((int){ 1 }, (int){ 2 }) }
      a: (int){ |((int){ 1 }, (int){ 2 }) }
    }
    p2: (struct){
      b: (int){ |((int){ 1 }, (int){ 2 }) }
      a: (int){ |((int){ 1 }, (int){ 2 }) }
    }
  }
  issue3437: (struct){
    r: (_|_){
      // [incomplete] issue3437.r: cycle error referencing a:
      //     ./issue3437.cue:2:9
    }
    d: (struct){
      a: (struct){
        a: (struct){
          a: (struct){
            b: (int){ 4 }
          }
        }
      }
    }
    out: (struct){
      a: (struct){
        a: (struct){ |((struct){
            a: (struct){
              b: (int){ 4 }
            }
            b: (int){ 4 }
          }, (struct){
            a: (struct){
              a: (struct){
                a: (struct){ |((struct){
                    b: (int){ 4 }
                  }, (struct){
                    a: (struct){
                      a: (struct){
                        a: (struct){
                          b: (int){ 4 }
                        }
                      }
                    }
                  }) }
              }
              b: (int){ 4 }
            }
          }) }
      }
      b: (int){ 4 }
    }
  }
}
