/// <summary>The update file data except content.</summary>
        /// <param name="localFile">The local file.</param>
        /// <returns>The <see cref="LocalFile"/>.</returns>
        /// <exception cref="ArgumentNullException"> if <paramref name="localFile"/> is null. </exception>
        public LocalFile UpdateFile(LocalFile localFile)
        {
            if (localFile == null)
            {
                throw new ArgumentNullException(nameof(localFile));
            }
            if (NSFileManager.DefaultManager.FileExists(localFile.Path))
            {
                this.extendedAttributeStorage.Write(localFile.Path, localFile.ExtendedAttribute);
            }

            return(this.GetFile(localFile.Path));
        }
        /// <summary>Returns <see cref="LocalFile"/> for provided path.</summary>
        /// <param name="path">The local path.</param>
        /// <param name="isExists">The value indicating whether is item exists. </param>
        /// <returns>The <see cref="LocalFile"/>.</returns>
        /// <exception cref="ArgumentNullException"> if <paramref name="path"/> is null. </exception>
        private LocalFile GetFile(string path, bool isExists)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (!isExists)
            {
                return(LocalFile.CreateNotExist(path));
            }
            ulong fileSize = NSFileManager.DefaultManager.GetAttributes(path).Size.GetValueOrDefault();

            try
            {
                ExtendedAttribute extendedAttribute = this.extendedAttributeStorage.Get(path);
                return(LocalFile.CreateExists(path, fileSize, extendedAttribute));
            }
            catch (SerializationException)
            {
                this.extendedAttributeStorage.Delete(path);
                return(LocalFile.CreateExists(path, fileSize));
            }
        }