code: function addComparators(type1, type2, comparators) {
  	var comparisons = type1[setComparisonsSymbol];
  	if (!type1[setComparisonsSymbol]) {
  		comparisons = type1[setComparisonsSymbol] = new Map();
  	}
  	var subMap = comparisons.get(type1);
  
  	if (!subMap) {
  		subMap = new Map();
  		comparisons.set(type1, subMap);
  	}
  	var existingComparators = subMap.get(type2);
  	if (existingComparators) {
  		for (var prop in comparators) {
  			if (existingComparators.hasOwnProperty(prop)) {
  				console.warn("Overwriting " + type1.name + " " + prop + " " + type2.name + " comparitor");
  			}
  			existingComparators[prop] = comparators[prop];
  		}
  	} else {
  		subMap.set(type2, comparators);
  	}
  }
docs: Adds comparators to a type. They are stored like: Type[@can.setComparisons] = Map({ [type1]: Map({[type2]: {union, different, intersection}}) })  Why do we need the outer object?