Unsafe.compareAndExchangeObject should keep track of returned type after matching Reviewed-by: shade, vlivanov