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);
}
}