/// <summary>
        /// Adds a new Snippet.
        /// </summary>
        /// <param name="name">The Name of the Snippet.</param>
        /// <param name="content">The Content of the Snippet.</param>
        /// <returns>The correct Snippet object.</returns>
        /// <exception cref="ArgumentNullException">If <paramref name="name"/> or <paramref name="content"/> are <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">If <paramref name="name"/> is empty.</exception>
        public Snippet AddSnippet(string name, string content)
        {
            if(name == null) throw new ArgumentNullException("name");
            if(name.Length == 0) throw new ArgumentException("Name cannot be empty", "name");
            if(content == null) throw new ArgumentNullException("content"); // content can be empty

            lock(this) {
                SnippetNameComparer comp = new SnippetNameComparer();
                Snippet temp = new Snippet(name, content, this);
                if(Array.Find(GetSnippets(), delegate(Snippet s) { return comp.Compare(s, temp) == 0; }) != null) return null;
                temp = null;

                File.WriteAllText(GetFullPathForSnippets(name + ".cs"), content);
                return new Snippet(name, content, this);
            }
        }
        /// <summary>
        /// Removes a new Snippet.
        /// </summary>
        /// <param name="name">The Name of the Snippet to remove.</param>
        /// <returns>True if the Snippet is removed successfully.</returns>
        /// <exception cref="ArgumentNullException">If <paramref name="name"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">If <paramref name="name"/> is empty.</exception>
        public bool RemoveSnippet(string name)
        {
            if(name == null) throw new ArgumentNullException("name");
            if(name.Length == 0) throw new ArgumentException("Name cannot be empty", "name");

            lock(this) {
                SnippetNameComparer comp = new SnippetNameComparer();
                Snippet temp = new Snippet(name, "", this);
                if(Array.Find(GetSnippets(), delegate(Snippet s) { return comp.Compare(s, temp) == 0; }) == null) return false;
                temp = null;

                File.Delete(GetFullPathForSnippets(name + ".cs"));
            }
            return true;
        }