PrintWriterManager writerManager, DesignTimeUtils designTime)
throws UnableToCompleteException {
MortalLogger logger = new MortalLogger(treeLogger);
String templatePath = deduceTemplateFile(logger, interfaceType);
MessagesWriter messages = new MessagesWriter(oracle, BINDER_URI, logger,
templatePath, interfaceType.getPackage().getName(), implName);
boolean useLazyWidgetBuilders = useLazyWidgetBuilders(logger, propertyOracle);
FieldManager fieldManager = new FieldManager(oracle, logger, useLazyWidgetBuilders);
UiBinderWriter uiBinderWriter = new UiBinderWriter(interfaceType, implName,
templatePath, oracle, logger, fieldManager, messages, designTime, uiBinderCtx,
useSafeHtmlTemplates(logger, propertyOracle), useLazyWidgetBuilders, BINDER_URI);
Document doc = getW3cDoc(logger, designTime, resourceOracle, templatePath);
designTime.rememberPathForElements(doc);
uiBinderWriter.parseDocument(doc, binderPrintWriter);
if (messages.hasMessages()) {
messages.write(writerManager.makePrintWriterFor(messages.getMessagesClassName()));
}
ImplicitClientBundle bundleClass = uiBinderWriter.getBundleClass();
new BundleWriter(bundleClass, writerManager, oracle, logger).write();