/**
  * Constructor.
  * @param bidi  the parent bidi map
  * @param sm  the subMap sorted map
  */
 protected internal ViewMap(DualTreeBidiMap bidi, java.util.SortedMap <Object, Object> sm) :
     // the implementation is not great here...
     // use the maps[0] as the filtered map, but maps[1] as the full map
     // this forces containsValue and clear to be overridden
     base((java.util.SortedMap <Object, Object>)bidi.createBidiMap(sm, bidi.maps[1], bidi.inverseBidiMapJ))
 {
     this.bidi = (DualTreeBidiMap)map;
 }
 // the implementation is not great here...
 // use the maps[0] as the filtered map, but maps[1] as the full map
 // this forces containsValue and clear to be overridden
 /**
  * Constructor.
  * @param bidi  the parent bidi map
  * @param sm  the subMap sorted map
  */
 protected internal ViewMap(DualTreeBidiMap bidi, java.util.SortedMap<Object, Object> sm)
     : base((java.util.SortedMap<Object, Object>)bidi.createBidiMap(sm, bidi.maps[1], bidi.inverseBidiMapJ))
 {
     this.bidi = (DualTreeBidiMap)map;
 }