guava/src/com/google/common/hash/AbstractStreamingHasher.java
protected void processRemaining(ByteBuffer bb) {
    bb.position(bb.limit()); // move at the end
    bb.limit(chunkSize + 7); // get ready to pad with longs
    while (bb.position() < chunkSize) {
      bb.putLong(0);
    }
    bb.limit(chunkSize);
    bb.flip();
    process(bb);
  }
protected void processRemaining(ByteBuffer bb) {
    bb.position(bb.limit()); // move at the end
    bb.limit(chunkSize + 7); // get ready to pad with longs
    while (bb.position() < chunkSize) {
      bb.putLong(0);
    }
    bb.limit(chunkSize);
    bb.flip();
    process(bb);
  }
This is invoked for the last bytes of the input, which are not enough to fill a whole chunk.
The passed {@code ByteBuffer} is guaranteed to be non-empty.

<p>This implementation simply pads with zeros and delegates to {@link #process(ByteBuffer)}.