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;
  }
}
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;
  }
}
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 ; } }
/*
Gets node of an AST which path

@param {Node} ast
@param {array} path

@returns {Node}
/ * Gets node of an AST which path