/// <summary>
        ///   Creates a deep copy of the current <see cref="CoreOptions" /> instance.
        /// </summary>
        /// <returns>A deep copy of the this <see cref="CoreOptions" /> instance.</returns>
        public virtual CoreOptions Clone()
        {
            var clonedObject = new CoreOptions
            {
                UseRequiredKeywords   = UseRequiredKeywords,
                RequiredKeywords      = RequiredKeywords,
                LicenseHeaderFileText = LicenseHeaderFileText,
                Languages             = new ObservableCollection <Language> (Languages.Select(x => x.Clone()).ToList())
            };

            return(clonedObject);
        }
 /// <summary>
 ///   Serializes an <see cref="CoreOptions" /> instance to a file in the file system.
 /// </summary>
 /// <param name="options">The <see cref="CoreOptions" /> instance to serialize.</param>
 /// <param name="filePath">The path to which an options file should be persisted.</param>
 public static async Task SaveAsync(CoreOptions options, string filePath)
 {
     await JsonOptionsManager.SerializeAsync(options, filePath);
 }