var key = "";
if( structKeyExists(arguments.metadata,"name") AND listFindNoCase(accumulator,arguments.metaData.name) eq 0 ){
accumulator = accumulator & arguments.metaData.name & ",";
}
if(structKeyExists(arguments.metaData,"extends")){
//why, oh why, is the structure different for interfaces vs. extends? For F**k's sake!
if( structKeyExists( metadata.extends, "name" ) ){
accumulator = buildInheritanceTree(metaData.extends, accumulator);
}else{
accumulator = buildInheritanceTree(metadata.extends[ structKeyList(metadata.extends) ], accumulator);
}
}
if(structKeyExists(arguments.metaData,"implements")){
for(key in arguments.metadata.implements){
accumulator = buildInheritanceTree(metaData.implements[ key ], accumulator);
}
}
return accumulator;