@Override
 protected StringBuilder appendFieldsToString(final StringBuilder sb) {
   sb.append("key=");
   // OFFHEAP _getValue ok: the current toString on OffHeapCachedDeserializable
   // is safe to use without incing refcount.
   final Object k = getKeyCopy();
   final Object val = OffHeapRegionEntryUtils.getHeapRowForInVMValue(this);
   RegionEntryUtils.entryKeyString(k, val, getTableInfo(null), sb);
   sb.append("; byte source = " + this._getValue());
   sb.append("; rawValue=");
   ArrayUtils.objectStringNonRecursive(val, sb);
   sb.append("; lockState=0x").append(Integer.toHexString(getState()));
   return sb;
 }
 @Override
 public Object prepareValueForCache(
     RegionEntryContext r,
     Object val,
     boolean isEntryUpdate,
     boolean valHasMetadataForGfxdOffHeapUpdate) {
   if (okToStoreOffHeap(val) && OffHeapRegionEntryUtils.isValidValueForGfxdOffHeapStorage(val)) {
     // TODO:Asif:Check if this is a valid supposition
     // final long address = this.getAddress();
     if (isEntryUpdate
     /*
      * (address == OffHeapRegionEntryHelper.REMOVED_PHASE1_ADDRESS || address
      * == OffHeapRegionEntryHelper.NULL_ADDRESS) || r instanceof
      * PlaceHolderDiskRegion
      */
     ) {
       return OffHeapRegionEntryUtils.prepareValueForUpdate(
           this, r, val, valHasMetadataForGfxdOffHeapUpdate);
     } else {
       return OffHeapRegionEntryUtils.prepareValueForCreate(r, val, false);
     }
   }
   return super.prepareValueForCache(r, val, isEntryUpdate, valHasMetadataForGfxdOffHeapUpdate);
 }