@@ -385,31 +385,27 @@ long readNode(Buffer buffer, long nodeNumber, int index)
385385 // can either be 0 or 1.
386386 long baseOffset = nodeNumber * this .metadata .nodeByteSize ();
387387
388- switch (this .metadata .recordSize ()) {
389- case 24 :
388+ int recordSize = this .metadata .recordSize ();
389+ return switch (recordSize ) {
390+ case 24 -> {
390391 // For a 24 bit record, each record is 3 bytes.
391392 buffer .position (baseOffset + (long ) index * 3 );
392- return Decoder .decodeLong (buffer , 0 , 3 );
393- case 28 :
393+ yield Decoder .decodeLong (buffer , 0 , 3 );
394+ }
395+ case 28 -> {
394396 int middle = buffer .get (baseOffset + 3 );
395-
396- if (index == 0 ) {
397- // We get the most significant from the first half
398- // of the byte. It belongs to the first record.
399- middle = (0xF0 & middle ) >>> 4 ;
400- } else {
401- // We get the most significant byte of the second record.
402- middle = 0x0F & middle ;
403- }
397+ // We get the most significant bits from the appropriate half
398+ // of the byte based on the index.
399+ middle = index == 0 ? (0xF0 & middle ) >>> 4 : 0x0F & middle ;
404400 buffer .position (baseOffset + (long ) index * 4 );
405- return Decoder .decodeLong (buffer , middle , 3 );
406- case 32 :
401+ yield Decoder .decodeLong (buffer , middle , 3 );
402+ }
403+ case 32 -> {
407404 buffer .position (baseOffset + (long ) index * 4 );
408- return Decoder .decodeLong (buffer , 0 , 4 );
409- default :
410- throw new InvalidDatabaseException ("Unknown record size: "
411- + this .metadata .recordSize ());
412- }
405+ yield Decoder .decodeLong (buffer , 0 , 4 );
406+ }
407+ default -> throw new InvalidDatabaseException ("Unknown record size: " + recordSize );
408+ };
413409 }
414410
415411 <T > T resolveDataPointer (
0 commit comments