Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8325816

class Record.hashCode() gets stack overflow when dealing with cyclic refs

XMLWordPrintable

    • generic
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      Windows DOS CMD Line
      > java -cp ScratchPad-1.0.jar Scratch.TestJavaRecord

      A DESCRIPTION OF THE PROBLEM :
      Created two Record classes (see source code) that reference each other. In this case, the standard hashCode() method (not Overridden) generates a Stack Overflow.

      While you can @Override the equals() and hashCode() methods within the record (commented out in the sample source), I would have expected the standard hashCode() to have prevented this.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the sample source below using "java -cp ScratchPad-1.0.jar Scratch.TestJavaRecord"

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The hashCode() function to return an integer value
      ACTUAL -
      C:\Development\Work\ScratchPad\target>java -cp ScratchPad-1.0.jar Scratch.TestJavaRecord
      List hashcodes for 'propertyList'
        Property: [A1] type -
      Exception in thread "main" java.lang.StackOverflowError
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)
              at java.base/java.util.ArrayList.hashCode(ArrayList.java:664)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$BuildingType.hashCode(TestJavaRecord.java:11)
              at java.base/java.util.Objects.hashCode(Objects.java:103)
              at Scratch.TestJavaRecord$Property.hashCode(TestJavaRecord.java:13)
              at java.base/java.util.ArrayList.hashCodeRange(ArrayList.java:677)

      C:\Development\Work\ScratchPad\target>

      ---------- BEGIN SOURCE ----------
      package Scratch;

      import java.util.ArrayList;
      import java.util.List;

      public class TestJavaRecord {
        private Pm pm;

        private record Pm (List<Property> propertyList) {};

        private record BuildingType (String name, List<Property> byProperty) {};

        private record Property (String reference, BuildingType buildingType, List<Property> byProperty) {
      // @Override
      // public int hashCode () {
      // return this.reference.hashCode();
      // }
      //
      // @Override
      // public boolean equals (Object property) {
      // return property != null && getClass() == property.getClass() && this.reference.equals(((Property)property).reference());
      // }
      //
      // @Override
      // public String toString () {
      // return "[" + reference + "] type " + (buildingType == null ? "-" : buildingType.name());
      // }
        };

        void buildPropertyList () {
          List<Property> propertyList = new ArrayList<>();
          this.pm = new Pm(propertyList);

          Property property;
          Property childProperty;
          List<Property> byProperty;

          BuildingType buildingType;

          byProperty = new ArrayList<>();
          buildingType = new BuildingType("Guardhouse", new ArrayList<>());
          childProperty = new Property("B1", buildingType, null);
          byProperty.add(childProperty);
          buildingType.byProperty().add(childProperty);

          property = new Property("A1", null, byProperty);
          propertyList.add(property);

          System.out.println("List hashcodes for 'propertyList'");
          for (Property myProperty : propertyList) {
            System.out.println(" Property: " + myProperty);
            // **** JVM crashes here with a Stack Overflow ****
            System.out.println(" HashCode: " + myProperty.hashCode());
          }
          System.out.println("Completed list of hashcodes");
        }

        public static void main(String[] args) {
          new TestJavaRecord().buildPropertyList();
        }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      @Override the hashCode() and equals() method.

      FREQUENCY : always


            smarks Stuart Marks
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: