text: 'use strict';
  
  class Edge {
      constructor(filter, node, parent, parentKey) {
          this.filter = filter;
          this.node = node;
          this.parent = parent;
          this.parentKey = parentKey;
      }
  }
  
  class Node {
      constructor(data) {
          this.data = data;
          this.branches = null;
      }
  
      _ensureBranches() {
          if (!this.branches) {
              this.branches = Object.create(null);
          }
      }
  
      addEdge(key, filter, node) {
          this._ensureBranches();
  
          this.branches[key] = new Edge(filter, node, this, key);
      }
  
      addNode(key, node) {
          this._ensureBranches();
  
          this.branches[key] = node;
      }
  }
  
  module.exports = Node;
  