protected void build ( EObject object , ISourceAppender appender ) throws IOException { final IJvmTypeProvider provider = getTypeResolutionContext ( ) ; if ( provider != null ) { final Map < Key < ? > , Binding < ? > > bindings = this . originalInjector . getBindings ( ) ; Injector localInjector = CodeBuilderFactory . createOverridingInjector ( this . originalInjector , ( binder ) - > binder . bind ( AbstractTypeScopeProvider . class ) . toInstance ( AbstractSourceAppender . this . scopeProvider ) ) ; final IScopeProvider oldDelegate = this . typeScopes . getDelegate ( ) ; localInjector . injectMembers ( this . typeScopes ) ; try { final AppenderSerializer serializer = localInjector . getProvider ( AppenderSerializer . class ) . get ( ) ; serializer . serialize ( object , appender , isFormatting ( ) ) ; } finally { try { final Field f = DelegatingScopes . class . getDeclaredField ( "delegate" ) ; if ( ! f . isAccessible ( ) ) { f . setAccessible ( true ) ; } f . set ( this . typeScopes , oldDelegate ) ; } catch ( Exception exception ) { throw new Error ( exception ) ; } } } else { final AppenderSerializer serializer = this . originalInjector . getProvider ( AppenderSerializer . class ) . get ( ) ; serializer . serialize ( object , appender , isFormatting ( ) ) ; } }
Build the source code and put it into the given appender .