code: function classIsA(classDefinition, constructor) {
  	// sneaky edge case where we're checking against an object literal we've mixed in or against a prototype of
  	//  something.
  	if (typeof constructor === 'object' && constructor.hasOwnProperty('constructor')) {
  		constructor = constructor.constructor;
  	}
  
  	assertArgumentOfType('function', classDefinition, ERROR_MESSAGES.NOT_CONSTRUCTOR, 'Class', 'classIsA');
  	assertArgumentOfType('function', constructor, ERROR_MESSAGES.NOT_CONSTRUCTOR, 'Parent', 'classIsA');
  
  	// This is just a caching wrapper around fallbackIsAssignableFrom.
  	var cache = nonenum(classDefinition, '__assignable_from_cache__', {});
  	var parentId = classId(constructor);
  	if (cache[parentId] == null) {
  		cache[parentId] = fallbackIsAssignableFrom(classDefinition, constructor);
  	}
  
  	return cache[parentId];
  }
docs: Checks to see if a class is a descendant of another class / interface / mixin.
  
  <ul><li>A class is a descendant of another class if the other class is in its prototype chain.
  </li><li>A class is a descendant of an interface if it has called implement that class or
  any class that this class is a descendant of has called implement for that class.
  </li><li>A class is a descendant of a mixin if it has called mixin for that mixin or
  any class that this class is a descendant of has called mixin for that mixin.
  </li></ul>
  
  @memberOf topiarist
  @param {function} classDefinition the child class.
  @param {function} constructor the class to check if this class is a descendant of.
  @returns {boolean} true if the class is a descendant, false otherwise.