code: function(contentTypeA, contentTypeB) {
  			contentTypeA = (typeof contentTypeA === "string") ? this.getContentType(contentTypeA) : contentTypeA; //$NON-NLS-0$
  			contentTypeB = (typeof contentTypeB === "string") ? this.getContentType(contentTypeB) : contentTypeB; //$NON-NLS-0$
  			if (!contentTypeA || !contentTypeB) { return false; }
  			if (contentTypeA.id === contentTypeB.id) { return true; }
  			else {
  				var parent = contentTypeA, seen = {};
  				while (parent && (parent = this.getContentType(parent['extends']))) { //$NON-NLS-0$
  					if (parent.id === contentTypeB.id) { return true; }
  					if (seen[parent.id]) { throw new Error("Cycle: " + parent.id); } //$NON-NLS-0$
  					seen[parent.id] = true;
  				}
  			}
  			return false;
  		}
docs: Determines whether a ContentType is an extension of another.
  @param {orion.core.ContentType|String} contentTypeA ContentType or ContentType ID.
  @param {orion.core.ContentType|String} contentTypeB ContentType or ContentType ID.
  @returns {Boolean} Returns <code>true</code> if <code>contentTypeA</code> equals <code>contentTypeB</code>,
  or <code>contentTypeA</code> descends from <code>contentTypeB</code>.