@ Inline public final int compareTo ( final Composite that ) { if ( isStatic ( ) != that . isStatic ( ) ) { // Static sorts before non-static no matter what, except for empty which // always sort first if ( isEmpty ( ) ) return that . isEmpty ( ) ? 0 : - 1 ; if ( that . isEmpty ( ) ) return 1 ; return isStatic ( ) ? - 1 : 1 ; } int size = size ( ) ; int size2 = that . size ( ) ; int minSize = Math . min ( size , size2 ) ; int startDelta = 0 ; int cellNamesOffset = nameDeltaOffset ( size ) ; for ( int i = 0 ; i < minSize ; i ++ ) { int endDelta = i < size - 1 ? getShort ( nameDeltaOffset ( i + 1 ) ) : valueStartOffset ( ) - cellNamesOffset ; long offset = peer + cellNamesOffset + startDelta ; int length = endDelta - startDelta ; int cmp = FastByteOperations . UnsafeOperations . compareTo ( null , offset , length , that . get ( i ) ) ; if ( cmp != 0 ) return cmp ; startDelta = endDelta ; } EOC eoc = that . eoc ( ) ; if ( size == size2 ) return this . eoc ( ) . compareTo ( eoc ) ; return size < size2 ? this . eoc ( ) . prefixComparisonResult : - eoc . prefixComparisonResult ; }
requires isByteOrderComparable to be true . Compares the name components only ; ; may need to compare EOC etc still