@VisibleForTesting
  int updateAttribute(int attributesRecordId,
                      int fileId,
                      int attributeId,
                      byte[] newValueBytes,
                      int newValueSize) throws IOException {
    checkAttributeId(attributeId);
    int updatedAttributesRecordId;
    if (newValueSize < INLINE_ATTRIBUTE_SMALLER_THAN) {
      //if attribute value could be stored in the directory record inline
      //  -> try to (over)write it there:
      updatedAttributesRecordId = writeAttributeInlineIntoDirectoryRecord(
        attributesRecordId,
        fileId,
        attributeId,
        newValueBytes, newValueSize
      );
    }
    else {
      //value is non-inlinable
      //  -> write it to dedicated record, and add/update ref in directory record:
      updatedAttributesRecordId = writeAttributeIntoDedicatedRecord(
        attributesRecordId,
        fileId,
        attributeId,
        newValueBytes, newValueSize
      );
    }
    return updatedAttributesRecordId;
  }
@VisibleForTesting
  int updateAttribute(int attributesRecordId,
                      int fileId,
                      int attributeId,
                      byte[] newValueBytes,
                      int newValueSize)