}
public SourceIndex getSourceIndex( CompilationUnit sourceTree, String source )
{
// build the source index
SourceIndex index = new SourceIndex( source );
sourceTree.acceptVisitor( new SourceIndexVisitor(), index );
// DEBUG
//sourceTree.acceptVisitor( new TreeDumpVisitor( new File( "tree.txt" ) ), null );
// resolve all the classes in the source references
for( Token token : index.referenceTokens() )
{
EntryReference<Entry,Entry> deobfReference = index.getDeobfReference( token );
// get the obfuscated entry
Entry obfEntry = obfuscateEntry( deobfReference.entry );
// try to resolve the class
ClassEntry resolvedObfClassEntry = m_jarIndex.resolveEntryClass( obfEntry );
if( resolvedObfClassEntry != null && !resolvedObfClassEntry.equals( obfEntry.getClassEntry() ) )
{
// change the class of the entry
obfEntry = obfEntry.cloneToNewClass( resolvedObfClassEntry );
// save the new deobfuscated reference
deobfReference.entry = deobfuscateEntry( obfEntry );
index.replaceDeobfReference( token, deobfReference );
}
// DEBUG
//System.out.println( token + " -> " + reference + " -> " + index.getReferenceToken( reference ) );
}