code: function parseElements(elements, callback, options, reviver) {
      var instances = Array(elements.length), i = elements.length;
  
      function checkIfDone() {
        if (--i === 0) {
          instances = instances.filter(function(el) {
            return el != null;
          });
          resolveGradients(instances);
          callback(instances);
        }
      }
  
      for (var index = 0, el, len = elements.length; index < len; index++) {
        el = elements[index];
        var klass = fabric[capitalize(el.tagName)];
        if (klass && klass.fromElement) {
          try {
            if (klass.async) {
              klass.fromElement(el, (function(index, el) {
                return function(obj) {
                  reviver && reviver(el, obj);
                  instances.splice(index, 0, obj);
                  checkIfDone();
                };
              })(index), options);
            }
            else {
              var obj = klass.fromElement(el, options);
              reviver && reviver(el, obj);
              instances.splice(index, 0, obj);
              checkIfDone();
            }
          }
          catch(e) {
            fabric.log(e.message || e);
          }
        }
        else {
          checkIfDone();
        }
      }
    }
docs: Transforms an array of svg elements to corresponding fabric.* instances
  @static
  @memberOf fabric
  @method parseElements
  @param {Array} elements Array of elements to parse
  @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)
  @param {Object} options Options object
  @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.