{
Logger logger = mockLogger();
replay();
ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
assertEquals(ct.newMemberName("fred"), "_$fred");
assertEquals(ct.newMemberName("fred"), "_$fred_0");
// Here we're exposing a bit of the internal algorithm, which strips
// off '$' and '_' before tacking "_$" in front.
assertEquals(ct.newMemberName("_fred"), "_$fred_1");
assertEquals(ct.newMemberName("_$fred"), "_$fred_2");
assertEquals(ct.newMemberName("__$___$____$_fred"), "_$fred_3");
// Here we're trying to force conflicts with existing declared
// fields and methods of the class.
assertEquals(ct.newMemberName("_parentField"), "_$parentField");
assertEquals(ct.newMemberName("conflictField"), "_$conflictField_0");
assertEquals(ct.newMemberName("conflictMethod"), "_$conflictMethod_0");
verify();
}