rem: this.tags.forEach(function() { diff[this.tag.name] = (tags.indexOf(this.tag.name) < 0) ? this : 0; }); for each (var tag in tags) { 
add: var tag; for (var i in tags) {  tag = tags[i] = String(tags[i]).trim().replace(/^[\/\.]+$/, "?"); 
context: Story.prototype.setTags = function(tags) {   if (!tags) {      tags = [];   } else if (tags.constructor === String) {      tags = tags.split(/\s*,\s*/);   }   var diff = {};   this.tags.forEach(function() {      diff[this.tag.name] = (tags.indexOf(this.tag.name) < 0) ? this : 0;   });   for each (var tag in tags) {      if (tag && diff[tag] == null) {         diff[tag] = 1;      }   }      for (var tag in diff) {      switch (diff[tag]) {         case 0:         // Do nothing (tag already exists)         break;         case 1:         // Add tag to story         Story.prototype.addTag.call(this, tag);         break;         default:         // Remove tag         Story.prototype.removeTag.call(this, diff[tag]);      }   }   return;};
meta: 993	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/993/9d08dc89aac0d7c924338b450a19800616cd3946/Story.js/clean/code/Story/Story.js