private string[] ProcessItem(object o)
        {
            UniqueStringCollection deps = new UniqueStringCollection();

            if (o is TagReference)
            {
                TagReference tagRef = (o as TagReference);
                if (tagRef.Value != null)
                {
                    if (tagRef.Value.Length > 0)
                    {
                        string filename = tagRef.Value + TagFileName.GetFileExtension(tagRef.TagGroup);
                        deps.Add(filename);
                    }
                }
            }
            if (o is CollectionBase)
            {
                foreach (object child in (o as CollectionBase))
                {
                    if (child is IBlock)
                    {
                        string[] items = ProcessDependencies(child as IBlock);
                        deps.AddRange(items);
                    }
                }
            }
            if (o is IBlock)
            {
                string[] items = ProcessDependencies(o as IBlock);
                deps.AddRange(items);
            }
            return(deps.ToArray());
        }
 public void AddTag(string filename)
 {
     // Strip the path if neccessary.
     tags.Add(Path.GetFileName(filename));
 }