int r = nA;  if ( length == 0 ) { type = EMPTY; } else { if ( ( ofsR != 0 ) || ( lstR != 0 ) ) { if ( lst  <=  ( start + alignment ) ) { type = CONTAINED; r--; } else { type = CROSSED;  if ( ofsR != 0 ) r--;  if ( lstR != 0 ) r--; } } else { type = ALIGNED; } }
this.start = offset - ofsR; this.end = (lstR == 0) ? lst : lst - lstR + alignment;
	private BufferType ( long offset, ByteBuffer buffer ) {	    if ( offset < 0 )		throw new IllegalArgumentException		    ( "offset < 0" );	    this.buffer = buffer;	    	    this.offset = offset;	    this.length = buffer.remaining();	    this.ofsR  =  (int)(offset % alignment);	    this.lst   =  offset + length;	    this.lstR  =  (int)(lst % alignment);	    	    this.start =  offset - ofsR;	    this.end   =  ( lstR == 0 ) ? lst : lst - lstR + alignment;	    this.lA    =  (int)(end - start);	    this.nA    =  lA / alignment;	    int r = nA; 	    	    if ( length == 0 ) { // EMPTY		type = EMPTY;	    }	    else {		if ( ( ofsR != 0 ) || ( lstR != 0 ) ) {		    if ( lst  <=  ( start + alignment ) ) { // CONTAINED			type = CONTAINED;			r--;		    }		    else {                                  // CROSSED			type = CROSSED;			//			if ( ofsR != 0 )        // HEAD			    r--;			//			if ( lstR != 0 )        // TAIL			    r--;		    }		}		else { // ALIGNED		    type = ALIGNED;		}	    }	    nB = r;	    lB = nB * alignment;	}