code: function missingAttributes(classdef, protocol) {
  	var result = [], obj = classdef.prototype, requirement = protocol.prototype;
  	var item;
  	for (item in requirement) {
  		if (typeof obj[item] !== typeof requirement[item]) {
  			result.push(item);
  		}
  	}
  
  	for (item in protocol) {
  		var protocolItemType = typeof protocol[item];
  		if (protocol.hasOwnProperty(item) && protocolItemType === 'function' && typeof classdef[item] !== protocolItemType) {
  			// If we're in ie8, our internal variables won't be nonenumerable, so we include a check for that here.
  			if (internalUseNames.indexOf(item) < 0) {
  				result.push(item + ' (class method)');
  			}
  		}
  	}
  
  	return result;
  }
docs: Returns an array of all of the properties on a protocol that are not on classdef or are of a different type on
  classdef.
  @private