#Issue: 3633
-- out/evalalpha/stats --
Leaks:  2627
Freed:  0
Reused: 0
Allocs: 2627
Retain: 0

Unifications: 667
Conjuncts:    2680
Disjuncts:    1955

CloseIDElems: 4237
NumCloseIDs: 55
-- diff/-out/evalalpha/stats<==>+out/eval/stats --
diff old new
--- old
+++ new
@@ -1,9 +1,12 @@
-Leaks:  0
-Freed:  3595
-Reused: 3575
-Allocs: 20
+Leaks:  2627
+Freed:  0
+Reused: 0
+Allocs: 2627
 Retain: 0
 
-Unifications: 885
-Conjuncts:    3846
-Disjuncts:    3595
+Unifications: 667
+Conjuncts:    2680
+Disjuncts:    1955
+
+CloseIDElems: 4237
+NumCloseIDs: 55
-- out/eval/stats --
Leaks:  0
Freed:  3595
Reused: 3575
Allocs: 20
Retain: 0

Unifications: 885
Conjuncts:    3846
Disjuncts:    3595
-- in.cue --
reduced: {
	#Schema: {
		a?: null | bool | string | int | #Schema
		b?: null | bool | string | int | #Schema
		c?: null | bool | string | int | #Schema
		d?: null | bool | string | int | #Schema
		e?: null | bool | string | int | #Schema
		f?: null | bool | string | int | #Schema
	}
	
	out: #Schema & { #Schema }
}
full: {
	#Schema: {
		required?: [...string] 
		properties?: [string]: null | bool | string | [...int] | #Schema
	
		foo00?: null | bool | string | [...int] | {string: int32}
		foo01?: null | bool | string | [...int] | {string: int32}
		foo02?: null | bool | string | [...int] | {string: int32}
		foo03?: null | bool | string | [...int] | {string: int32}
		foo04?: null | bool | string | [...int] | {string: int32}
		foo05?: null | bool | string | [...int] | {string: int32}
		foo06?: null | bool | string | [...int] | {string: int32}
		foo07?: null | bool | string | [...int] | {string: int32}
		foo08?: null | bool | string | [...int] | {string: int32}
		foo09?: null | bool | string | [...int] | {string: int32}
		foo10?: null | bool | string | [...int] | {string: int32}
		foo11?: null | bool | string | [...int] | {string: int32}
		foo12?: null | bool | string | [...int] | {string: int32}
		foo13?: null | bool | string | [...int] | {string: int32}
		foo14?: null | bool | string | [...int] | {string: int32}
		foo15?: null | bool | string | [...int] | {string: int32}
		foo16?: null | bool | string | [...int] | {string: int32}
		foo17?: null | bool | string | [...int] | {string: int32}
		foo18?: null | bool | string | [...int] | {string: int32}
		foo19?: null | bool | string | [...int] | {string: int32}
	}
	
	out: [...#Schema] & [{
		#Schema
		properties: foo: required: ["bar", "baz"]
	}]
}
-- out/evalalpha --
(struct){
  reduced: (struct){
    #Schema: (#struct){
      a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
    }
    out: (#struct){
      a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
        }) }
      b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
        }) }
      c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
        }) }
      d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
        }) }
      e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
        }) }
      f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
            }) }
        }) }
    }
  }
  full: (struct){
    #Schema: (#struct){
      required?: (list){
      }
      properties?: (#struct){
      }
      foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo01?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo02?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo03?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo04?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo05?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo06?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo07?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo08?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo09?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo10?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo11?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo12?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo13?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo14?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo15?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo16?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo17?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo18?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo19?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
    }
    out: (#list){
      0: (#struct){
        properties: (#struct){
          foo: (#struct){
            required: (#list){
              0: (string){ "bar" }
              1: (string){ "baz" }
            }
            properties?: (#struct){
            }
            foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo01?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo02?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo03?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo04?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo05?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo06?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo07?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo08?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo09?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo10?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo11?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo12?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo13?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo14?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo15?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo16?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo17?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo18?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo19?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
          }
        }
        required?: (list){
        }
        foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo01?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo02?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo03?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo04?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo05?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo06?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo07?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo08?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo09?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo10?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo11?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo12?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo13?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo14?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo15?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo16?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo17?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo18?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo19?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
      }
    }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -9,12 +9,306 @@
       f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
     }
     out: (#struct){
-      a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
-      b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
-      c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
-      d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
-      e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
-      f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+      a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+        }) }
+      b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+        }) }
+      c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+        }) }
+      d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+        }) }
+      e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+        }) }
+      f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+          a?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          b?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          c?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          d?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          e?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+          f?: ((null|bool|int|string|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }, (#struct){
+              a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+              f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
+            }) }
+        }) }
     }
   }
   full: (struct){
@@ -106,8 +400,6 @@
     }
     out: (#list){
       0: (#struct){
-        required?: (list){
-        }
         properties: (#struct){
           foo: (#struct){
             required: (#list){
@@ -198,6 +490,8 @@
               }) }
           }
         }
+        required?: (list){
+        }
         foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
           }, (#struct){
             string: (int){ &(>=-2147483648, <=2147483647, int) }
-- out/eval --
(struct){
  reduced: (struct){
    #Schema: (#struct){
      a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
    }
    out: (#struct){
      a?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      b?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      c?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      d?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      e?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
      f?: ((null|bool|int|string)){ |((null){ null }, (bool){ bool }, (string){ string }, (int){ int }) }
    }
  }
  full: (struct){
    #Schema: (#struct){
      required?: (list){
      }
      properties?: (#struct){
      }
      foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo01?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo02?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo03?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo04?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo05?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo06?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo07?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo08?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo09?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo10?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo11?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo12?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo13?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo14?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo15?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo16?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo17?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo18?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
      foo19?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
        }, (#struct){
          string: (int){ &(>=-2147483648, <=2147483647, int) }
        }) }
    }
    out: (#list){
      0: (#struct){
        required?: (list){
        }
        properties: (#struct){
          foo: (#struct){
            required: (#list){
              0: (string){ "bar" }
              1: (string){ "baz" }
            }
            properties?: (#struct){
            }
            foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo01?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo02?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo03?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo04?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo05?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo06?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo07?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo08?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo09?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo10?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo11?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo12?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo13?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo14?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo15?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo16?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo17?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo18?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
            foo19?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
              }, (#struct){
                string: (int){ &(>=-2147483648, <=2147483647, int) }
              }) }
          }
        }
        foo00?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo01?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo02?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo03?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo04?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo05?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo06?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo07?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo08?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo09?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo10?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo11?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo12?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo13?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo14?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo15?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo16?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo17?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo18?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
        foo19?: ((null|bool|string|list|struct)){ |((null){ null }, (bool){ bool }, (string){ string }, (list){
          }, (#struct){
            string: (int){ &(>=-2147483648, <=2147483647, int) }
          }) }
      }
    }
  }
}
-- out/compile --
--- in.cue
{
  reduced: {
    #Schema: {
      a?: (null|bool|string|int|〈1;#Schema〉)
      b?: (null|bool|string|int|〈1;#Schema〉)
      c?: (null|bool|string|int|〈1;#Schema〉)
      d?: (null|bool|string|int|〈1;#Schema〉)
      e?: (null|bool|string|int|〈1;#Schema〉)
      f?: (null|bool|string|int|〈1;#Schema〉)
    }
    out: (〈0;#Schema〉 & {
      〈1;#Schema〉
    })
  }
  full: {
    #Schema: {
      required?: [
        ...string,
      ]
      properties?: {
        [string]: (null|bool|string|[
          ...int,
        ]|〈2;#Schema〉)
      }
      foo00?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo01?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo02?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo03?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo04?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo05?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo06?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo07?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo08?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo09?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo10?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo11?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo12?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo13?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo14?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo15?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo16?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo17?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo18?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
      foo19?: (null|bool|string|[
        ...int,
      ]|{
        string: &(int, >=-2147483648, <=2147483647)
      })
    }
    out: ([
      ...〈1;#Schema〉,
    ] & [
      {
        〈2;#Schema〉
        properties: {
          foo: {
            required: [
              "bar",
              "baz",
            ]
          }
        }
      },
    ])
  }
}
