docs: 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());
  		}
  	}