/// <summary>
 /// Adds the value associated with the specified key
 /// </summary>
 /// <param name="z"></param>
 /// <param name="d"></param>
 public void Add(NKeyValue <A, VALUE> z, VALUE d)
 {
     this.Add(z.Key, d);
 }
 /// <summary>
 /// Determines if the value associated with the specified key exists
 /// </summary>
 /// <param name="z"></param>
 public void ContainsKey(NKeyValue <A, VALUE> z)
 {
     this.ContainsKey(z.Key);
 }
 /// <summary>
 /// Deletes the value associated with the specified key
 /// </summary>
 /// <param name="z"></param>
 public void Remove(NKeyValue <A, VALUE> z)
 {
     this.Remove(z.Key);
 }
 /// <summary>
 /// Gets the value associated with the specified key
 /// </summary>
 /// <param name="exists"></param>
 /// <param name="defaultData"></param>
 /// <param name="z"></param>
 /// <returns></returns>
 public VALUE Get(out bool exists, VALUE defaultData, NKeyValue <A, VALUE> z)
 {
     return(this.Get(out exists, defaultData, z.Key));
 }
 /// <summary>
 /// Gets the value associated with the specified key
 /// </summary>
 /// <param name="z"></param>
 /// <returns></returns>
 public VALUE Get(NKeyValue <A, VALUE> z)
 {
     return(this.Get(z.Key));
 }
 /// <summary>
 /// Gets the value associated with the specified key
 /// </summary>
 /// <param name="z"></param>
 /// <returns></returns>
 public VALUE this[NKeyValue <A, VALUE> z]
 {
     get { return(Get(z)); }
     set { this.Upsert(true, z.Key, value); }
 }