code: function(other) {
              if(typeof(other.uid) !== 'undefined' &&
                 typeof(this.uid) !== 'undefined' &&
                 other.uid !== this.uid) {
                  // 7.1.1
                  throw "Won't merge vcards without matching UIDs.";
              }
  
              var result = new VCard();
  
              function mergeProperty(key) {
                  if(other[key]) {
                      if(other[key] == this[key]) {
                          result.setAttribute(this[key]);
                      } else {
                          result.addAttribute(this[key]);
                          result.addAttribute(other[key]);
                      }
                  } else {
                      result[key] = this[key];
                  }
              }
  
              for(key in this) { // all properties of this
                  mergeProperty(key);
              }
              for(key in other) { // all properties of other *not* in this
                  if(! result[key]) {
                      mergeProperty(key);
                  }
              }
          }
docs: synchronizes two vcards, using the mechanisms described in RFC 6350, Section 7. Returns a new VCard object. If a property is present in both source vcards, and that property's maximum cardinality is 1, then the value from the second (given) vcard precedes.  TODO: implement PID matching as described in 7.3.1