static InMemorySymbolTable generate(SymbolTableNameHandler symbolTableNameHandler, Set<DataSchema> resourceSchemas)
  {
    Set<String> symbols = new HashSet<>();
    addFrameworkSymbols(symbols);
    Set<DataSchema> frameworkSchemas = new HashSet<>();
    collectFrameworkSchemas(frameworkSchemas);

    Set<DataSchema> processedSchemas = new HashSet<>();
    frameworkSchemas.forEach(schema -> expandAndCollectSymbols(schema, processedSchemas, symbols));
    resourceSchemas.forEach(schema -> expandAndCollectSymbols(schema, processedSchemas, symbols));

    // Sort symbols to ensure stable ordering across invocations for the same input.
    List<String> symbolList = new ArrayList<>(symbols);
    Collections.sort(symbolList);
    String symbolTableName = symbolTableNameHandler.generateName(symbolList);
    return new InMemorySymbolTable(symbolTableName, symbolList);
  }
@Test
  public void testSymbolTableGenerator()
  {
    DataSchema schema = DataTemplateUtil.getSchema(SimpleGreeting.class);
    SymbolTableNameHandler handler = new SymbolTableNameHandler("Haha", "https://localhost:1000/service");
    InMemorySymbolTable symbolTable = RuntimeSymbolTableGenerator.generate(handler, Collections.singleton(schema));
    Assert.assertEquals(37, symbolTable.size());
  }