### Question:
SymbolAllocator { public Symbol newSymbol(Symbol symbolHint) { return newSymbol(symbolHint, null); } SymbolAllocator();  SymbolAllocator(Map<Symbol, Type> initial); Symbol newSymbol(Symbol symbolHint); Symbol newSymbol(Symbol symbolHint, String suffix); Symbol newSymbol(String nameHint, Type type); Symbol newHashSymbol(); Symbol newSymbol(String nameHint, Type type, String suffix); Symbol newSymbol(Expression expression, Type type); Symbol newSymbol(Expression expression, Type type, String suffix); Symbol newSymbol(Field field); TypeProvider getTypes();  }### Answer:
@Test public void testUnique() { SymbolAllocator allocator = new SymbolAllocator(); Set<Symbol> symbols = ImmutableSet.<Symbol>builder() .add(allocator.newSymbol("foo_1_0", BigintType.BIGINT)) .add(allocator.newSymbol("foo", BigintType.BIGINT)) .add(allocator.newSymbol("foo", BigintType.BIGINT)) .add(allocator.newSymbol("foo", BigintType.BIGINT)) .build(); assertEquals(symbols.size(), 4); }