whole_func_string: function getNode(_x2, _x3) {
    var _left;
  
    var _again2 = true;
  
    _function2: while (_again2) {
      var ast = _x2,
          path = _x3;
      _again2 = false;
  
      if (path.length) {
        if (ast.tag === MAP_TAG) {
          var value = ast.value;
          for (var i = 0; i < value.length; ++i) {
            var _value$i = _slicedToArray(value[i], 2);
  
            var keyNode = _value$i[0];
            var valNode = _value$i[1];
  
            if (path[0] === keyNode.value) {
              _x2 = valNode;
              _x3 = path.slice(1);
              _again2 = true;
              value = i = _value$i = keyNode = valNode = undefined;
              continue _function2;
            }
          }
          return undefined;
        } else if (ast.tag === SEQ_TAG) {
          if (!(_left = ast.value[path[0]])) {
            return _left;
          }
  
          _x2 = ast.value[path[0]];
          _x3 = path.slice(1);
          _again2 = true;
          value = i = _value$i = keyNode = valNode = undefined;
          continue _function2;
        }
      }
      return ast;
    }
  }
func_code_string: function getNode(_x2, _x3) {
    var _left;
  
    var _again2 = true;
  
    _function2: while (_again2) {
      var ast = _x2,
          path = _x3;
      _again2 = false;
  
      if (path.length) {
        if (ast.tag === MAP_TAG) {
          var value = ast.value;
          for (var i = 0; i < value.length; ++i) {
            var _value$i = _slicedToArray(value[i], 2);
  
            var keyNode = _value$i[0];
            var valNode = _value$i[1];
  
            if (path[0] === keyNode.value) {
              _x2 = valNode;
              _x3 = path.slice(1);
              _again2 = true;
              value = i = _value$i = keyNode = valNode = undefined;
              continue _function2;
            }
          }
          return undefined;
        } else if (ast.tag === SEQ_TAG) {
          if (!(_left = ast.value[path[0]])) {
            return _left;
          }
  
          _x2 = ast.value[path[0]];
          _x3 = path.slice(1);
          _again2 = true;
          value = i = _value$i = keyNode = valNode = undefined;
          continue _function2;
        }
      }
      return ast;
    }
  }
func_documentation_string: /*
  Gets node of an AST which path
  
  @param {Node} ast
  @param {array} path
  
  @returns {Node}