public void Add(IrfUserData userData)
        {
            if(userData == null) throw new ArgumentNullException("userData");
            if(string.IsNullOrEmpty(userData.UserName)) throw new ArgumentNullException("userData.UserName");

            usersData.Add(userData.UserName, userData);
        }
 public void Merge(IrfUserData userData)
 {
     foreach (var note in userData.notes)
     {
         if (!notes.ContainsKey(note.Key))
             notes.Add(note.Key, note.Value);
         else
             notes[note.Key].Merge(note.Value);
     }
 }
        public override Node ExitUserNode(Production node)
        {
            var values = GetChildValues(node);

            if (values.Count != 0)
            {
                IrfUserData userData = new IrfUserData();
                userData.UserName = (string)values[0];

                for (int i = 1; i < values.Count; i++)
                    userData.Add((IrfNote)values[i]);

                node.AddValue(userData);
            }

            return node;
        }