Data source table naming

I want to understand how the table names are constructed. I want to use the LlGetUsedIdentifiers method to find all tables that are in use, to improve performance. I am using the ObjectDataProvider.
I have for e.g. a data structure like this:

class Source
{
	List<ClassA> Table1;
	
	List<ClassB> Table2;
}

class ClassA
{
}

class ClassB
{
	List<ClassA> Table3;
}

Will the table names:

  1. Always be unique if the table (class) is used multiple times?
  2. If the table was already added, will the name table name be “{RelationTable}{ExistingTable}”? I.e. in this case I will have these 2 table names: Table1 and Table2Table1.
  3. Are the tables added from top to bottom? I.e. first Table1 and then Table2?

The code looks like this:

private string GetUniqueTableName(string parentTableName, string suggestedChildTableName)
{
        if (!_tableTypes.ContainsKey(suggestedChildTableName))
        {
            return suggestedChildTableName;
        }
        return parentTableName + suggestedChildTableName;
}

So as long as the table name is unique, it will be used directly, otherwise it will be prefixed with the parent’s name. The order depends on the order of the items returned by reflection, which should match the declaration order iirc.