// This will be a map of (base SchemaType -> Collection of directly dervied types)
Map childTypes = new HashMap();
// breadthfirst traversal of the type containment tree
List allSeenTypes = new ArrayList();
allSeenTypes.addAll(Arrays.asList(typeSystem.documentTypes()));
allSeenTypes.addAll(Arrays.asList(typeSystem.attributeTypes()));
allSeenTypes.addAll(Arrays.asList(typeSystem.globalTypes()));
for (int i = 0; i < allSeenTypes.size(); i++)
{