code: function(path, options) {
        options = options || { };
  
        this.setOptions(options);
  
        if (!path) {
          throw Error('`path` argument is required');
        }
  
        var fromArray = _toString.call(path) === '[object Array]';
  
        this.path = fromArray
          ? path
          // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)
          : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);
  
        if (!this.path) return;
  
        if (!fromArray) {
          this._initializeFromString(options);
        }
  
        if (options.sourcePath) {
          this.setSourcePath(options.sourcePath);
        }
      }
docs: Constructor
  @method initialize
  @param {Array|String} path Path data (sequence of coordinates and corresponding "command" tokens)
  @param {Object} [options] Options object