/// <summary>
 /// Adds all of the entries in the <code>other</code> map, performing
 /// <code>function</code> on them to transform the values
 /// </summary>
 public virtual void AddAll <V2, _T1>(Edu.Stanford.Nlp.Util.TwoDimensionalMap <_T1> other, Func <V2, V> function)
     where _T1 : K1
 {
     foreach (TwoDimensionalMap.Entry <K1, K2, V2> entry in other)
     {
         Put(entry.GetFirstKey(), entry.GetSecondKey(), function.Apply(entry.GetValue()));
     }
 }
 public TwoDimensionalMap(Edu.Stanford.Nlp.Util.TwoDimensionalMap <K1, K2, V> tdm)
     : this(tdm.mf1, tdm.mf2)
 {
     foreach (K1 k1 in tdm.map.Keys)
     {
         IDictionary <K2, V> m    = tdm.map[k1];
         IDictionary <K2, V> copy = mf2.NewMap();
         copy.PutAll(m);
         this.map[k1] = copy;
     }
 }
 public override bool Equals(object o)
 {
     if (o == this)
     {
         return(true);
     }
     if (!(o is Edu.Stanford.Nlp.Util.TwoDimensionalMap))
     {
         return(false);
     }
     Edu.Stanford.Nlp.Util.TwoDimensionalMap <object, object, object> other = (Edu.Stanford.Nlp.Util.TwoDimensionalMap <object, object, object>)o;
     return(map.Equals(other.map));
 }