public void Visit(VisitMapPair visitor) {
   this.fimap.Visit(visitor);
 }
      internal override VisitStatus VisitTree (VisitMapPair visitor) 
      { 
        if (this.Left.VisitTree(visitor) == VisitStatus.StopVisit)
          return VisitStatus.StopVisit;

        return this.Right.VisitTree(visitor);
      }
 internal override VisitStatus VisitTree (VisitMapPair visitor) { return visitor(this.Key, this.Value); }
 internal override VisitStatus VisitTree (VisitMapPair visitor) { return VisitStatus.ContinueVisit; }
 internal abstract VisitStatus VisitTree (VisitMapPair visitor); 
 public void Visit (VisitMapPair visitor) { this.VisitTree(visitor); }