docs: function parsePath() {
    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
      args[_key3] = arguments[_key3];
    }
  
    var target = args[0],
        path = args[1],
        value = args[2];
    warning(typeof path === 'string', "The second parameter(".concat(JSON.stringify(path), ") of parsePath() must be a string."));
    var pathSymbols = (path.match(PATH_REGEXP) || []).map(function (s) {
      return s.replace(/\s/g, '');
    });
    var pathWords = path.split(PATH_REGEXP).map(function (s) {
      return s.trim();
    }).filter(function (item) {
      return item !== '';
    });
    var scope = target;
  
    try {
      if (args.length < 3) {
        for (var index = 0, len = pathWords.length; index < len; index++) {
          var word = executeWord(pathWords[index]);
  
          if (index + 1 === len) {
            return scope[word];
          }
  
          if (isUndefined(scope[word])) {
            break;
          }
  
          scope = scope[word];
        }
      } else {
        for (var _index = 0, length = pathWords.length; _index < length; _index++) {
          var _word = executeWord(pathWords[_index]);
  
          var nextWord = pathWords[_index + 1];
          var symbol = pathSymbols[_index];
  
          if (isUndefined(nextWord)) {
            scope[_word] = value;
            break;
          }
  
          switch (symbol) {
            case '].':
            case '.':
              scope = isUndefined(scope[_word]) ? scope[_word] = {} : scope[_word];
              break;
  
            case '][':
            case '[':
              var nextVarWord = executeWord(nextWord);
              scope = isUndefined(scope[_word]) ? scope[_word] = typeof nextVarWord === 'number' && nextVarWord >= 0 ? [] : {} : scope[_word];
              break;
  
            default:
              scope[_word] = value;
              break;
          }
        }
      }
    } catch (error) {
      warning(false, "The name '%s' of Field seems is not a legal expression.", path);
    }
  
    if (args.length > 2) {
      return target;
    }
  }