public CompilerPass getProcessor(final Compiler compiler) {
registry = compiler.getTypeRegistry();
return new CompilerPass() {
@Override
public void process(Node externs, Node root) {
ScopeCreator scopeCreator =
new MemoizedScopeCreator(new TypedScopeCreator(compiler));
Scope topScope = scopeCreator.createScope(root.getParent(), null);
(new TypeInferencePass(
compiler, compiler.getReverseAbstractInterpreter(),
topScope, scopeCreator)).process(externs, root);
NodeTraversal t = new NodeTraversal(
compiler, callback, scopeCreator);