[fidl][dart] Test FIDL dangerous identifiers

This implements the FIDL dangerous identifiers test for Dart and fixes
some problems that the test found:
 - List, Map, override and toString should be escaped
 - callback names should use the transformed name
 - fields and methods on Enum types are prefixed with $ so as to not
   conflict with enum member names.

The reserved words list is now contextual so that a word that is
reserved as a global declaration (eg: List) would be allowed as a
protocol method name.

This test has allowed us to see that many identifiers that were formerly
mangled (eg: external) don't need to be mangled any more.

There's downstream code that uses EnumType.values and UnionType.tag so
to allow a soft transition EnumType.values is a synonym for
EnumType.$values, UnionType.tag is a synonym for UnionType.$tag, for
now. See FIDL-587.

FIDL-259
FIDL-107 #done

Change-Id: I316a433081b75ae04d6dd4dbcef94b07f4a5b137
diff --git a/bin/dart_fidl_json/json.fidlmerge b/bin/dart_fidl_json/json.fidlmerge
index 93319a5..29cacc3 100644
--- a/bin/dart_fidl_json/json.fidlmerge
+++ b/bin/dart_fidl_json/json.fidlmerge
@@ -282,7 +282,7 @@
 class {{ $className }} {
   static Object toJson(Object unionVal) {
     if (unionVal is {{ $type }}) {
-      switch(unionVal.tag) {
+      switch(unionVal.$tag) {
       {{- range .Members }}
         {{- $member_name := toLowerCamelCase .Name }}
          {{- $value_expr := print "unionVal." $member_name }}
diff --git a/bin/fidlgen_dart/backend/ir/ir.go b/bin/fidlgen_dart/backend/ir/ir.go
index 1f9e295..72769ff 100644
--- a/bin/fidlgen_dart/backend/ir/ir.go
+++ b/bin/fidlgen_dart/backend/ir/ir.go
@@ -69,6 +69,7 @@
 	Type     Type
 	Name     string
 	CtorName string
+	Tag      string
 	Offset   int
 	typeExpr string
 	Documented
@@ -92,6 +93,7 @@
 	Type     Type
 	Name     string
 	CtorName string
+	Tag      string
 	Offset   int
 	Documented
 }
@@ -206,69 +208,102 @@
 	XUnions     []XUnion
 }
 
-// FIXME(FIDL-107): Add "get" and "set" back to this list.
-// They are only reserved in certain contexts.  We should add them
-// back but also make the code generator smarter about escaping
-// reserved words to avoid style violations in various contexts.
-var reservedWords = map[string]bool{
-	// "Error":      true,
-	"abstract":   true,
-	"as":         true,
-	"assert":     true,
-	"async":      true,
-	"await":      true,
-	"break":      true,
-	"bool":       true,
-	"case":       true,
-	"catch":      true,
-	"class":      true,
-	"const":      true,
-	"continue":   true,
-	"covariant":  true,
-	"default":    true,
-	"deferred":   true,
-	"do":         true,
-	"double":     true,
-	"dynamic":    true,
-	"else":       true,
-	"enum":       true,
-	"export":     true,
-	"extends":    true,
-	"external":   true,
-	"factory":    true,
-	"false":      true,
-	"final":      true,
-	"finally":    true,
-	"for":        true,
-	"if":         true,
-	"implements": true,
-	"import":     true,
-	"in":         true,
-	"int":        true,
-	"is":         true,
-	"library":    true,
-	"new":        true,
-	"null":       true,
-	"num":        true,
-	"Object":     true,
-	"operator":   true,
-	"part":       true,
-	"rethrow":    true,
-	"return":     true,
-	"static":     true,
-	"String":     true,
-	"super":      true,
-	"switch":     true,
-	"this":       true,
-	"throw":      true,
-	"true":       true,
-	"try":        true,
-	"typedef":    true,
-	"var":        true,
-	"void":       true,
-	"while":      true,
-	"with":       true,
-	"yield":      true,
+type context map[string]bool
+
+var (
+	// Name of an enum member
+	enumMemberContext context = make(context)
+	// Name of a struct member
+	structMemberContext = make(context)
+	// Name of a table member
+	tableMemberContext = make(context)
+	// Name of a union member
+	unionMemberContext = make(context)
+	// Tag of a union member
+	unionMemberTagContext = make(context)
+	// Name of a constant
+	constantContext = make(context)
+	// Name of a top-level declaration (other than a constant)
+	declarationContext = make(context)
+	// Name of a method
+	methodContext = make(context)
+	// Name of a method parameter
+	parameterContext = make(context)
+	// Everywhere
+)
+
+func init() {
+	var allContexts = []context{enumMemberContext, structMemberContext, tableMemberContext,
+		unionMemberContext, unionMemberTagContext, constantContext, declarationContext,
+		methodContext, parameterContext}
+
+	var reservedWords = map[string][]context{
+		"assert":       allContexts,
+		"async":        allContexts,
+		"await":        allContexts,
+		"break":        allContexts,
+		"bool":         []context{structMemberContext, tableMemberContext},
+		"case":         allContexts,
+		"catch":        allContexts,
+		"class":        allContexts,
+		"const":        allContexts,
+		"continue":     allContexts,
+		"default":      allContexts,
+		"do":           allContexts,
+		"double":       []context{structMemberContext, tableMemberContext},
+		"dynamic":      []context{enumMemberContext, methodContext, unionMemberContext, constantContext, tableMemberContext, structMemberContext},
+		"else":         allContexts,
+		"enum":         allContexts,
+		"extends":      allContexts,
+		"false":        allContexts,
+		"final":        allContexts,
+		"finally":      allContexts,
+		"for":          allContexts,
+		"hashCode":     []context{methodContext, enumMemberContext, unionMemberContext, structMemberContext, tableMemberContext},
+		"noSuchMethod": []context{methodContext, enumMemberContext, unionMemberContext, structMemberContext, tableMemberContext},
+		"runtimeType":  []context{methodContext, enumMemberContext, unionMemberContext, structMemberContext, tableMemberContext},
+		"index":        []context{unionMemberTagContext},
+		"if":           allContexts,
+		"in":           allContexts,
+		"int":          []context{enumMemberContext, methodContext, unionMemberContext, constantContext, tableMemberContext, structMemberContext},
+		"is":           allContexts,
+		"List":         []context{declarationContext},
+		"Map":          []context{declarationContext},
+		"new":          allContexts,
+		"null":         allContexts,
+		"Null":         []context{declarationContext},
+		"num":          []context{enumMemberContext, methodContext, unionMemberContext, constantContext, tableMemberContext, structMemberContext},
+		"Object":       []context{declarationContext},
+		"override":     allContexts,
+		"rethrow":      allContexts,
+		"return":       allContexts,
+		"String":       allContexts,
+		"super":        allContexts,
+		"switch":       allContexts,
+		"this":         allContexts,
+		"throw":        allContexts,
+		"toString":     []context{methodContext, enumMemberContext, structMemberContext, tableMemberContext, unionMemberContext},
+		"true":         allContexts,
+		"try":          allContexts,
+		"values":       []context{unionMemberTagContext},
+		"var":          allContexts,
+		"void":         allContexts,
+		"while":        allContexts,
+		"with":         allContexts,
+		"yield":        allContexts,
+	}
+	for word, ctxs := range reservedWords {
+		for _, ctx := range ctxs {
+			ctx[word] = true
+		}
+	}
+}
+
+func (ctx context) changeIfReserved(str string) string {
+	if ctx[str] {
+		return str + "$"
+	}
+	return str
 }
 
 var declForPrimitiveType = map[types.PrimitiveSubtype]string{
@@ -432,10 +467,10 @@
 
 func typeExprForMethod(request []Parameter, response []Parameter, name string) string {
 	return fmt.Sprintf(`$fidl.MethodType(
-    request: %s,
-	response: %s,
-	name: r"%s",
-  )`, formatParameterList(request), formatParameterList(response), name)
+	    request: %s,
+		response: %s,
+		name: r"%s",
+	  )`, formatParameterList(request), formatParameterList(response), name)
 }
 
 func typeExprForPrimitiveSubtype(val types.PrimitiveSubtype) string {
@@ -450,18 +485,6 @@
 	return fmt.Sprintf("lib$%s", formatLibraryName(library))
 }
 
-func isReservedWord(str string) bool {
-	_, ok := reservedWords[str]
-	return ok
-}
-
-func changeIfReserved(str string) string {
-	if isReservedWord(str) {
-		return str + "$"
-	}
-	return str
-}
-
 type compiler struct {
 	decls     *types.DeclMap
 	library   types.LibraryIdentifier
@@ -496,33 +519,33 @@
 	return t
 }
 
-func (c *compiler) compileUpperCamelIdentifier(val types.Identifier) string {
-	return changeIfReserved(common.ToUpperCamelCase(string(val)))
+func (c *compiler) compileUpperCamelIdentifier(val types.Identifier, context context) string {
+	return context.changeIfReserved(common.ToUpperCamelCase(string(val)))
 }
 
-func (c *compiler) compileLowerCamelIdentifier(val types.Identifier) string {
-	return changeIfReserved(common.ToLowerCamelCase(string(val)))
+func (c *compiler) compileLowerCamelIdentifier(val types.Identifier, context context) string {
+	return context.changeIfReserved(common.ToLowerCamelCase(string(val)))
 }
 
-func (c *compiler) compileCompoundIdentifier(val types.CompoundIdentifier) string {
+func (c *compiler) compileCompoundIdentifier(val types.CompoundIdentifier, context context) string {
 	strs := []string{}
 	if c.inExternalLibrary(val) {
 		strs = append(strs, libraryPrefix(val.Library))
 	}
-	strs = append(strs, changeIfReserved(string(val.Name)))
+	strs = append(strs, context.changeIfReserved(string(val.Name)))
 	return strings.Join(strs, ".")
 }
 
-func (c *compiler) compileUpperCamelCompoundIdentifier(val types.CompoundIdentifier, ext string) string {
-	str := changeIfReserved(common.ToUpperCamelCase(string(val.Name))) + ext
+func (c *compiler) compileUpperCamelCompoundIdentifier(val types.CompoundIdentifier, ext string, context context) string {
+	str := context.changeIfReserved(common.ToUpperCamelCase(string(val.Name))) + ext
 	val.Name = types.Identifier(str)
-	return c.compileCompoundIdentifier(val)
+	return c.compileCompoundIdentifier(val, context)
 }
 
-func (c *compiler) compileLowerCamelCompoundIdentifier(val types.CompoundIdentifier, ext string) string {
-	str := changeIfReserved(common.ToLowerCamelCase(string(val.Name))) + ext
+func (c *compiler) compileLowerCamelCompoundIdentifier(val types.CompoundIdentifier, ext string, context context) string {
+	str := context.changeIfReserved(common.ToLowerCamelCase(string(val.Name))) + ext
 	val.Name = types.Identifier(str)
-	return c.compileCompoundIdentifier(val)
+	return c.compileCompoundIdentifier(val, context)
 }
 
 func (c *compiler) compileLiteral(val types.Literal) string {
@@ -548,7 +571,7 @@
 func (c *compiler) compileConstant(val types.Constant, t *Type) string {
 	switch val.Kind {
 	case types.IdentifierConstant:
-		v := c.compileLowerCamelCompoundIdentifier(types.ParseCompoundIdentifier(val.Identifier), "")
+		v := c.compileLowerCamelCompoundIdentifier(types.ParseCompoundIdentifier(val.Identifier), "", constantContext)
 		if t != nil && t.declType == types.EnumDeclType {
 			v = fmt.Sprintf("%s.%s", t.Decl, v)
 		}
@@ -618,25 +641,27 @@
 		r.typeExpr = fmt.Sprintf("$fidl.StringType(maybeElementCount: %s, nullable: %s)",
 			formatInt(val.ElementCount), formatBool(val.Nullable))
 	case types.HandleType:
+		var subtype string
 		switch val.HandleSubtype {
 		case "channel":
-			r.Decl = "Channel"
+			subtype = "Channel"
 		case "eventpair":
-			r.Decl = "EventPair"
+			subtype = "EventPair"
 		case "socket":
-			r.Decl = "Socket"
+			subtype = "Socket"
 		case "vmo":
-			r.Decl = "Vmo"
+			subtype = "Vmo"
 		default:
-			r.Decl = "Handle"
+			subtype = "Handle"
 		}
+		r.Decl = "$zx." + subtype
 		r.SyncDecl = r.Decl
 		r.AsyncDecl = r.Decl
 		r.typeExpr = fmt.Sprintf("$fidl.%sType(nullable: %s)",
-			r.Decl, formatBool(val.Nullable))
+			subtype, formatBool(val.Nullable))
 	case types.RequestType:
 		compound := types.ParseCompoundIdentifier(val.RequestSubtype)
-		t := c.compileUpperCamelCompoundIdentifier(compound, "")
+		t := c.compileUpperCamelCompoundIdentifier(compound, "", declarationContext)
 		r.Decl = fmt.Sprintf("$fidl.InterfaceRequest<%s>", t)
 		if c.inExternalLibrary(compound) {
 			r.SyncDecl = fmt.Sprintf("$fidl.InterfaceRequest<sync$%s>", t)
@@ -654,7 +679,7 @@
 		r.typeExpr = typeExprForPrimitiveSubtype(val.PrimitiveSubtype)
 	case types.IdentifierType:
 		compound := types.ParseCompoundIdentifier(val.Identifier)
-		t := c.compileUpperCamelCompoundIdentifier(compound, "")
+		t := c.compileUpperCamelCompoundIdentifier(compound, "", declarationContext)
 		declType, ok := (*c.decls)[val.Identifier]
 		if !ok {
 			log.Fatal("Unknown identifier: ", val.Identifier)
@@ -718,10 +743,10 @@
 
 func (c *compiler) compileConst(val types.Const) Const {
 	r := Const{
-		c.compileType(val.Type),
-		c.compileLowerCamelCompoundIdentifier(types.ParseCompoundIdentifier(val.Name), ""),
-		c.compileConstant(val.Value, nil),
-		docString(val),
+		Type:       c.compileType(val.Type),
+		Name:       c.compileLowerCamelCompoundIdentifier(types.ParseCompoundIdentifier(val.Name), "", constantContext),
+		Value:      c.compileConstant(val.Value, nil),
+		Documented: docString(val),
 	}
 	if r.Type.declType == types.EnumDeclType {
 		r.Value = fmt.Sprintf("%s.%s", r.Type.Decl, r.Value)
@@ -731,19 +756,19 @@
 
 func (c *compiler) compileEnum(val types.Enum) Enum {
 	ci := types.ParseCompoundIdentifier(val.Name)
-	n := c.compileUpperCamelCompoundIdentifier(ci, "")
+	n := c.compileUpperCamelCompoundIdentifier(ci, "", declarationContext)
 	e := Enum{
-		n,
-		[]EnumMember{},
-		c.typeSymbolForCompoundIdentifier(ci),
-		fmt.Sprintf("$fidl.EnumType<%s>(type: %s, ctor: %s._ctor)", n, typeExprForPrimitiveSubtype(val.Type), n),
-		docString(val),
+		Name:       n,
+		Members:    []EnumMember{},
+		TypeSymbol: c.typeSymbolForCompoundIdentifier(ci),
+		TypeExpr:   fmt.Sprintf("$fidl.EnumType<%s>(type: %s, ctor: %s._ctor)", n, typeExprForPrimitiveSubtype(val.Type), n),
+		Documented: docString(val),
 	}
 	for _, v := range val.Members {
 		e.Members = append(e.Members, EnumMember{
-			c.compileLowerCamelIdentifier(v.Name),
-			c.compileConstant(v.Value, nil),
-			docString(v),
+			Name:       c.compileLowerCamelIdentifier(v.Name, enumMemberContext),
+			Value:      c.compileConstant(v.Value, nil),
+			Documented: docString(v),
 		})
 	}
 	return e
@@ -754,7 +779,7 @@
 		t         = c.compileType(paramType)
 		typeStr   = fmt.Sprintf("type: %s", t.typeExpr)
 		offsetStr = fmt.Sprintf("offset: %v", offset)
-		name      = c.compileLowerCamelIdentifier(paramName)
+		name      = c.compileLowerCamelIdentifier(paramName, parameterContext)
 		convert   string
 	)
 	if t.declType == types.InterfaceDeclType {
@@ -850,7 +875,7 @@
 
 func (c *compiler) compileMethod(val types.Method, protocol Interface) Method {
 	var (
-		name               = c.compileLowerCamelIdentifier(val.Name)
+		name               = c.compileLowerCamelIdentifier(val.Name, methodContext)
 		request            = c.compileParameterArray(val.Request)
 		response           = c.compileMethodResponse(val)
 		asyncResponseClass string
@@ -884,7 +909,7 @@
 		ResponseSize:       val.ResponseSize,
 		AsyncResponseClass: asyncResponseClass,
 		AsyncResponseType:  asyncResponseType,
-		CallbackType:       fmt.Sprintf("%s%sCallback", protocol.Name, val.Name),
+		CallbackType:       fmt.Sprintf("%s%sCallback", protocol.Name, c.compileUpperCamelIdentifier(val.Name, methodContext)),
 		TypeSymbol:         fmt.Sprintf("_k%s_%s_Type", protocol.Name, val.Name),
 		TypeExpr:           typeExprForMethod(request, response.WireParameters, fmt.Sprintf("%s.%s", protocol.Name, val.Name)),
 		Transitional:       transitional,
@@ -895,12 +920,12 @@
 func (c *compiler) compileInterface(val types.Interface) Interface {
 	ci := types.ParseCompoundIdentifier(val.Name)
 	r := Interface{
-		c.compileUpperCamelCompoundIdentifier(ci, ""),
+		c.compileUpperCamelCompoundIdentifier(ci, "", declarationContext),
 		val.GetServiceName(),
-		c.compileUpperCamelCompoundIdentifier(ci, "Data"),
-		c.compileUpperCamelCompoundIdentifier(ci, "Proxy"),
-		c.compileUpperCamelCompoundIdentifier(ci, "Binding"),
-		c.compileUpperCamelCompoundIdentifier(ci, "Events"),
+		c.compileUpperCamelCompoundIdentifier(ci, "Data", declarationContext),
+		c.compileUpperCamelCompoundIdentifier(ci, "Proxy", declarationContext),
+		c.compileUpperCamelCompoundIdentifier(ci, "Binding", declarationContext),
+		c.compileUpperCamelCompoundIdentifier(ci, "Events", declarationContext),
 		[]Method{},
 		false,
 		docString(val),
@@ -933,7 +958,7 @@
 	offsetStr := fmt.Sprintf("offset: %v", val.Offset)
 	return StructMember{
 		t,
-		c.compileLowerCamelIdentifier(val.Name),
+		c.compileLowerCamelIdentifier(val.Name, structMemberContext),
 		defaultValue,
 		val.Offset,
 		fmt.Sprintf("$fidl.MemberType<%s>(%s, %s)", t.Decl, typeStr, offsetStr),
@@ -944,12 +969,12 @@
 func (c *compiler) compileStruct(val types.Struct) Struct {
 	ci := types.ParseCompoundIdentifier(val.Name)
 	r := Struct{
-		c.compileUpperCamelCompoundIdentifier(ci, ""),
-		[]StructMember{},
-		c.typeSymbolForCompoundIdentifier(ci),
-		"",
-		false,
-		docString(val),
+		Name:             c.compileUpperCamelCompoundIdentifier(ci, "", declarationContext),
+		Members:          []StructMember{},
+		TypeSymbol:       c.typeSymbolForCompoundIdentifier(ci),
+		TypeExpr:         "",
+		HasNullableField: false,
+		Documented:       docString(val),
 	}
 
 	var hasNullableField = false
@@ -989,7 +1014,7 @@
 	return TableMember{
 		Ordinal:      val.Ordinal,
 		Type:         t,
-		Name:         c.compileLowerCamelIdentifier(val.Name),
+		Name:         c.compileLowerCamelIdentifier(val.Name, tableMemberContext),
 		DefaultValue: defaultValue,
 		Documented:   docString(val),
 	}
@@ -998,7 +1023,7 @@
 func (c *compiler) compileTable(val types.Table) Table {
 	ci := types.ParseCompoundIdentifier(val.Name)
 	r := Table{
-		Name:       c.compileUpperCamelCompoundIdentifier(ci, ""),
+		Name:       c.compileUpperCamelCompoundIdentifier(ci, "", declarationContext),
 		TypeSymbol: c.typeSymbolForCompoundIdentifier(ci),
 		Documented: docString(val),
 	}
@@ -1022,24 +1047,25 @@
 	typeStr := fmt.Sprintf("type: %s", t.typeExpr)
 	offsetStr := fmt.Sprintf("offset: %v", val.Offset)
 	return UnionMember{
-		t,
-		c.compileLowerCamelIdentifier(val.Name),
-		c.compileUpperCamelIdentifier(val.Name),
-		val.Offset,
-		fmt.Sprintf("$fidl.MemberType<%s>(%s, %s)", t.Decl, typeStr, offsetStr),
-		docString(val),
+		Type:       t,
+		Name:       c.compileLowerCamelIdentifier(val.Name, unionMemberContext),
+		CtorName:   c.compileUpperCamelIdentifier(val.Name, unionMemberContext),
+		Tag:        c.compileLowerCamelIdentifier(val.Name, unionMemberTagContext),
+		Offset:     val.Offset,
+		typeExpr:   fmt.Sprintf("$fidl.MemberType<%s>(%s, %s)", t.Decl, typeStr, offsetStr),
+		Documented: docString(val),
 	}
 }
 
 func (c *compiler) compileUnion(val types.Union) Union {
 	ci := types.ParseCompoundIdentifier(val.Name)
 	r := Union{
-		c.compileUpperCamelCompoundIdentifier(ci, ""),
-		c.compileUpperCamelCompoundIdentifier(ci, "Tag"),
-		[]UnionMember{},
-		c.typeSymbolForCompoundIdentifier(ci),
-		"",
-		docString(val),
+		Name:       c.compileUpperCamelCompoundIdentifier(ci, "", declarationContext),
+		TagName:    c.compileUpperCamelCompoundIdentifier(ci, "Tag", declarationContext),
+		Members:    []UnionMember{},
+		TypeSymbol: c.typeSymbolForCompoundIdentifier(ci),
+		TypeExpr:   "",
+		Documented: docString(val),
 	}
 
 	for _, v := range val.Members {
@@ -1061,8 +1087,9 @@
 		members = append(members, XUnionMember{
 			Ordinal:    member.Ordinal,
 			Type:       memberType,
-			Name:       c.compileLowerCamelIdentifier(member.Name),
-			CtorName:   c.compileUpperCamelIdentifier(member.Name),
+			Name:       c.compileLowerCamelIdentifier(member.Name, unionMemberContext),
+			CtorName:   c.compileUpperCamelIdentifier(member.Name, unionMemberContext),
+			Tag:        c.compileLowerCamelIdentifier(member.Name, unionMemberTagContext),
 			Offset:     member.Offset,
 			Documented: docString(member),
 		})
@@ -1070,8 +1097,8 @@
 
 	ci := types.ParseCompoundIdentifier(val.Name)
 	r := XUnion{
-		Name:          c.compileUpperCamelCompoundIdentifier(ci, ""),
-		TagName:       c.compileUpperCamelCompoundIdentifier(ci, "Tag"),
+		Name:          c.compileUpperCamelCompoundIdentifier(ci, "", declarationContext),
+		TagName:       c.compileUpperCamelCompoundIdentifier(ci, "Tag", declarationContext),
 		TypeSymbol:    c.typeSymbolForCompoundIdentifier(ci),
 		OptTypeSymbol: c.optTypeSymbolForCompoundIdentifier(ci),
 		Members:       members,
diff --git a/bin/fidlgen_dart/backend/templates/enum.tmpl.go b/bin/fidlgen_dart/backend/templates/enum.tmpl.go
index 68cdc12..e8ad26a 100644
--- a/bin/fidlgen_dart/backend/templates/enum.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/enum.tmpl.go
@@ -29,28 +29,31 @@
   static const {{ $.Name }} {{ .Name }} = {{ $.Name }}._({{ .Value }});
 {{- end }}
 
-  const {{ .Name }}._(this.value);
+  const {{ .Name }}._(this.$value);
 
   @override
-  final int value;
+  final int $value;
 
-  static const Map<String, {{ .Name }}> valuesMap = {
+  static const Map<String, {{ .Name }}> $valuesMap = {
   {{- range .Members }}
     r'{{ .Name }}': {{ .Name }},
   {{- end }}
   };
 
-  static const List<{{ .Name }}> values = [
+  static const List<{{ .Name }}> $values = [
     {{- range .Members }}
     {{ .Name }},
     {{- end }}
   ];
 
-  static {{ .Name }} valueOf(String name) => valuesMap[name];
+  // TODO: remove, see: FIDL-587
+  static const List<{{ .Name }}> values = {{ .Name }}.$values;
+
+  static {{ .Name }} $valueOf(String name) => $valuesMap[name];
 
   @override
   String toString() {
-    switch (value) {
+    switch ($value) {
   {{- range .Members }}
       case {{ .Value }}:
         return r'{{ $.Name }}.{{ .Name }}';
diff --git a/bin/fidlgen_dart/backend/templates/interface.tmpl.go b/bin/fidlgen_dart/backend/templates/interface.tmpl.go
index 4ad038f..776763d 100644
--- a/bin/fidlgen_dart/backend/templates/interface.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/interface.tmpl.go
@@ -282,7 +282,7 @@
   {{- end }}
 {{- end }}
       default:
-        throw $fidl.FidlError('Unexpected message name for {{ .BindingName }}');
+        throw $fidl.FidlError(r'Unexpected message name for {{ .BindingName }}');
     }
   }
 }
@@ -317,9 +317,9 @@
 
 {{- define "AsyncReturn" -}}
 {{- if .HasResponse -}}
-Future<{{ .AsyncResponseType }}>
+$async.Future<{{ .AsyncResponseType }}>
 {{- else -}}
-Future<void>
+$async.Future<void>
 {{- end -}}
 {{- end -}}
 
@@ -420,7 +420,7 @@
     {{- end }}
     {{ template "AsyncReturn" . }} {{ .Name }}({{ template "AsyncParams" .Request }})
     {{- if .Transitional }}
-      { return Future.error(UnimplementedError()); }
+      { return $async.Future.error(UnimplementedError()); }
     {{- else }}
       ;
     {{- end }}
@@ -428,9 +428,9 @@
     {{- range .Doc }}
     ///{{ . -}}
     {{- end }}
-    Stream<{{ .AsyncResponseType}}> get {{ .Name }}
+    $async.Stream<{{ .AsyncResponseType}}> get {{ .Name }}
     {{- if .Transitional }}
-      { return Stream.empty(); }
+      { return $async.Stream.empty(); }
     {{- else }}
       ;
     {{- end }}
@@ -518,7 +518,7 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
@@ -585,7 +585,7 @@
     @override
     {{ template "AsyncReturn" . }} {{ .Name }}({{ template "AsyncParams" .Request }}) async {
       if (!ctrl.isBound) {
-        return Future.error($fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'), StackTrace.current);
+        return $async.Future.error($fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'), StackTrace.current);
       }
 
       final $fidl.Encoder $encoder = $fidl.Encoder();
@@ -599,22 +599,22 @@
       {{- end }}
 
       {{- if .HasResponse }}
-        final $completer = Completer<{{ .AsyncResponseType }}>();
+        final $completer = $async.Completer<{{ .AsyncResponseType }}>();
         ctrl.sendMessageWithResponse($encoder.message, $completer);
         return $completer.future;
       {{- else }}
-        return Future.sync(() {
+        return $async.Future.sync(() {
           ctrl.sendMessage($encoder.message);
         });
       {{- end }}
     }
   {{ else }}
-    final _{{ .Name }}EventStreamController = StreamController<{{ .AsyncResponseType }}>.broadcast();
+    final _{{ .Name }}EventStreamController = $async.StreamController<{{ .AsyncResponseType }}>.broadcast();
     {{- range .Doc }}
     ///{{ . -}}
     {{- end }}
     @override
-    Stream<{{ .AsyncResponseType }}> get {{ .Name }} => _{{ .Name }}EventStreamController.stream;
+    $async.Stream<{{ .AsyncResponseType }}> get {{ .Name }} => _{{ .Name }}EventStreamController.stream;
   {{ end }}
 {{- end }}
 }
@@ -622,7 +622,7 @@
 class {{ .BindingName }} extends $fidl.AsyncBinding<{{ .Name }}> {
   {{ .BindingName }}() : super(r"{{ .Name }}")
   {{- if .HasEvents }} {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -721,7 +721,7 @@
       {{- end }}
     {{- end }}
       default:
-        throw $fidl.FidlError('Unexpected message name for {{ .BindingName }}');
+        throw $fidl.FidlError(r'Unexpected message name for {{ .BindingName }}');
     }
   }
 }
@@ -737,11 +737,11 @@
   @override
   {{- if .HasRequest }}
   {{ template "AsyncReturn" . }} {{ .Name }}({{ template "AsyncParams" .Request }}) {
-    return Future.error(UnimplementedError());
+    return $async.Future.error(UnimplementedError());
   }
   {{- else }}
-  Stream<{{ .AsyncResponseType}}> get {{ .Name }} {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<{{ .AsyncResponseType}}> get {{ .Name }} {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
   {{- end }}
 {{- end }}
diff --git a/bin/fidlgen_dart/backend/templates/library.tmpl.go b/bin/fidlgen_dart/backend/templates/library.tmpl.go
index 5a46c2d..f7a410b 100644
--- a/bin/fidlgen_dart/backend/templates/library.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/library.tmpl.go
@@ -21,7 +21,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 {{ range .Imports -}}
 import '{{ .URL }}' as {{ .LocalName }};
@@ -94,13 +94,14 @@
 
 library {{ .LibraryName }}_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 {{ range .Imports -}}
 import '{{ .AsyncURL }}' as {{ .LocalName }};
@@ -173,13 +174,13 @@
 
 library {{ .LibraryName }}_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 {{ range .Imports -}}
 import '{{ .AsyncURL }}' as {{ .LocalName }};
diff --git a/bin/fidlgen_dart/backend/templates/union.tmpl.go b/bin/fidlgen_dart/backend/templates/union.tmpl.go
index 4fe3146..0efc5ff 100644
--- a/bin/fidlgen_dart/backend/templates/union.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/union.tmpl.go
@@ -9,7 +9,7 @@
 {{- define "UnionDeclaration" -}}
 enum {{ .TagName }} {
 {{- range .Members }}
-  {{ .Name }},
+  {{ .Tag }},
 {{- end }}
 }
 
@@ -20,17 +20,17 @@
 {{- range .Members }}
 
   const {{ $.Name }}.with{{ .CtorName }}({{ .Type.Decl }} value)
-    : _data = value, tag = {{ $.TagName }}.{{ .Name }};
+    : _data = value, _tag = {{ $.TagName }}.{{ .Tag }};
 {{- end }}
 
-  {{ .Name }}._(this.tag, Object data) : _data = data;
+  {{ .Name }}._({{ .TagName }} tag, Object data) : _tag = tag, _data = data;
 
-  final {{ .TagName }} tag;
+  final {{ .TagName }} _tag;
   final _data;
 
 {{- range .Members }}
   {{ .Type.Decl }} get {{ .Name }} {
-    if (tag != {{ $.TagName }}.{{ .Name }}) {
+    if (_tag != {{ $.TagName }}.{{ .Tag }}) {
       return null;
     }
     return _data;
@@ -39,10 +39,10 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
 {{- range .Members }}
-      case {{ $.TagName }}.{{ .Name }}:
-        return '{{ $.Name }}.{{ .Name }}(${{ .Name }})';
+      case {{ $.TagName }}.{{ .Tag }}:
+        return r'{{ $.Name }}.{{ .Name }}(${{ .Name }})';
 {{- end }}
       default:
         return null;
@@ -52,8 +52,13 @@
   {{- range .Doc }}
   ///{{ . -}}
   {{- end }}
+
+  {{ .TagName }} get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  {{ .TagName }} get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
diff --git a/bin/fidlgen_dart/backend/templates/xunion.tmpl.go b/bin/fidlgen_dart/backend/templates/xunion.tmpl.go
index c9855ab..f70ffda 100644
--- a/bin/fidlgen_dart/backend/templates/xunion.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/xunion.tmpl.go
@@ -9,13 +9,13 @@
 {{- define "XUnionDeclaration" -}}
 enum {{ .TagName }} {
 {{- range .Members }}
-  {{ .Name }}, // {{ .Ordinal | printf "%#x" }}
+  {{ .Tag }}, // {{ .Ordinal | printf "%#x" }}
 {{- end }}
 }
 
 const Map<int, {{ .TagName }}> _{{ .TagName }}_map = {
 {{- range .Members }}
-  {{ .Ordinal }}: {{ $.TagName }}.{{ .Name }},
+  {{ .Ordinal }}: {{ $.TagName }}.{{ .Tag }},
 {{- end }}
 };
 
@@ -34,7 +34,7 @@
   final int _ordinal;
   final _data;
 
-  {{ .TagName }} get tag => _{{ .TagName }}_map[_ordinal];
+  {{ .TagName }} get $tag => _{{ .TagName }}_map[_ordinal];
 
 {{range .Members }}
   {{ .Type.Decl }} get {{ .Name }} {
diff --git a/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_async.dart.golden
index 60100e6..e541d9b 100644
--- a/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
diff --git a/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_sync.dart.golden
index aca438e..2750514 100644
--- a/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
diff --git a/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_test.dart.golden
index 3b23a46..96548bb 100644
--- a/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/bits.test.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
diff --git a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json
index 0ede590..d70bbae 100644
--- a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json
@@ -9,7 +9,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
         "line": 9,
-        "column": 12
+        "column": 13
       },
       "maybe_attributes": [
         {
@@ -37,7 +37,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
         "line": 44,
-        "column": 9
+        "column": 10
       },
       "maybe_attributes": [
         {
@@ -53,7 +53,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
             "line": 48,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_attributes": [
@@ -76,7 +76,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
         "line": 14,
-        "column": 7
+        "column": 8
       },
       "anonymous": false,
       "maybe_attributes": [
@@ -95,7 +95,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
             "line": 18,
-            "column": 10
+            "column": 11
           },
           "maybe_attributes": [
             {
@@ -122,7 +122,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
         "line": 34,
-        "column": 6
+        "column": 7
       },
       "maybe_attributes": [
         {
@@ -142,7 +142,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
             "line": 38,
-            "column": 13
+            "column": 14
           },
           "maybe_attributes": [
             {
@@ -168,7 +168,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
         "line": 24,
-        "column": 6
+        "column": 7
       },
       "maybe_attributes": [
         {
@@ -186,7 +186,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/doc_comments.test.fidl",
             "line": 28,
-            "column": 10
+            "column": 11
           },
           "maybe_attributes": [
             {
diff --git a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_async.dart.golden
index 8eee772..da55111 100644
--- a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -59,14 +60,16 @@
 class Union extends $fidl.Union {
   const Union.withField(int value)
       : _data = value,
-        tag = UnionTag.field;
+        _tag = UnionTag.field;
 
-  Union._(this.tag, Object data) : _data = data;
+  Union._(UnionTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final UnionTag tag;
+  final UnionTag _tag;
   final _data;
   int get field {
-    if (tag != UnionTag.field) {
+    if (_tag != UnionTag.field) {
       return null;
     }
     return _data;
@@ -74,9 +77,9 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case UnionTag.field:
-        return 'Union.field($field)';
+        return r'Union.field($field)';
       default:
         return null;
     }
@@ -85,23 +88,28 @@
   /// union comment #1
   ///
   /// union comment #3
+
+  UnionTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  UnionTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static Union _ctor(int index, Object data) {
-    return new Union._(UnionTag.values[index], data);
+    return Union._(UnionTag.values[index], data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.UnionType<Union> kUnion_Type = const $fidl.UnionType<Union>(
+const $fidl.UnionType<Union> kUnion_Type = $fidl.UnionType<Union>(
   encodedSize: 8,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int32Type(), offset: 4),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int32Type(), offset: 4),
   ],
   ctor: Union._ctor,
 );
@@ -140,15 +148,15 @@
     return r'Struct' r'(field: ' + field.toString() + r')';
   }
 
-  static Struct _ctor(List<Object> argv) => new Struct._(argv);
+  static Struct _ctor(List<Object> argv) => Struct._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.StructType<Struct> kStruct_Type = const $fidl.StructType<Struct>(
+const $fidl.StructType<Struct> kStruct_Type = $fidl.StructType<Struct>(
   encodedSize: 4,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int32Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int32Type(), offset: 0),
   ],
   ctor: Struct._ctor,
 );
@@ -175,15 +183,15 @@
     };
   }
 
-  static Table _ctor(Map<int, dynamic> argv) => new Table._(argv);
+  static Table _ctor(Map<int, dynamic> argv) => Table._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.TableType<Table> kTable_Type = const $fidl.TableType<Table>(
+const $fidl.TableType<Table> kTable_Type = $fidl.TableType<Table>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int32Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int32Type(),
   },
   ctor: Table._ctor,
 );
@@ -193,7 +201,7 @@
 
 // method: ()
 const int _kInterface_Method_Ordinal = 1061382220;
-const $fidl.MethodType _kInterface_Method_Type = const $fidl.MethodType(
+const $fidl.MethodType _kInterface_Method_Type = $fidl.MethodType(
   request: null,
   response: null,
   name: r"Interface.Method",
@@ -205,12 +213,12 @@
 abstract class Interface extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const InterfaceData();
+  $fidl.ServiceData get $serviceData => InterfaceData();
 
   /// method comment #1
   ///
   /// method comment #3
-  Future<void> method();
+  $async.Future<void> method();
 }
 
 class InterfaceData implements $fidl.ServiceData<Interface> {
@@ -232,7 +240,7 @@
 /// interface comment #3
 class InterfaceProxy extends $fidl.AsyncProxy<Interface> implements Interface {
   InterfaceProxy()
-      : super(new $fidl.AsyncProxyController<Interface>(
+      : super($fidl.AsyncProxyController<Interface>(
             $serviceName: null, $interfaceName: r'Interface')) {
     ctrl.onResponse = _handleResponse;
   }
@@ -241,11 +249,11 @@
   $fidl.ServiceData get $serviceData => InterfaceData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -257,16 +265,16 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -276,17 +284,16 @@
   ///
   /// method comment #3
   @override
-  Future<void> method() async {
+  $async.Future<void> method() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kInterface_Method_Ordinal, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
@@ -297,7 +304,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kInterface_Method_Ordinal:
         final String _name = _kInterface_Method_Type.name;
@@ -305,7 +312,7 @@
           Timeline.startSync(_name);
           final List<$fidl.MemberType> $types = _kInterface_Method_Type.request;
           $decoder.claimMemory(16);
-          final Future<void> $future = impl.method();
+          final $async.Future<void> $future = impl.method();
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           close();
@@ -316,8 +323,7 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for InterfaceBinding');
+        throw $fidl.FidlError(r'Unexpected message name for InterfaceBinding');
     }
   }
 }
diff --git a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_sync.dart.golden
index 3b6c74d..9ebc2a2 100644
--- a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -55,14 +55,16 @@
 class Union extends $fidl.Union {
   const Union.withField(int value)
       : _data = value,
-        tag = UnionTag.field;
+        _tag = UnionTag.field;
 
-  Union._(this.tag, Object data) : _data = data;
+  Union._(UnionTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final UnionTag tag;
+  final UnionTag _tag;
   final _data;
   int get field {
-    if (tag != UnionTag.field) {
+    if (_tag != UnionTag.field) {
       return null;
     }
     return _data;
@@ -70,9 +72,9 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case UnionTag.field:
-        return 'Union.field($field)';
+        return r'Union.field($field)';
       default:
         return null;
     }
@@ -81,23 +83,28 @@
   /// union comment #1
   ///
   /// union comment #3
+
+  UnionTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  UnionTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static Union _ctor(int index, Object data) {
-    return new Union._(UnionTag.values[index], data);
+    return Union._(UnionTag.values[index], data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.UnionType<Union> kUnion_Type = const $fidl.UnionType<Union>(
+const $fidl.UnionType<Union> kUnion_Type = $fidl.UnionType<Union>(
   encodedSize: 8,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int32Type(), offset: 4),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int32Type(), offset: 4),
   ],
   ctor: Union._ctor,
 );
@@ -136,15 +143,15 @@
     return r'Struct' r'(field: ' + field.toString() + r')';
   }
 
-  static Struct _ctor(List<Object> argv) => new Struct._(argv);
+  static Struct _ctor(List<Object> argv) => Struct._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.StructType<Struct> kStruct_Type = const $fidl.StructType<Struct>(
+const $fidl.StructType<Struct> kStruct_Type = $fidl.StructType<Struct>(
   encodedSize: 4,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int32Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int32Type(), offset: 0),
   ],
   ctor: Struct._ctor,
 );
@@ -171,15 +178,15 @@
     };
   }
 
-  static Table _ctor(Map<int, dynamic> argv) => new Table._(argv);
+  static Table _ctor(Map<int, dynamic> argv) => Table._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.TableType<Table> kTable_Type = const $fidl.TableType<Table>(
+const $fidl.TableType<Table> kTable_Type = $fidl.TableType<Table>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int32Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int32Type(),
   },
   ctor: Table._ctor,
 );
@@ -191,7 +198,7 @@
 
 // method: ()
 const int _kInterface_Method_Ordinal = 1061382220;
-const $fidl.MethodType _kInterface_Method_Type = const $fidl.MethodType(
+const $fidl.MethodType _kInterface_Method_Type = $fidl.MethodType(
   request: null,
   response: null,
   name: r"Interface.Method",
@@ -199,13 +206,13 @@
 
 class InterfaceProxy extends $fidl.Proxy<Interface> implements Interface {
   InterfaceProxy()
-      : super(new $fidl.ProxyController<Interface>(
+      : super($fidl.ProxyController<Interface>(
             $serviceName: null, $interfaceName: r'Interface')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
         ctrl.proxyError('Unexpected message ordinal: ${$message.ordinal}');
@@ -225,7 +232,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
         ctrl.proxyError('Unexpected message ordinal: ${$message.ordinal}');
@@ -241,7 +248,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kInterface_Method_Ordinal, 0);
     ctrl.sendMessage($encoder.message);
   }
@@ -250,7 +257,7 @@
 class InterfaceBinding extends $fidl.Binding<Interface> {
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kInterface_Method_Ordinal:
         final String _name = _kInterface_Method_Type.name;
@@ -269,8 +276,7 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for InterfaceBinding');
+        throw $fidl.FidlError(r'Unexpected message name for InterfaceBinding');
     }
   }
 }
diff --git a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_test.dart.golden
index cc4e558..1b3dfaf 100644
--- a/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/doc_comments.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
@@ -26,7 +26,7 @@
 
 class Interface$TestBase extends Interface {
   @override
-  Future<void> method() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> method() {
+    return $async.Future.error(UnimplementedError());
   }
 }
diff --git a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json
index 92953c0..10de6b5 100644
--- a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json
@@ -12,7 +12,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/empty_struct.test.fidl",
         "line": 3,
-        "column": 7
+        "column": 8
       },
       "anonymous": false,
       "members": [],
diff --git a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_async.dart.golden
index 6016bfa..5d171be 100644
--- a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -71,15 +72,15 @@
     return r'Empty' r'(reserved: ' + reserved.toString() + r')';
   }
 
-  static Empty _ctor(List<Object> argv) => new Empty._(argv);
+  static Empty _ctor(List<Object> argv) => Empty._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.StructType<Empty> kEmpty_Type = const $fidl.StructType<Empty>(
+const $fidl.StructType<Empty> kEmpty_Type = $fidl.StructType<Empty>(
   encodedSize: 1,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Uint8Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Uint8Type(), offset: 0),
   ],
   ctor: Empty._ctor,
 );
diff --git a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_sync.dart.golden
index 1270da6..3c572bf 100644
--- a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -67,15 +67,15 @@
     return r'Empty' r'(reserved: ' + reserved.toString() + r')';
   }
 
-  static Empty _ctor(List<Object> argv) => new Empty._(argv);
+  static Empty _ctor(List<Object> argv) => Empty._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.StructType<Empty> kEmpty_Type = const $fidl.StructType<Empty>(
+const $fidl.StructType<Empty> kEmpty_Type = $fidl.StructType<Empty>(
   encodedSize: 1,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Uint8Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Uint8Type(), offset: 0),
   ],
   ctor: Empty._ctor,
 );
diff --git a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_test.dart.golden
index 3b23a46..96548bb 100644
--- a/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/empty_struct.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
diff --git a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json
index 986f5ef..623b6cc 100644
--- a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json
@@ -11,7 +11,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/ordinal_switch.test.fidl",
         "line": 3,
-        "column": 9
+        "column": 10
       },
       "methods": [
         {
@@ -21,7 +21,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/ordinal_switch.test.fidl",
             "line": 4,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -36,7 +36,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/ordinal_switch.test.fidl",
             "line": 5,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -51,7 +51,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/ordinal_switch.test.fidl",
             "line": 6,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -66,7 +66,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/ordinal_switch.test.fidl",
             "line": 7,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
diff --git a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_async.dart.golden
index fbc34be..967d3ce 100644
--- a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -49,8 +50,7 @@
 
 // ordinalFive: ()
 const int _kSwitchingOrdinals_OrdinalFive_Ordinal = 2005164903;
-const $fidl.MethodType _kSwitchingOrdinals_OrdinalFive_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kSwitchingOrdinals_OrdinalFive_Type = $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.OrdinalFive",
@@ -58,7 +58,7 @@
 // onlyGeneratedOrdinal: ()
 const int _kSwitchingOrdinals_OnlyGeneratedOrdinal_Ordinal = 667506719;
 const $fidl.MethodType _kSwitchingOrdinals_OnlyGeneratedOrdinal_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.OnlyGeneratedOrdinal",
@@ -66,7 +66,7 @@
 // eventOrdinalFifteen:  -> ()
 const int _kSwitchingOrdinals_EventOrdinalFifteen_Ordinal = 1467258273;
 const $fidl.MethodType _kSwitchingOrdinals_EventOrdinalFifteen_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.EventOrdinalFifteen",
@@ -74,7 +74,7 @@
 // eventOnlyGeneratedOrdinal:  -> ()
 const int _kSwitchingOrdinals_EventOnlyGeneratedOrdinal_Ordinal = 2146190926;
 const $fidl.MethodType _kSwitchingOrdinals_EventOnlyGeneratedOrdinal_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.EventOnlyGeneratedOrdinal",
@@ -83,11 +83,11 @@
 abstract class SwitchingOrdinals extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const SwitchingOrdinalsData();
-  Future<void> ordinalFive();
-  Future<void> onlyGeneratedOrdinal();
-  Stream<void> get eventOrdinalFifteen;
-  Stream<void> get eventOnlyGeneratedOrdinal;
+  $fidl.ServiceData get $serviceData => SwitchingOrdinalsData();
+  $async.Future<void> ordinalFive();
+  $async.Future<void> onlyGeneratedOrdinal();
+  $async.Stream<void> get eventOrdinalFifteen;
+  $async.Stream<void> get eventOnlyGeneratedOrdinal;
 }
 
 class SwitchingOrdinalsData implements $fidl.ServiceData<SwitchingOrdinals> {
@@ -107,7 +107,7 @@
 class SwitchingOrdinalsProxy extends $fidl.AsyncProxy<SwitchingOrdinals>
     implements SwitchingOrdinals {
   SwitchingOrdinalsProxy()
-      : super(new $fidl.AsyncProxyController<SwitchingOrdinals>(
+      : super($fidl.AsyncProxyController<SwitchingOrdinals>(
             $serviceName: null, $interfaceName: r'SwitchingOrdinals')) {
     ctrl.onResponse = _handleResponse;
     ctrl.whenClosed.then((_) {
@@ -120,7 +120,7 @@
   $fidl.ServiceData get $serviceData => SwitchingOrdinalsData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSwitchingOrdinals_EventOrdinalFifteen_Ordinal:
         final String _name = _kSwitchingOrdinals_EventOrdinalFifteen_Type.name;
@@ -133,7 +133,7 @@
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -152,7 +152,7 @@
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -160,8 +160,8 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -173,70 +173,68 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<void> ordinalFive() async {
+  $async.Future<void> ordinalFive() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSwitchingOrdinals_OrdinalFive_Ordinal, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
   @override
-  Future<void> onlyGeneratedOrdinal() async {
+  $async.Future<void> onlyGeneratedOrdinal() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kSwitchingOrdinals_OnlyGeneratedOrdinal_Ordinal, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
   final _eventOrdinalFifteenEventStreamController =
-      new StreamController<void>.broadcast();
+      $async.StreamController<void>.broadcast();
   @override
-  Stream<void> get eventOrdinalFifteen =>
+  $async.Stream<void> get eventOrdinalFifteen =>
       _eventOrdinalFifteenEventStreamController.stream;
 
   final _eventOnlyGeneratedOrdinalEventStreamController =
-      new StreamController<void>.broadcast();
+      $async.StreamController<void>.broadcast();
   @override
-  Stream<void> get eventOnlyGeneratedOrdinal =>
+  $async.Stream<void> get eventOnlyGeneratedOrdinal =>
       _eventOnlyGeneratedOrdinalEventStreamController.stream;
 }
 
 class SwitchingOrdinalsBinding extends $fidl.AsyncBinding<SwitchingOrdinals> {
   SwitchingOrdinalsBinding() : super(r"SwitchingOrdinals") {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -247,7 +245,7 @@
     whenBound.then((_) {
       if (impl.eventOrdinalFifteen != null) {
         $subscriptions.add(impl.eventOrdinalFifteen.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(
               _kSwitchingOrdinals_EventOrdinalFifteen_Ordinal, 0);
           $encoder.alloc(16 - $fidl.kMessageHeaderSize);
@@ -259,7 +257,7 @@
       }
       if (impl.eventOnlyGeneratedOrdinal != null) {
         $subscriptions.add(impl.eventOnlyGeneratedOrdinal.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(
               _kSwitchingOrdinals_EventOnlyGeneratedOrdinal_Ordinal, 0);
           $encoder.alloc(16 - $fidl.kMessageHeaderSize);
@@ -275,7 +273,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSwitchingOrdinals_OrdinalFive_Ordinal:
         final String _name = _kSwitchingOrdinals_OrdinalFive_Type.name;
@@ -284,7 +282,7 @@
           final List<$fidl.MemberType> $types =
               _kSwitchingOrdinals_OrdinalFive_Type.request;
           $decoder.claimMemory(16);
-          final Future<void> $future = impl.ordinalFive();
+          final $async.Future<void> $future = impl.ordinalFive();
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           close();
@@ -301,7 +299,7 @@
           final List<$fidl.MemberType> $types =
               _kSwitchingOrdinals_OnlyGeneratedOrdinal_Type.request;
           $decoder.claimMemory(16);
-          final Future<void> $future = impl.onlyGeneratedOrdinal();
+          final $async.Future<void> $future = impl.onlyGeneratedOrdinal();
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           close();
@@ -312,8 +310,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for SwitchingOrdinalsBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for SwitchingOrdinalsBinding');
     }
   }
 }
diff --git a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_sync.dart.golden
index e4bd0e2..63bf4df 100644
--- a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -48,8 +48,7 @@
 
 // ordinalFive: ()
 const int _kSwitchingOrdinals_OrdinalFive_Ordinal = 2005164903;
-const $fidl.MethodType _kSwitchingOrdinals_OrdinalFive_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kSwitchingOrdinals_OrdinalFive_Type = $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.OrdinalFive",
@@ -57,7 +56,7 @@
 // onlyGeneratedOrdinal: ()
 const int _kSwitchingOrdinals_OnlyGeneratedOrdinal_Ordinal = 667506719;
 const $fidl.MethodType _kSwitchingOrdinals_OnlyGeneratedOrdinal_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.OnlyGeneratedOrdinal",
@@ -65,7 +64,7 @@
 // eventOrdinalFifteen:  -> ()
 const int _kSwitchingOrdinals_EventOrdinalFifteen_Ordinal = 1467258273;
 const $fidl.MethodType _kSwitchingOrdinals_EventOrdinalFifteen_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.EventOrdinalFifteen",
@@ -73,7 +72,7 @@
 // eventOnlyGeneratedOrdinal:  -> ()
 const int _kSwitchingOrdinals_EventOnlyGeneratedOrdinal_Ordinal = 2146190926;
 const $fidl.MethodType _kSwitchingOrdinals_EventOnlyGeneratedOrdinal_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"SwitchingOrdinals.EventOnlyGeneratedOrdinal",
@@ -85,13 +84,13 @@
 class SwitchingOrdinalsProxy extends $fidl.Proxy<SwitchingOrdinals>
     implements SwitchingOrdinals {
   SwitchingOrdinalsProxy()
-      : super(new $fidl.ProxyController<SwitchingOrdinals>(
+      : super($fidl.ProxyController<SwitchingOrdinals>(
             $serviceName: null, $interfaceName: r'SwitchingOrdinals')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSwitchingOrdinals_EventOrdinalFifteen_Ordinal:
         final String _name = _kSwitchingOrdinals_EventOrdinalFifteen_Type.name;
@@ -156,7 +155,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
         ctrl.proxyError('Unexpected message ordinal: ${$message.ordinal}');
@@ -172,7 +171,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSwitchingOrdinals_OrdinalFive_Ordinal, 0);
     ctrl.sendMessage($encoder.message);
   }
@@ -184,7 +183,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kSwitchingOrdinals_OnlyGeneratedOrdinal_Ordinal, 0);
     ctrl.sendMessage($encoder.message);
@@ -197,14 +196,14 @@
 class SwitchingOrdinalsEvents {
   $fidl.Binding<SwitchingOrdinals> _binding;
   void eventOrdinalFifteen() {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kSwitchingOrdinals_EventOrdinalFifteen_Ordinal, 0);
     _binding.sendMessage($encoder.message);
   }
 
   void eventOnlyGeneratedOrdinal() {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kSwitchingOrdinals_EventOnlyGeneratedOrdinal_Ordinal, 0);
     _binding.sendMessage($encoder.message);
@@ -216,11 +215,11 @@
     events._binding = this;
   }
 
-  final SwitchingOrdinalsEvents events = new SwitchingOrdinalsEvents();
+  final SwitchingOrdinalsEvents events = SwitchingOrdinalsEvents();
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSwitchingOrdinals_OrdinalFive_Ordinal:
         final String _name = _kSwitchingOrdinals_OrdinalFive_Type.name;
@@ -257,8 +256,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for SwitchingOrdinalsBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for SwitchingOrdinalsBinding');
     }
   }
 }
diff --git a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_test.dart.golden
index bf7f22e..0fa115c 100644
--- a/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/ordinal_switch.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
@@ -26,22 +26,22 @@
 
 class SwitchingOrdinals$TestBase extends SwitchingOrdinals {
   @override
-  Future<void> ordinalFive() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> ordinalFive() {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<void> onlyGeneratedOrdinal() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> onlyGeneratedOrdinal() {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Stream<void> get eventOrdinalFifteen {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<void> get eventOrdinalFifteen {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 
   @override
-  Stream<void> get eventOnlyGeneratedOrdinal {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<void> get eventOnlyGeneratedOrdinal {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 }
diff --git a/bin/fidlgen_dart/goldens/protocols.test.fidl.json b/bin/fidlgen_dart/goldens/protocols.test.fidl.json
index caa3766..d3bb4f5 100644
--- a/bin/fidlgen_dart/goldens/protocols.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/protocols.test.fidl.json
@@ -10,7 +10,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 14,
-        "column": 5
+        "column": 6
       },
       "type": "uint32",
       "members": [
@@ -19,7 +19,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 15,
-            "column": 4
+            "column": 5
           },
           "value": {
             "kind": "literal",
@@ -34,7 +34,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 16,
-            "column": 4
+            "column": 5
           },
           "value": {
             "kind": "literal",
@@ -53,7 +53,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 3,
-        "column": 9
+        "column": 10
       },
       "methods": [
         {
@@ -63,7 +63,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 4,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -78,7 +78,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 5,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -96,7 +96,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 6,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -113,7 +113,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 6,
-                "column": 39
+                "column": 40
               },
               "size": 16,
               "max_out_of_line": 4294967295,
@@ -132,7 +132,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 7,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -145,7 +145,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 7,
-                "column": 33
+                "column": 34
               },
               "size": 16,
               "max_out_of_line": 4294967295,
@@ -165,7 +165,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 8,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -178,7 +178,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 8,
-                "column": 36
+                "column": 37
               },
               "size": 16,
               "max_out_of_line": 4294967295,
@@ -201,7 +201,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 9,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -214,7 +214,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 9,
-                "column": 35
+                "column": 36
               },
               "size": 16,
               "max_out_of_line": 4294967295,
@@ -236,7 +236,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 9,
-                "column": 51
+                "column": 52
               },
               "size": 16,
               "max_out_of_line": 4294967295,
@@ -255,7 +255,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 10,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -270,7 +270,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 11,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -284,7 +284,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 11,
-                "column": 29
+                "column": 30
               },
               "size": 16,
               "max_out_of_line": 4294967295,
@@ -303,7 +303,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 19,
-        "column": 9
+        "column": 10
       },
       "methods": [
         {
@@ -313,7 +313,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 20,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -331,7 +331,7 @@
               "location": {
                 "filename": "generated",
                 "line": 18,
-                "column": 0
+                "column": 1
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -350,7 +350,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 21,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [],
@@ -368,7 +368,7 @@
               "location": {
                 "filename": "generated",
                 "line": 25,
-                "column": 0
+                "column": 1
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -387,7 +387,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 25,
-        "column": 9
+        "column": 10
       },
       "maybe_attributes": [
         {
@@ -403,7 +403,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 26,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -416,7 +416,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 26,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -433,7 +433,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 26,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -453,7 +453,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 27,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -467,7 +467,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 27,
-                "column": 20
+                "column": 21
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -484,7 +484,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 27,
-                "column": 29
+                "column": 30
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -503,7 +503,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 28,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -516,7 +516,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 28,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -533,7 +533,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 28,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -555,7 +555,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 28,
-                "column": 40
+                "column": 41
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -574,7 +574,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 32,
-        "column": 9
+        "column": 10
       },
       "maybe_attributes": [
         {
@@ -590,7 +590,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 33,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -603,7 +603,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 33,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -620,7 +620,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 33,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -640,7 +640,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 34,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -654,7 +654,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 34,
-                "column": 20
+                "column": 21
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -671,7 +671,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 34,
-                "column": 29
+                "column": 30
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -690,7 +690,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 35,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -703,7 +703,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 35,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -720,7 +720,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 35,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -742,7 +742,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 35,
-                "column": 40
+                "column": 41
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -761,7 +761,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 39,
-        "column": 9
+        "column": 10
       },
       "maybe_attributes": [
         {
@@ -777,7 +777,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 40,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -790,7 +790,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 40,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -807,7 +807,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 40,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -827,7 +827,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 41,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -841,7 +841,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 41,
-                "column": 20
+                "column": 21
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -858,7 +858,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 41,
-                "column": 29
+                "column": 30
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -877,7 +877,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 42,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -890,7 +890,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 42,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -907,7 +907,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 42,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -929,7 +929,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 42,
-                "column": 40
+                "column": 41
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -948,7 +948,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
         "line": 47,
-        "column": 9
+        "column": 10
       },
       "maybe_attributes": [
         {
@@ -964,7 +964,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 48,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -977,7 +977,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 48,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -994,7 +994,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 48,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -1014,7 +1014,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 49,
-            "column": 7
+            "column": 8
           },
           "has_request": false,
           "has_response": true,
@@ -1028,7 +1028,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 49,
-                "column": 20
+                "column": 21
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -1045,7 +1045,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 49,
-                "column": 29
+                "column": 30
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -1064,7 +1064,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
             "line": 50,
-            "column": 4
+            "column": 5
           },
           "has_request": true,
           "maybe_request": [
@@ -1077,7 +1077,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 50,
-                "column": 18
+                "column": 19
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -1094,7 +1094,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 50,
-                "column": 27
+                "column": 28
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -1116,7 +1116,7 @@
               "location": {
                 "filename": "garnet/go/src/fidl/compiler/backend/typestest/protocols.test.fidl",
                 "line": 50,
-                "column": 40
+                "column": 41
               },
               "size": 8,
               "max_out_of_line": 0,
@@ -1137,7 +1137,7 @@
       "location": {
         "filename": "generated",
         "line": 14,
-        "column": 0
+        "column": 1
       },
       "anonymous": false,
       "members": [],
@@ -1151,7 +1151,7 @@
       "location": {
         "filename": "generated",
         "line": 21,
-        "column": 0
+        "column": 1
       },
       "anonymous": false,
       "members": [],
@@ -1168,7 +1168,7 @@
       "location": {
         "filename": "generated",
         "line": 17,
-        "column": 0
+        "column": 1
       },
       "maybe_attributes": [
         {
@@ -1187,7 +1187,7 @@
           "location": {
             "filename": "generated",
             "line": 15,
-            "column": 0
+            "column": 1
           },
           "size": 1,
           "max_out_of_line": 0,
@@ -1203,7 +1203,7 @@
           "location": {
             "filename": "generated",
             "line": 16,
-            "column": 0
+            "column": 1
           },
           "size": 4,
           "max_out_of_line": 0,
@@ -1221,7 +1221,7 @@
       "location": {
         "filename": "generated",
         "line": 24,
-        "column": 0
+        "column": 1
       },
       "maybe_attributes": [
         {
@@ -1240,7 +1240,7 @@
           "location": {
             "filename": "generated",
             "line": 22,
-            "column": 0
+            "column": 1
           },
           "size": 1,
           "max_out_of_line": 0,
@@ -1257,7 +1257,7 @@
           "location": {
             "filename": "generated",
             "line": 23,
-            "column": 0
+            "column": 1
           },
           "size": 4,
           "max_out_of_line": 0,
diff --git a/bin/fidlgen_dart/goldens/protocols.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/protocols.test.fidl.json_async.dart.golden
index bf911b8..2c15fa1 100644
--- a/bin/fidlgen_dart/goldens/protocols.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/protocols.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -45,8 +46,8 @@
 // ignore_for_file: comment_references
 
 class ErrorEnun extends $fidl.Enum {
-  factory ErrorEnun(int v) {
-    switch (v) {
+  factory ErrorEnun(int _v) {
+    switch (_v) {
       case 1:
         return errFoo;
       case 2:
@@ -55,29 +56,32 @@
         return null;
     }
   }
-  static const ErrorEnun errFoo = const ErrorEnun._(1);
-  static const ErrorEnun errBar = const ErrorEnun._(2);
+  static const ErrorEnun errFoo = ErrorEnun._(1);
+  static const ErrorEnun errBar = ErrorEnun._(2);
 
-  const ErrorEnun._(this.value);
+  const ErrorEnun._(this.$value);
 
   @override
-  final int value;
+  final int $value;
 
-  static const Map<String, ErrorEnun> valuesMap = const {
+  static const Map<String, ErrorEnun> $valuesMap = {
     r'errFoo': errFoo,
     r'errBar': errBar,
   };
 
-  static const List<ErrorEnun> values = const [
+  static const List<ErrorEnun> $values = [
     errFoo,
     errBar,
   ];
 
-  static ErrorEnun valueOf(String name) => valuesMap[name];
+  // TODO: remove, see: FIDL-587
+  static const List<ErrorEnun> values = ErrorEnun.$values;
+
+  static ErrorEnun $valueOf(String name) => $valuesMap[name];
 
   @override
   String toString() {
-    switch (value) {
+    switch ($value) {
       case 1:
         return r'ErrorEnun.errFoo';
       case 2:
@@ -87,12 +91,11 @@
     }
   }
 
-  static ErrorEnun _ctor(int v) => new ErrorEnun(v);
+  static ErrorEnun _ctor(int v) => ErrorEnun(v);
 }
 
 const $fidl.EnumType<ErrorEnun> kErrorEnun_Type =
-    const $fidl.EnumType<ErrorEnun>(
-        type: const $fidl.Uint32Type(), ctor: ErrorEnun._ctor);
+    $fidl.EnumType<ErrorEnun>(type: $fidl.Uint32Type(), ctor: ErrorEnun._ctor);
 
 enum WithErrorSyntaxErrorAsPrimitiveResultTag {
   response,
@@ -103,25 +106,28 @@
   const WithErrorSyntaxErrorAsPrimitiveResult.withResponse(
       WithErrorSyntaxErrorAsPrimitiveResponse value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsPrimitiveResultTag.response;
+        _tag = WithErrorSyntaxErrorAsPrimitiveResultTag.response;
 
   const WithErrorSyntaxErrorAsPrimitiveResult.withErr(int value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsPrimitiveResultTag.err;
+        _tag = WithErrorSyntaxErrorAsPrimitiveResultTag.err;
 
-  WithErrorSyntaxErrorAsPrimitiveResult._(this.tag, Object data) : _data = data;
+  WithErrorSyntaxErrorAsPrimitiveResult._(
+      WithErrorSyntaxErrorAsPrimitiveResultTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final WithErrorSyntaxErrorAsPrimitiveResultTag tag;
+  final WithErrorSyntaxErrorAsPrimitiveResultTag _tag;
   final _data;
   WithErrorSyntaxErrorAsPrimitiveResponse get response {
-    if (tag != WithErrorSyntaxErrorAsPrimitiveResultTag.response) {
+    if (_tag != WithErrorSyntaxErrorAsPrimitiveResultTag.response) {
       return null;
     }
     return _data;
   }
 
   int get err {
-    if (tag != WithErrorSyntaxErrorAsPrimitiveResultTag.err) {
+    if (_tag != WithErrorSyntaxErrorAsPrimitiveResultTag.err) {
       return null;
     }
     return _data;
@@ -129,24 +135,28 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case WithErrorSyntaxErrorAsPrimitiveResultTag.response:
-        return 'WithErrorSyntaxErrorAsPrimitiveResult.response($response)';
+        return r'WithErrorSyntaxErrorAsPrimitiveResult.response($response)';
       case WithErrorSyntaxErrorAsPrimitiveResultTag.err:
-        return 'WithErrorSyntaxErrorAsPrimitiveResult.err($err)';
+        return r'WithErrorSyntaxErrorAsPrimitiveResult.err($err)';
       default:
         return null;
     }
   }
 
+  WithErrorSyntaxErrorAsPrimitiveResultTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  WithErrorSyntaxErrorAsPrimitiveResultTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static WithErrorSyntaxErrorAsPrimitiveResult _ctor(int index, Object data) {
-    return new WithErrorSyntaxErrorAsPrimitiveResult._(
+    return WithErrorSyntaxErrorAsPrimitiveResult._(
         WithErrorSyntaxErrorAsPrimitiveResultTag.values[index], data);
   }
 }
@@ -155,12 +165,12 @@
 // ignore: recursive_compile_time_constant
 const $fidl.UnionType<WithErrorSyntaxErrorAsPrimitiveResult>
     kWithErrorSyntax_ErrorAsPrimitive_Result_Type =
-    const $fidl.UnionType<WithErrorSyntaxErrorAsPrimitiveResult>(
+    $fidl.UnionType<WithErrorSyntaxErrorAsPrimitiveResult>(
   encodedSize: 8,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResponse>(
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResponse>(
         type: kWithErrorSyntax_ErrorAsPrimitive_Response_Type, offset: 4),
-    const $fidl.MemberType<int>(type: const $fidl.Uint32Type(), offset: 4),
+    $fidl.MemberType<int>(type: $fidl.Uint32Type(), offset: 4),
   ],
   ctor: WithErrorSyntaxErrorAsPrimitiveResult._ctor,
 );
@@ -174,25 +184,28 @@
   const WithErrorSyntaxErrorAsEnumResult.withResponse(
       WithErrorSyntaxErrorAsEnumResponse value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsEnumResultTag.response;
+        _tag = WithErrorSyntaxErrorAsEnumResultTag.response;
 
   const WithErrorSyntaxErrorAsEnumResult.withErr(ErrorEnun value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsEnumResultTag.err;
+        _tag = WithErrorSyntaxErrorAsEnumResultTag.err;
 
-  WithErrorSyntaxErrorAsEnumResult._(this.tag, Object data) : _data = data;
+  WithErrorSyntaxErrorAsEnumResult._(
+      WithErrorSyntaxErrorAsEnumResultTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final WithErrorSyntaxErrorAsEnumResultTag tag;
+  final WithErrorSyntaxErrorAsEnumResultTag _tag;
   final _data;
   WithErrorSyntaxErrorAsEnumResponse get response {
-    if (tag != WithErrorSyntaxErrorAsEnumResultTag.response) {
+    if (_tag != WithErrorSyntaxErrorAsEnumResultTag.response) {
       return null;
     }
     return _data;
   }
 
   ErrorEnun get err {
-    if (tag != WithErrorSyntaxErrorAsEnumResultTag.err) {
+    if (_tag != WithErrorSyntaxErrorAsEnumResultTag.err) {
       return null;
     }
     return _data;
@@ -200,24 +213,28 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case WithErrorSyntaxErrorAsEnumResultTag.response:
-        return 'WithErrorSyntaxErrorAsEnumResult.response($response)';
+        return r'WithErrorSyntaxErrorAsEnumResult.response($response)';
       case WithErrorSyntaxErrorAsEnumResultTag.err:
-        return 'WithErrorSyntaxErrorAsEnumResult.err($err)';
+        return r'WithErrorSyntaxErrorAsEnumResult.err($err)';
       default:
         return null;
     }
   }
 
+  WithErrorSyntaxErrorAsEnumResultTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  WithErrorSyntaxErrorAsEnumResultTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static WithErrorSyntaxErrorAsEnumResult _ctor(int index, Object data) {
-    return new WithErrorSyntaxErrorAsEnumResult._(
+    return WithErrorSyntaxErrorAsEnumResult._(
         WithErrorSyntaxErrorAsEnumResultTag.values[index], data);
   }
 }
@@ -226,12 +243,12 @@
 // ignore: recursive_compile_time_constant
 const $fidl.UnionType<WithErrorSyntaxErrorAsEnumResult>
     kWithErrorSyntax_ErrorAsEnum_Result_Type =
-    const $fidl.UnionType<WithErrorSyntaxErrorAsEnumResult>(
+    $fidl.UnionType<WithErrorSyntaxErrorAsEnumResult>(
   encodedSize: 8,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsEnumResponse>(
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsEnumResponse>(
         type: kWithErrorSyntax_ErrorAsEnum_Response_Type, offset: 4),
-    const $fidl.MemberType<ErrorEnun>(type: kErrorEnun_Type, offset: 4),
+    $fidl.MemberType<ErrorEnun>(type: kErrorEnun_Type, offset: 4),
   ],
   ctor: WithErrorSyntaxErrorAsEnumResult._ctor,
 );
@@ -267,17 +284,17 @@
   }
 
   static WithErrorSyntaxErrorAsPrimitiveResponse _ctor(List<Object> argv) =>
-      new WithErrorSyntaxErrorAsPrimitiveResponse._(argv);
+      WithErrorSyntaxErrorAsPrimitiveResponse._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.StructType<WithErrorSyntaxErrorAsPrimitiveResponse>
     kWithErrorSyntax_ErrorAsPrimitive_Response_Type =
-    const $fidl.StructType<WithErrorSyntaxErrorAsPrimitiveResponse>(
+    $fidl.StructType<WithErrorSyntaxErrorAsPrimitiveResponse>(
   encodedSize: 1,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Uint8Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Uint8Type(), offset: 0),
   ],
   ctor: WithErrorSyntaxErrorAsPrimitiveResponse._ctor,
 );
@@ -312,17 +329,17 @@
   }
 
   static WithErrorSyntaxErrorAsEnumResponse _ctor(List<Object> argv) =>
-      new WithErrorSyntaxErrorAsEnumResponse._(argv);
+      WithErrorSyntaxErrorAsEnumResponse._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.StructType<WithErrorSyntaxErrorAsEnumResponse>
     kWithErrorSyntax_ErrorAsEnum_Response_Type =
-    const $fidl.StructType<WithErrorSyntaxErrorAsEnumResponse>(
+    $fidl.StructType<WithErrorSyntaxErrorAsEnumResponse>(
   encodedSize: 1,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Uint8Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Uint8Type(), offset: 0),
   ],
   ctor: WithErrorSyntaxErrorAsEnumResponse._ctor,
 );
@@ -334,8 +351,7 @@
 const int _kWithAndWithoutRequestResponse_NoRequestNoResponse_Ordinal =
     503576693;
 const $fidl.MethodType
-    _kWithAndWithoutRequestResponse_NoRequestNoResponse_Type =
-    const $fidl.MethodType(
+    _kWithAndWithoutRequestResponse_NoRequestNoResponse_Type = $fidl.MethodType(
   request: null,
   response: null,
   name: r"WithAndWithoutRequestResponse.NoRequestNoResponse",
@@ -345,7 +361,7 @@
     1308023765;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"WithAndWithoutRequestResponse.NoRequestEmptyResponse",
@@ -355,11 +371,11 @@
     107534328;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_NoRequestWithResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   name: r"WithAndWithoutRequestResponse.NoRequestWithResponse",
@@ -369,10 +385,10 @@
     432149361;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_WithRequestNoResponse_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   response: null,
@@ -383,10 +399,10 @@
     1995585907;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   response: null,
@@ -397,15 +413,15 @@
     426977568;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_WithRequestWithResponse_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   name: r"WithAndWithoutRequestResponse.WithRequestWithResponse",
@@ -413,7 +429,7 @@
 // onEmptyResponse:  -> ()
 const int _kWithAndWithoutRequestResponse_OnEmptyResponse_Ordinal = 1769985842;
 const $fidl.MethodType _kWithAndWithoutRequestResponse_OnEmptyResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"WithAndWithoutRequestResponse.OnEmptyResponse",
@@ -421,11 +437,11 @@
 // onWithResponse:  -> (String ret)
 const int _kWithAndWithoutRequestResponse_OnWithResponse_Ordinal = 2051478023;
 const $fidl.MethodType _kWithAndWithoutRequestResponse_OnWithResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   name: r"WithAndWithoutRequestResponse.OnWithResponse",
@@ -434,16 +450,15 @@
 abstract class WithAndWithoutRequestResponse extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData =>
-      const WithAndWithoutRequestResponseData();
-  Future<void> noRequestNoResponse();
-  Future<void> noRequestEmptyResponse();
-  Future<String> noRequestWithResponse();
-  Future<void> withRequestNoResponse(String arg);
-  Future<void> withRequestEmptyResponse(String arg);
-  Future<String> withRequestWithResponse(String arg);
-  Stream<void> get onEmptyResponse;
-  Stream<String> get onWithResponse;
+  $fidl.ServiceData get $serviceData => WithAndWithoutRequestResponseData();
+  $async.Future<void> noRequestNoResponse();
+  $async.Future<void> noRequestEmptyResponse();
+  $async.Future<String> noRequestWithResponse();
+  $async.Future<void> withRequestNoResponse(String arg);
+  $async.Future<void> withRequestEmptyResponse(String arg);
+  $async.Future<String> withRequestWithResponse(String arg);
+  $async.Stream<void> get onEmptyResponse;
+  $async.Stream<String> get onWithResponse;
 }
 
 class WithAndWithoutRequestResponseData
@@ -465,7 +480,7 @@
     extends $fidl.AsyncProxy<WithAndWithoutRequestResponse>
     implements WithAndWithoutRequestResponse {
   WithAndWithoutRequestResponseProxy()
-      : super(new $fidl.AsyncProxyController<WithAndWithoutRequestResponse>(
+      : super($fidl.AsyncProxyController<WithAndWithoutRequestResponse>(
             $serviceName: null,
             $interfaceName: r'WithAndWithoutRequestResponse')) {
     ctrl.onResponse = _handleResponse;
@@ -479,7 +494,7 @@
   $fidl.ServiceData get $serviceData => WithAndWithoutRequestResponseData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithAndWithoutRequestResponse_OnEmptyResponse_Ordinal:
         final String _name =
@@ -493,7 +508,7 @@
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -508,13 +523,12 @@
           final List<$fidl.MemberType> $types =
               _kWithAndWithoutRequestResponse_OnWithResponse_Type.response;
           $decoder.claimMemory(32);
-          _onWithResponseEventStreamController.add(
-            $types[0].decode($decoder, 0),
-          );
+          _onWithResponseEventStreamController
+              .add($types[0].decode($decoder, 0));
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -522,8 +536,8 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -535,12 +549,12 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Ordinal:
         final String _name =
@@ -551,10 +565,14 @@
               _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Type
                   .response;
           $decoder.claimMemory(16);
-          $completer.complete(null);
+          // ignore: prefer_const_declarations
+          final $response = null;
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -571,12 +589,14 @@
               _kWithAndWithoutRequestResponse_NoRequestWithResponse_Type
                   .response;
           $decoder.claimMemory(32);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -593,10 +613,14 @@
               _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Type
                   .response;
           $decoder.claimMemory(16);
-          $completer.complete(null);
+          // ignore: prefer_const_declarations
+          final $response = null;
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -613,12 +637,14 @@
               _kWithAndWithoutRequestResponse_WithRequestWithResponse_Type
                   .response;
           $decoder.claimMemory(32);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -627,137 +653,131 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<void> noRequestNoResponse() async {
+  $async.Future<void> noRequestNoResponse() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_NoRequestNoResponse_Ordinal, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
   @override
-  Future<void> noRequestEmptyResponse() async {
+  $async.Future<void> noRequestEmptyResponse() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Ordinal, 0);
-    final $completer = new Completer<void>();
+    final $completer = $async.Completer<void>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
 
   @override
-  Future<String> noRequestWithResponse() async {
+  $async.Future<String> noRequestWithResponse() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_NoRequestWithResponse_Ordinal, 0);
-    final $completer = new Completer<String>();
+    final $completer = $async.Completer<String>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
 
   @override
-  Future<void> withRequestNoResponse(String arg) async {
+  $async.Future<void> withRequestNoResponse(String arg) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_WithRequestNoResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kWithAndWithoutRequestResponse_WithRequestNoResponse_Type.request;
     $types[0].encode($encoder, arg, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
   @override
-  Future<void> withRequestEmptyResponse(String arg) async {
+  $async.Future<void> withRequestEmptyResponse(String arg) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Type.request;
     $types[0].encode($encoder, arg, 0);
-    final $completer = new Completer<void>();
+    final $completer = $async.Completer<void>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
 
   @override
-  Future<String> withRequestWithResponse(String arg) async {
+  $async.Future<String> withRequestWithResponse(String arg) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_WithRequestWithResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kWithAndWithoutRequestResponse_WithRequestWithResponse_Type.request;
     $types[0].encode($encoder, arg, 0);
-    final $completer = new Completer<String>();
+    final $completer = $async.Completer<String>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
 
   final _onEmptyResponseEventStreamController =
-      new StreamController<void>.broadcast();
+      $async.StreamController<void>.broadcast();
   @override
-  Stream<void> get onEmptyResponse =>
+  $async.Stream<void> get onEmptyResponse =>
       _onEmptyResponseEventStreamController.stream;
 
   final _onWithResponseEventStreamController =
-      new StreamController<String>.broadcast();
+      $async.StreamController<String>.broadcast();
   @override
-  Stream<String> get onWithResponse =>
+  $async.Stream<String> get onWithResponse =>
       _onWithResponseEventStreamController.stream;
 }
 
@@ -765,7 +785,7 @@
     extends $fidl.AsyncBinding<WithAndWithoutRequestResponse> {
   WithAndWithoutRequestResponseBinding()
       : super(r"WithAndWithoutRequestResponse") {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -776,7 +796,7 @@
     whenBound.then((_) {
       if (impl.onEmptyResponse != null) {
         $subscriptions.add(impl.onEmptyResponse.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(
               _kWithAndWithoutRequestResponse_OnEmptyResponse_Ordinal, 0);
           $encoder.alloc(16 - $fidl.kMessageHeaderSize);
@@ -788,7 +808,7 @@
       }
       if (impl.onWithResponse != null) {
         $subscriptions.add(impl.onWithResponse.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(
               _kWithAndWithoutRequestResponse_OnWithResponse_Ordinal, 0);
           $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -804,7 +824,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithAndWithoutRequestResponse_NoRequestNoResponse_Ordinal:
         final String _name =
@@ -814,7 +834,7 @@
           final List<$fidl.MemberType> $types =
               _kWithAndWithoutRequestResponse_NoRequestNoResponse_Type.request;
           $decoder.claimMemory(16);
-          final Future<void> $future = impl.noRequestNoResponse();
+          final $async.Future<void> $future = impl.noRequestNoResponse();
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           close();
@@ -833,9 +853,9 @@
               _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Type
                   .request;
           $decoder.claimMemory(16);
-          final Future<void> $future = impl.noRequestEmptyResponse();
+          final $async.Future<void> $future = impl.noRequestEmptyResponse();
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Ordinal,
                 $message.txid);
@@ -862,9 +882,9 @@
               _kWithAndWithoutRequestResponse_NoRequestWithResponse_Type
                   .request;
           $decoder.claimMemory(16);
-          final Future<String> $future = impl.noRequestWithResponse();
+          final $async.Future<String> $future = impl.noRequestWithResponse();
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kWithAndWithoutRequestResponse_NoRequestWithResponse_Ordinal,
                 $message.txid);
@@ -896,7 +916,7 @@
               _kWithAndWithoutRequestResponse_WithRequestNoResponse_Type
                   .request;
           $decoder.claimMemory(32);
-          final Future<void> $future = impl.withRequestNoResponse(
+          final $async.Future<void> $future = impl.withRequestNoResponse(
             $types[0].decode($decoder, 0),
           );
           // ignore: avoid_catches_without_on_clauses
@@ -917,11 +937,11 @@
               _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Type
                   .request;
           $decoder.claimMemory(32);
-          final Future<void> $future = impl.withRequestEmptyResponse(
+          final $async.Future<void> $future = impl.withRequestEmptyResponse(
             $types[0].decode($decoder, 0),
           );
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Ordinal,
                 $message.txid);
@@ -948,11 +968,11 @@
               _kWithAndWithoutRequestResponse_WithRequestWithResponse_Type
                   .request;
           $decoder.claimMemory(32);
-          final Future<String> $future = impl.withRequestWithResponse(
+          final $async.Future<String> $future = impl.withRequestWithResponse(
             $types[0].decode($decoder, 0),
           );
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kWithAndWithoutRequestResponse_WithRequestWithResponse_Ordinal,
                 $message.txid);
@@ -976,30 +996,29 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for WithAndWithoutRequestResponseBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for WithAndWithoutRequestResponseBinding');
     }
   }
 }
 
-// errorAsPrimitive: () -> (WithErrorSyntaxErrorAsPrimitiveResult result)
+// errorAsPrimitive: () -> ()
 const int _kWithErrorSyntax_ErrorAsPrimitive_Ordinal = 2069369145;
 const $fidl.MethodType _kWithErrorSyntax_ErrorAsPrimitive_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResult>(
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResult>(
         type: kWithErrorSyntax_ErrorAsPrimitive_Result_Type, offset: 16),
   ],
   name: r"WithErrorSyntax.ErrorAsPrimitive",
 );
-// errorAsEnum: () -> (WithErrorSyntaxErrorAsEnumResult result)
+// errorAsEnum: () -> ()
 const int _kWithErrorSyntax_ErrorAsEnum_Ordinal = 1284890143;
-const $fidl.MethodType _kWithErrorSyntax_ErrorAsEnum_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kWithErrorSyntax_ErrorAsEnum_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsEnumResult>(
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsEnumResult>(
         type: kWithErrorSyntax_ErrorAsEnum_Result_Type, offset: 16),
   ],
   name: r"WithErrorSyntax.ErrorAsEnum",
@@ -1008,9 +1027,9 @@
 abstract class WithErrorSyntax extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const WithErrorSyntaxData();
-  Future<WithErrorSyntaxErrorAsPrimitiveResult> errorAsPrimitive();
-  Future<WithErrorSyntaxErrorAsEnumResult> errorAsEnum();
+  $fidl.ServiceData get $serviceData => WithErrorSyntaxData();
+  $async.Future<void> errorAsPrimitive();
+  $async.Future<void> errorAsEnum();
 }
 
 class WithErrorSyntaxData implements $fidl.ServiceData<WithErrorSyntax> {
@@ -1030,7 +1049,7 @@
 class WithErrorSyntaxProxy extends $fidl.AsyncProxy<WithErrorSyntax>
     implements WithErrorSyntax {
   WithErrorSyntaxProxy()
-      : super(new $fidl.AsyncProxyController<WithErrorSyntax>(
+      : super($fidl.AsyncProxyController<WithErrorSyntax>(
             $serviceName: null, $interfaceName: r'WithErrorSyntax')) {
     ctrl.onResponse = _handleResponse;
   }
@@ -1039,11 +1058,11 @@
   $fidl.ServiceData get $serviceData => WithErrorSyntaxData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -1055,12 +1074,12 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithErrorSyntax_ErrorAsPrimitive_Ordinal:
         final String _name = _kWithErrorSyntax_ErrorAsPrimitive_Type.name;
@@ -1069,12 +1088,19 @@
           final List<$fidl.MemberType> $types =
               _kWithErrorSyntax_ErrorAsPrimitive_Type.response;
           $decoder.claimMemory(24);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          if ($response.tag ==
+              WithErrorSyntaxErrorAsPrimitiveResultTag.response) {
+            $completer.complete(null);
+          } else {
+            $completer.completeError($fidl.MethodException($response.err));
+          }
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -1089,12 +1115,18 @@
           final List<$fidl.MemberType> $types =
               _kWithErrorSyntax_ErrorAsEnum_Type.response;
           $decoder.claimMemory(24);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          if ($response.tag == WithErrorSyntaxErrorAsEnumResultTag.response) {
+            $completer.complete(null);
+          } else {
+            $completer.completeError($fidl.MethodException($response.err));
+          }
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -1103,41 +1135,39 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<WithErrorSyntaxErrorAsPrimitiveResult> errorAsPrimitive() async {
+  $async.Future<void> errorAsPrimitive() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kWithErrorSyntax_ErrorAsPrimitive_Ordinal, 0);
-    final $completer = new Completer<WithErrorSyntaxErrorAsPrimitiveResult>();
+    final $completer = $async.Completer<void>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
 
   @override
-  Future<WithErrorSyntaxErrorAsEnumResult> errorAsEnum() async {
+  $async.Future<void> errorAsEnum() async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kWithErrorSyntax_ErrorAsEnum_Ordinal, 0);
-    final $completer = new Completer<WithErrorSyntaxErrorAsEnumResult>();
+    final $completer = $async.Completer<void>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
@@ -1148,7 +1178,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithErrorSyntax_ErrorAsPrimitive_Ordinal:
         final String _name = _kWithErrorSyntax_ErrorAsPrimitive_Type.name;
@@ -1157,10 +1187,19 @@
           final List<$fidl.MemberType> $types =
               _kWithErrorSyntax_ErrorAsPrimitive_Type.request;
           $decoder.claimMemory(16);
-          final Future<WithErrorSyntaxErrorAsPrimitiveResult> $future =
-              impl.errorAsPrimitive();
-          $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $async.Future<void> $future = impl.errorAsPrimitive();
+          $future.then(($responseValue) {
+            return WithErrorSyntaxErrorAsPrimitiveResult.withResponse(
+                WithErrorSyntaxErrorAsPrimitiveResponse());
+          }, onError: ($error) {
+            if ($error is $fidl.MethodException) {
+              return WithErrorSyntaxErrorAsPrimitiveResult.withErr(
+                  $error.value);
+            } else {
+              return Future.error($error);
+            }
+          }).then(($response) {
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kWithErrorSyntax_ErrorAsPrimitive_Ordinal, $message.txid);
             $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1188,10 +1227,18 @@
           final List<$fidl.MemberType> $types =
               _kWithErrorSyntax_ErrorAsEnum_Type.request;
           $decoder.claimMemory(16);
-          final Future<WithErrorSyntaxErrorAsEnumResult> $future =
-              impl.errorAsEnum();
-          $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $async.Future<void> $future = impl.errorAsEnum();
+          $future.then(($responseValue) {
+            return WithErrorSyntaxErrorAsEnumResult.withResponse(
+                WithErrorSyntaxErrorAsEnumResponse());
+          }, onError: ($error) {
+            if ($error is $fidl.MethodException) {
+              return WithErrorSyntaxErrorAsEnumResult.withErr($error.value);
+            } else {
+              return Future.error($error);
+            }
+          }).then(($response) {
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kWithErrorSyntax_ErrorAsEnum_Ordinal, $message.txid);
             $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1213,8 +1260,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for WithErrorSyntaxBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for WithErrorSyntaxBinding');
     }
   }
 }
@@ -1222,35 +1269,34 @@
 // methodA: (int a, int b)
 const int _kOvernetInternalProtocol_MethodA_Ordinal = 1993818253;
 const $fidl.MethodType _kOvernetInternalProtocol_MethodA_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"OvernetInternalProtocol.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kOvernetInternalProtocol_EventA_Ordinal = 1746007436;
-const $fidl.MethodType _kOvernetInternalProtocol_EventA_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kOvernetInternalProtocol_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"OvernetInternalProtocol.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kOvernetInternalProtocol_MethodB_Ordinal = 952134976;
 const $fidl.MethodType _kOvernetInternalProtocol_MethodB_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"OvernetInternalProtocol.MethodB",
 );
@@ -1267,10 +1313,10 @@
 abstract class OvernetInternalProtocol extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const OvernetInternalProtocolData();
-  Future<void> methodA(int a, int b);
-  Stream<OvernetInternalProtocol$EventA$Response> get eventA;
-  Future<int> methodB(int a, int b);
+  $fidl.ServiceData get $serviceData => OvernetInternalProtocolData();
+  $async.Future<void> methodA(int a, int b);
+  $async.Stream<OvernetInternalProtocol$EventA$Response> get eventA;
+  $async.Future<int> methodB(int a, int b);
 }
 
 class OvernetInternalProtocolData
@@ -1291,7 +1337,7 @@
 class OvernetInternalProtocolProxy extends $fidl
     .AsyncProxy<OvernetInternalProtocol> implements OvernetInternalProtocol {
   OvernetInternalProtocolProxy()
-      : super(new $fidl.AsyncProxyController<OvernetInternalProtocol>(
+      : super($fidl.AsyncProxyController<OvernetInternalProtocol>(
             $serviceName: null, $interfaceName: r'OvernetInternalProtocol')) {
     ctrl.onResponse = _handleResponse;
     ctrl.whenClosed.then((_) {
@@ -1303,7 +1349,7 @@
   $fidl.ServiceData get $serviceData => OvernetInternalProtocolData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kOvernetInternalProtocol_EventA_Ordinal:
         final String _name = _kOvernetInternalProtocol_EventA_Type.name;
@@ -1313,14 +1359,14 @@
               _kOvernetInternalProtocol_EventA_Type.response;
           $decoder.claimMemory(32);
           _eventAEventStreamController
-              .add(new OvernetInternalProtocol$EventA$Response(
+              .add(OvernetInternalProtocol$EventA$Response(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           ));
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -1328,8 +1374,8 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -1341,12 +1387,12 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kOvernetInternalProtocol_MethodB_Ordinal:
         final String _name = _kOvernetInternalProtocol_MethodB_Type.name;
@@ -1355,12 +1401,14 @@
           final List<$fidl.MemberType> $types =
               _kOvernetInternalProtocol_MethodB_Type.response;
           $decoder.claimMemory(24);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -1369,57 +1417,55 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<void> methodA(int a, int b) async {
+  $async.Future<void> methodA(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kOvernetInternalProtocol_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kOvernetInternalProtocol_MethodA_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
-  final _eventAEventStreamController =
-      new StreamController<OvernetInternalProtocol$EventA$Response>.broadcast();
+  final _eventAEventStreamController = $async
+      .StreamController<OvernetInternalProtocol$EventA$Response>.broadcast();
   @override
-  Stream<OvernetInternalProtocol$EventA$Response> get eventA =>
+  $async.Stream<OvernetInternalProtocol$EventA$Response> get eventA =>
       _eventAEventStreamController.stream;
 
   @override
-  Future<int> methodB(int a, int b) async {
+  $async.Future<int> methodB(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kOvernetInternalProtocol_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kOvernetInternalProtocol_MethodB_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    final $completer = new Completer<int>();
+    final $completer = $async.Completer<int>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
@@ -1428,7 +1474,7 @@
 class OvernetInternalProtocolBinding
     extends $fidl.AsyncBinding<OvernetInternalProtocol> {
   OvernetInternalProtocolBinding() : super(r"OvernetInternalProtocol") {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -1439,7 +1485,7 @@
     whenBound.then((_) {
       if (impl.eventA != null) {
         $subscriptions.add(impl.eventA.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(
               _kOvernetInternalProtocol_EventA_Ordinal, 0);
           $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -1457,7 +1503,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kOvernetInternalProtocol_MethodA_Ordinal:
         final String _name = _kOvernetInternalProtocol_MethodA_Type.name;
@@ -1466,7 +1512,7 @@
           final List<$fidl.MemberType> $types =
               _kOvernetInternalProtocol_MethodA_Type.request;
           $decoder.claimMemory(32);
-          final Future<void> $future = impl.methodA(
+          final $async.Future<void> $future = impl.methodA(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
@@ -1486,12 +1532,12 @@
           final List<$fidl.MemberType> $types =
               _kOvernetInternalProtocol_MethodB_Type.request;
           $decoder.claimMemory(32);
-          final Future<int> $future = impl.methodB(
+          final $async.Future<int> $future = impl.methodB(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kOvernetInternalProtocol_MethodB_Ordinal, $message.txid);
             $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1513,44 +1559,41 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for OvernetInternalProtocolBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for OvernetInternalProtocolBinding');
     }
   }
 }
 
 // methodA: (int a, int b)
 const int _kSocketControlProtocol_MethodA_Ordinal = 1007842318;
-const $fidl.MethodType _kSocketControlProtocol_MethodA_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kSocketControlProtocol_MethodA_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"SocketControlProtocol.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kSocketControlProtocol_EventA_Ordinal = 955483393;
-const $fidl.MethodType _kSocketControlProtocol_EventA_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kSocketControlProtocol_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"SocketControlProtocol.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kSocketControlProtocol_MethodB_Ordinal = 677342235;
-const $fidl.MethodType _kSocketControlProtocol_MethodB_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kSocketControlProtocol_MethodB_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"SocketControlProtocol.MethodB",
 );
@@ -1567,10 +1610,10 @@
 abstract class SocketControlProtocol extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const SocketControlProtocolData();
-  Future<void> methodA(int a, int b);
-  Stream<SocketControlProtocol$EventA$Response> get eventA;
-  Future<int> methodB(int a, int b);
+  $fidl.ServiceData get $serviceData => SocketControlProtocolData();
+  $async.Future<void> methodA(int a, int b);
+  $async.Stream<SocketControlProtocol$EventA$Response> get eventA;
+  $async.Future<int> methodB(int a, int b);
 }
 
 class SocketControlProtocolData
@@ -1591,7 +1634,7 @@
 class SocketControlProtocolProxy extends $fidl.AsyncProxy<SocketControlProtocol>
     implements SocketControlProtocol {
   SocketControlProtocolProxy()
-      : super(new $fidl.AsyncProxyController<SocketControlProtocol>(
+      : super($fidl.AsyncProxyController<SocketControlProtocol>(
             $serviceName: null, $interfaceName: r'SocketControlProtocol')) {
     ctrl.onResponse = _handleResponse;
     ctrl.whenClosed.then((_) {
@@ -1603,7 +1646,7 @@
   $fidl.ServiceData get $serviceData => SocketControlProtocolData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSocketControlProtocol_EventA_Ordinal:
         final String _name = _kSocketControlProtocol_EventA_Type.name;
@@ -1613,14 +1656,14 @@
               _kSocketControlProtocol_EventA_Type.response;
           $decoder.claimMemory(32);
           _eventAEventStreamController
-              .add(new SocketControlProtocol$EventA$Response(
+              .add(SocketControlProtocol$EventA$Response(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           ));
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -1628,8 +1671,8 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -1641,12 +1684,12 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSocketControlProtocol_MethodB_Ordinal:
         final String _name = _kSocketControlProtocol_MethodB_Type.name;
@@ -1655,12 +1698,14 @@
           final List<$fidl.MemberType> $types =
               _kSocketControlProtocol_MethodB_Type.response;
           $decoder.claimMemory(24);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -1669,57 +1714,55 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<void> methodA(int a, int b) async {
+  $async.Future<void> methodA(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSocketControlProtocol_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kSocketControlProtocol_MethodA_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
-  final _eventAEventStreamController =
-      new StreamController<SocketControlProtocol$EventA$Response>.broadcast();
+  final _eventAEventStreamController = $async
+      .StreamController<SocketControlProtocol$EventA$Response>.broadcast();
   @override
-  Stream<SocketControlProtocol$EventA$Response> get eventA =>
+  $async.Stream<SocketControlProtocol$EventA$Response> get eventA =>
       _eventAEventStreamController.stream;
 
   @override
-  Future<int> methodB(int a, int b) async {
+  $async.Future<int> methodB(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSocketControlProtocol_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kSocketControlProtocol_MethodB_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    final $completer = new Completer<int>();
+    final $completer = $async.Completer<int>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
@@ -1728,7 +1771,7 @@
 class SocketControlProtocolBinding
     extends $fidl.AsyncBinding<SocketControlProtocol> {
   SocketControlProtocolBinding() : super(r"SocketControlProtocol") {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -1739,7 +1782,7 @@
     whenBound.then((_) {
       if (impl.eventA != null) {
         $subscriptions.add(impl.eventA.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(
               _kSocketControlProtocol_EventA_Ordinal, 0);
           $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -1757,7 +1800,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSocketControlProtocol_MethodA_Ordinal:
         final String _name = _kSocketControlProtocol_MethodA_Type.name;
@@ -1766,7 +1809,7 @@
           final List<$fidl.MemberType> $types =
               _kSocketControlProtocol_MethodA_Type.request;
           $decoder.claimMemory(32);
-          final Future<void> $future = impl.methodA(
+          final $async.Future<void> $future = impl.methodA(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
@@ -1786,12 +1829,12 @@
           final List<$fidl.MemberType> $types =
               _kSocketControlProtocol_MethodB_Type.request;
           $decoder.claimMemory(32);
-          final Future<int> $future = impl.methodB(
+          final $async.Future<int> $future = impl.methodB(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kSocketControlProtocol_MethodB_Ordinal, $message.txid);
             $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1813,41 +1856,41 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for SocketControlProtocolBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for SocketControlProtocolBinding');
     }
   }
 }
 
 // methodA: (int a, int b)
 const int _kChannelProtocol_MethodA_Ordinal = 1432785874;
-const $fidl.MethodType _kChannelProtocol_MethodA_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kChannelProtocol_MethodA_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"ChannelProtocol.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kChannelProtocol_EventA_Ordinal = 477676034;
-const $fidl.MethodType _kChannelProtocol_EventA_Type = const $fidl.MethodType(
+const $fidl.MethodType _kChannelProtocol_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"ChannelProtocol.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kChannelProtocol_MethodB_Ordinal = 180770075;
-const $fidl.MethodType _kChannelProtocol_MethodB_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kChannelProtocol_MethodB_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"ChannelProtocol.MethodB",
 );
@@ -1864,10 +1907,10 @@
 abstract class ChannelProtocol extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const ChannelProtocolData();
-  Future<void> methodA(int a, int b);
-  Stream<ChannelProtocol$EventA$Response> get eventA;
-  Future<int> methodB(int a, int b);
+  $fidl.ServiceData get $serviceData => ChannelProtocolData();
+  $async.Future<void> methodA(int a, int b);
+  $async.Stream<ChannelProtocol$EventA$Response> get eventA;
+  $async.Future<int> methodB(int a, int b);
 }
 
 class ChannelProtocolData implements $fidl.ServiceData<ChannelProtocol> {
@@ -1887,7 +1930,7 @@
 class ChannelProtocolProxy extends $fidl.AsyncProxy<ChannelProtocol>
     implements ChannelProtocol {
   ChannelProtocolProxy()
-      : super(new $fidl.AsyncProxyController<ChannelProtocol>(
+      : super($fidl.AsyncProxyController<ChannelProtocol>(
             $serviceName: null, $interfaceName: r'ChannelProtocol')) {
     ctrl.onResponse = _handleResponse;
     ctrl.whenClosed.then((_) {
@@ -1899,7 +1942,7 @@
   $fidl.ServiceData get $serviceData => ChannelProtocolData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kChannelProtocol_EventA_Ordinal:
         final String _name = _kChannelProtocol_EventA_Type.name;
@@ -1908,14 +1951,14 @@
           final List<$fidl.MemberType> $types =
               _kChannelProtocol_EventA_Type.response;
           $decoder.claimMemory(32);
-          _eventAEventStreamController.add(new ChannelProtocol$EventA$Response(
+          _eventAEventStreamController.add(ChannelProtocol$EventA$Response(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           ));
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -1923,8 +1966,8 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -1936,12 +1979,12 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kChannelProtocol_MethodB_Ordinal:
         final String _name = _kChannelProtocol_MethodB_Type.name;
@@ -1950,12 +1993,14 @@
           final List<$fidl.MemberType> $types =
               _kChannelProtocol_MethodB_Type.response;
           $decoder.claimMemory(24);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -1964,57 +2009,55 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<void> methodA(int a, int b) async {
+  $async.Future<void> methodA(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kChannelProtocol_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kChannelProtocol_MethodA_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
   final _eventAEventStreamController =
-      new StreamController<ChannelProtocol$EventA$Response>.broadcast();
+      $async.StreamController<ChannelProtocol$EventA$Response>.broadcast();
   @override
-  Stream<ChannelProtocol$EventA$Response> get eventA =>
+  $async.Stream<ChannelProtocol$EventA$Response> get eventA =>
       _eventAEventStreamController.stream;
 
   @override
-  Future<int> methodB(int a, int b) async {
+  $async.Future<int> methodB(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kChannelProtocol_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
         _kChannelProtocol_MethodB_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    final $completer = new Completer<int>();
+    final $completer = $async.Completer<int>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
@@ -2022,7 +2065,7 @@
 
 class ChannelProtocolBinding extends $fidl.AsyncBinding<ChannelProtocol> {
   ChannelProtocolBinding() : super(r"ChannelProtocol") {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -2033,7 +2076,7 @@
     whenBound.then((_) {
       if (impl.eventA != null) {
         $subscriptions.add(impl.eventA.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(_kChannelProtocol_EventA_Ordinal, 0);
           $encoder.alloc(32 - $fidl.kMessageHeaderSize);
           final List<$fidl.MemberType> $types =
@@ -2050,7 +2093,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kChannelProtocol_MethodA_Ordinal:
         final String _name = _kChannelProtocol_MethodA_Type.name;
@@ -2059,7 +2102,7 @@
           final List<$fidl.MemberType> $types =
               _kChannelProtocol_MethodA_Type.request;
           $decoder.claimMemory(32);
-          final Future<void> $future = impl.methodA(
+          final $async.Future<void> $future = impl.methodA(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
@@ -2079,12 +2122,12 @@
           final List<$fidl.MemberType> $types =
               _kChannelProtocol_MethodB_Type.request;
           $decoder.claimMemory(32);
-          final Future<int> $future = impl.methodB(
+          final $async.Future<int> $future = impl.methodB(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kChannelProtocol_MethodB_Ordinal, $message.txid);
             $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -2106,41 +2149,41 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for ChannelProtocolBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for ChannelProtocolBinding');
     }
   }
 }
 
 // methodA: (int a, int b)
 const int _kKitchenSink_MethodA_Ordinal = 450577456;
-const $fidl.MethodType _kKitchenSink_MethodA_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kKitchenSink_MethodA_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"KitchenSink.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kKitchenSink_EventA_Ordinal = 1795426833;
-const $fidl.MethodType _kKitchenSink_EventA_Type = const $fidl.MethodType(
+const $fidl.MethodType _kKitchenSink_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"KitchenSink.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kKitchenSink_MethodB_Ordinal = 1999489700;
-const $fidl.MethodType _kKitchenSink_MethodB_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kKitchenSink_MethodB_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"KitchenSink.MethodB",
 );
@@ -2157,10 +2200,10 @@
 abstract class KitchenSink extends $fidl.Service {
   static const String $serviceName = null;
   @override
-  $fidl.ServiceData get $serviceData => const KitchenSinkData();
-  Future<void> methodA(int a, int b);
-  Stream<KitchenSink$EventA$Response> get eventA;
-  Future<int> methodB(int a, int b);
+  $fidl.ServiceData get $serviceData => KitchenSinkData();
+  $async.Future<void> methodA(int a, int b);
+  $async.Stream<KitchenSink$EventA$Response> get eventA;
+  $async.Future<int> methodB(int a, int b);
 }
 
 class KitchenSinkData implements $fidl.ServiceData<KitchenSink> {
@@ -2180,7 +2223,7 @@
 class KitchenSinkProxy extends $fidl.AsyncProxy<KitchenSink>
     implements KitchenSink {
   KitchenSinkProxy()
-      : super(new $fidl.AsyncProxyController<KitchenSink>(
+      : super($fidl.AsyncProxyController<KitchenSink>(
             $serviceName: null, $interfaceName: r'KitchenSink')) {
     ctrl.onResponse = _handleResponse;
     ctrl.whenClosed.then((_) {
@@ -2192,7 +2235,7 @@
   $fidl.ServiceData get $serviceData => KitchenSinkData();
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kKitchenSink_EventA_Ordinal:
         final String _name = _kKitchenSink_EventA_Type.name;
@@ -2201,14 +2244,14 @@
           final List<$fidl.MemberType> $types =
               _kKitchenSink_EventA_Type.response;
           $decoder.claimMemory(32);
-          _eventAEventStreamController.add(new KitchenSink$EventA$Response(
+          _eventAEventStreamController.add(KitchenSink$EventA$Response(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           ));
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
           ctrl.proxyError(
-              new $fidl.FidlError('Exception handling event $_name: $_e'));
+              $fidl.FidlError('Exception handling event $_name: $_e'));
           ctrl.close();
           rethrow;
         } finally {
@@ -2216,8 +2259,8 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
@@ -2229,12 +2272,12 @@
       _handleEvent($message);
       return;
     }
-    final Completer $completer = ctrl.getCompleter($txid);
+    final $async.Completer $completer = ctrl.getCompleter($txid);
     if ($completer == null) {
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kKitchenSink_MethodB_Ordinal:
         final String _name = _kKitchenSink_MethodB_Type.name;
@@ -2243,12 +2286,14 @@
           final List<$fidl.MemberType> $types =
               _kKitchenSink_MethodB_Type.response;
           $decoder.claimMemory(24);
-          $completer.complete(
-            $types[0].decode($decoder, 0),
-          );
+          // ignore: prefer_const_declarations
+          final $response = $types[0].decode($decoder, 0);
+
+          $completer.complete($response);
+
           // ignore: avoid_catches_without_on_clauses
         } catch (_e) {
-          ctrl.proxyError(new $fidl.FidlError(
+          ctrl.proxyError($fidl.FidlError(
               'Exception handling method response $_name: $_e'));
           ctrl.close();
           rethrow;
@@ -2257,55 +2302,53 @@
         }
         break;
       default:
-        ctrl.proxyError(new $fidl.FidlError(
-            'Unexpected message ordinal: ${$message.ordinal}'));
+        ctrl.proxyError(
+            $fidl.FidlError('Unexpected message ordinal: ${$message.ordinal}'));
         ctrl.close();
         break;
     }
   }
 
   @override
-  Future<void> methodA(int a, int b) async {
+  $async.Future<void> methodA(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kKitchenSink_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types = _kKitchenSink_MethodA_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    return new Future.sync(() {
+    return $async.Future.sync(() {
       ctrl.sendMessage($encoder.message);
     });
   }
 
   final _eventAEventStreamController =
-      new StreamController<KitchenSink$EventA$Response>.broadcast();
+      $async.StreamController<KitchenSink$EventA$Response>.broadcast();
   @override
-  Stream<KitchenSink$EventA$Response> get eventA =>
+  $async.Stream<KitchenSink$EventA$Response> get eventA =>
       _eventAEventStreamController.stream;
 
   @override
-  Future<int> methodB(int a, int b) async {
+  $async.Future<int> methodB(int a, int b) async {
     if (!ctrl.isBound) {
-      return new Future.error(
-          new $fidl.FidlStateException(
-              'Proxy<${ctrl.$interfaceName}> is closed.'),
+      return $async.Future.error(
+          $fidl.FidlStateException('Proxy<${ctrl.$interfaceName}> is closed.'),
           StackTrace.current);
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kKitchenSink_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types = _kKitchenSink_MethodB_Type.request;
     $types[0].encode($encoder, a, 0);
     $types[1].encode($encoder, b, 0);
-    final $completer = new Completer<int>();
+    final $completer = $async.Completer<int>();
     ctrl.sendMessageWithResponse($encoder.message, $completer);
     return $completer.future;
   }
@@ -2313,7 +2356,7 @@
 
 class KitchenSinkBinding extends $fidl.AsyncBinding<KitchenSink> {
   KitchenSinkBinding() : super(r"KitchenSink") {
-    final List<StreamSubscription<dynamic>> $subscriptions = [];
+    final List<$async.StreamSubscription<dynamic>> $subscriptions = [];
     void $unsubscribe() {
       for (final $sub in $subscriptions) {
         $sub.cancel();
@@ -2324,7 +2367,7 @@
     whenBound.then((_) {
       if (impl.eventA != null) {
         $subscriptions.add(impl.eventA.listen(($response) {
-          final $fidl.Encoder $encoder = new $fidl.Encoder();
+          final $fidl.Encoder $encoder = $fidl.Encoder();
           $encoder.encodeMessageHeader(_kKitchenSink_EventA_Ordinal, 0);
           $encoder.alloc(32 - $fidl.kMessageHeaderSize);
           final List<$fidl.MemberType> $types =
@@ -2341,7 +2384,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kKitchenSink_MethodA_Ordinal:
         final String _name = _kKitchenSink_MethodA_Type.name;
@@ -2350,7 +2393,7 @@
           final List<$fidl.MemberType> $types =
               _kKitchenSink_MethodA_Type.request;
           $decoder.claimMemory(32);
-          final Future<void> $future = impl.methodA(
+          final $async.Future<void> $future = impl.methodA(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
@@ -2370,12 +2413,12 @@
           final List<$fidl.MemberType> $types =
               _kKitchenSink_MethodB_Type.request;
           $decoder.claimMemory(32);
-          final Future<int> $future = impl.methodB(
+          final $async.Future<int> $future = impl.methodB(
             $types[0].decode($decoder, 0),
             $types[1].decode($decoder, 0),
           );
           $future.then(($response) {
-            final $fidl.Encoder $encoder = new $fidl.Encoder();
+            final $fidl.Encoder $encoder = $fidl.Encoder();
             $encoder.encodeMessageHeader(
                 _kKitchenSink_MethodB_Ordinal, $message.txid);
             $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -2397,8 +2440,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for KitchenSinkBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for KitchenSinkBinding');
     }
   }
 }
diff --git a/bin/fidlgen_dart/goldens/protocols.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/protocols.test.fidl.json_sync.dart.golden
index 1a98113..206ad14 100644
--- a/bin/fidlgen_dart/goldens/protocols.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/protocols.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -41,8 +41,8 @@
 // ignore_for_file: prefer_equal_for_default_values
 
 class ErrorEnun extends $fidl.Enum {
-  factory ErrorEnun(int v) {
-    switch (v) {
+  factory ErrorEnun(int _v) {
+    switch (_v) {
       case 1:
         return errFoo;
       case 2:
@@ -51,29 +51,32 @@
         return null;
     }
   }
-  static const ErrorEnun errFoo = const ErrorEnun._(1);
-  static const ErrorEnun errBar = const ErrorEnun._(2);
+  static const ErrorEnun errFoo = ErrorEnun._(1);
+  static const ErrorEnun errBar = ErrorEnun._(2);
 
-  const ErrorEnun._(this.value);
+  const ErrorEnun._(this.$value);
 
   @override
-  final int value;
+  final int $value;
 
-  static const Map<String, ErrorEnun> valuesMap = const {
+  static const Map<String, ErrorEnun> $valuesMap = {
     r'errFoo': errFoo,
     r'errBar': errBar,
   };
 
-  static const List<ErrorEnun> values = const [
+  static const List<ErrorEnun> $values = [
     errFoo,
     errBar,
   ];
 
-  static ErrorEnun valueOf(String name) => valuesMap[name];
+  // TODO: remove, see: FIDL-587
+  static const List<ErrorEnun> values = ErrorEnun.$values;
+
+  static ErrorEnun $valueOf(String name) => $valuesMap[name];
 
   @override
   String toString() {
-    switch (value) {
+    switch ($value) {
       case 1:
         return r'ErrorEnun.errFoo';
       case 2:
@@ -83,12 +86,11 @@
     }
   }
 
-  static ErrorEnun _ctor(int v) => new ErrorEnun(v);
+  static ErrorEnun _ctor(int v) => ErrorEnun(v);
 }
 
 const $fidl.EnumType<ErrorEnun> kErrorEnun_Type =
-    const $fidl.EnumType<ErrorEnun>(
-        type: const $fidl.Uint32Type(), ctor: ErrorEnun._ctor);
+    $fidl.EnumType<ErrorEnun>(type: $fidl.Uint32Type(), ctor: ErrorEnun._ctor);
 
 enum WithErrorSyntaxErrorAsPrimitiveResultTag {
   response,
@@ -99,25 +101,28 @@
   const WithErrorSyntaxErrorAsPrimitiveResult.withResponse(
       WithErrorSyntaxErrorAsPrimitiveResponse value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsPrimitiveResultTag.response;
+        _tag = WithErrorSyntaxErrorAsPrimitiveResultTag.response;
 
   const WithErrorSyntaxErrorAsPrimitiveResult.withErr(int value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsPrimitiveResultTag.err;
+        _tag = WithErrorSyntaxErrorAsPrimitiveResultTag.err;
 
-  WithErrorSyntaxErrorAsPrimitiveResult._(this.tag, Object data) : _data = data;
+  WithErrorSyntaxErrorAsPrimitiveResult._(
+      WithErrorSyntaxErrorAsPrimitiveResultTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final WithErrorSyntaxErrorAsPrimitiveResultTag tag;
+  final WithErrorSyntaxErrorAsPrimitiveResultTag _tag;
   final _data;
   WithErrorSyntaxErrorAsPrimitiveResponse get response {
-    if (tag != WithErrorSyntaxErrorAsPrimitiveResultTag.response) {
+    if (_tag != WithErrorSyntaxErrorAsPrimitiveResultTag.response) {
       return null;
     }
     return _data;
   }
 
   int get err {
-    if (tag != WithErrorSyntaxErrorAsPrimitiveResultTag.err) {
+    if (_tag != WithErrorSyntaxErrorAsPrimitiveResultTag.err) {
       return null;
     }
     return _data;
@@ -125,24 +130,28 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case WithErrorSyntaxErrorAsPrimitiveResultTag.response:
-        return 'WithErrorSyntaxErrorAsPrimitiveResult.response($response)';
+        return r'WithErrorSyntaxErrorAsPrimitiveResult.response($response)';
       case WithErrorSyntaxErrorAsPrimitiveResultTag.err:
-        return 'WithErrorSyntaxErrorAsPrimitiveResult.err($err)';
+        return r'WithErrorSyntaxErrorAsPrimitiveResult.err($err)';
       default:
         return null;
     }
   }
 
+  WithErrorSyntaxErrorAsPrimitiveResultTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  WithErrorSyntaxErrorAsPrimitiveResultTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static WithErrorSyntaxErrorAsPrimitiveResult _ctor(int index, Object data) {
-    return new WithErrorSyntaxErrorAsPrimitiveResult._(
+    return WithErrorSyntaxErrorAsPrimitiveResult._(
         WithErrorSyntaxErrorAsPrimitiveResultTag.values[index], data);
   }
 }
@@ -151,12 +160,12 @@
 // ignore: recursive_compile_time_constant
 const $fidl.UnionType<WithErrorSyntaxErrorAsPrimitiveResult>
     kWithErrorSyntax_ErrorAsPrimitive_Result_Type =
-    const $fidl.UnionType<WithErrorSyntaxErrorAsPrimitiveResult>(
+    $fidl.UnionType<WithErrorSyntaxErrorAsPrimitiveResult>(
   encodedSize: 8,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResponse>(
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResponse>(
         type: kWithErrorSyntax_ErrorAsPrimitive_Response_Type, offset: 4),
-    const $fidl.MemberType<int>(type: const $fidl.Uint32Type(), offset: 4),
+    $fidl.MemberType<int>(type: $fidl.Uint32Type(), offset: 4),
   ],
   ctor: WithErrorSyntaxErrorAsPrimitiveResult._ctor,
 );
@@ -170,25 +179,28 @@
   const WithErrorSyntaxErrorAsEnumResult.withResponse(
       WithErrorSyntaxErrorAsEnumResponse value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsEnumResultTag.response;
+        _tag = WithErrorSyntaxErrorAsEnumResultTag.response;
 
   const WithErrorSyntaxErrorAsEnumResult.withErr(ErrorEnun value)
       : _data = value,
-        tag = WithErrorSyntaxErrorAsEnumResultTag.err;
+        _tag = WithErrorSyntaxErrorAsEnumResultTag.err;
 
-  WithErrorSyntaxErrorAsEnumResult._(this.tag, Object data) : _data = data;
+  WithErrorSyntaxErrorAsEnumResult._(
+      WithErrorSyntaxErrorAsEnumResultTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final WithErrorSyntaxErrorAsEnumResultTag tag;
+  final WithErrorSyntaxErrorAsEnumResultTag _tag;
   final _data;
   WithErrorSyntaxErrorAsEnumResponse get response {
-    if (tag != WithErrorSyntaxErrorAsEnumResultTag.response) {
+    if (_tag != WithErrorSyntaxErrorAsEnumResultTag.response) {
       return null;
     }
     return _data;
   }
 
   ErrorEnun get err {
-    if (tag != WithErrorSyntaxErrorAsEnumResultTag.err) {
+    if (_tag != WithErrorSyntaxErrorAsEnumResultTag.err) {
       return null;
     }
     return _data;
@@ -196,24 +208,28 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case WithErrorSyntaxErrorAsEnumResultTag.response:
-        return 'WithErrorSyntaxErrorAsEnumResult.response($response)';
+        return r'WithErrorSyntaxErrorAsEnumResult.response($response)';
       case WithErrorSyntaxErrorAsEnumResultTag.err:
-        return 'WithErrorSyntaxErrorAsEnumResult.err($err)';
+        return r'WithErrorSyntaxErrorAsEnumResult.err($err)';
       default:
         return null;
     }
   }
 
+  WithErrorSyntaxErrorAsEnumResultTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  WithErrorSyntaxErrorAsEnumResultTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static WithErrorSyntaxErrorAsEnumResult _ctor(int index, Object data) {
-    return new WithErrorSyntaxErrorAsEnumResult._(
+    return WithErrorSyntaxErrorAsEnumResult._(
         WithErrorSyntaxErrorAsEnumResultTag.values[index], data);
   }
 }
@@ -222,12 +238,12 @@
 // ignore: recursive_compile_time_constant
 const $fidl.UnionType<WithErrorSyntaxErrorAsEnumResult>
     kWithErrorSyntax_ErrorAsEnum_Result_Type =
-    const $fidl.UnionType<WithErrorSyntaxErrorAsEnumResult>(
+    $fidl.UnionType<WithErrorSyntaxErrorAsEnumResult>(
   encodedSize: 8,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsEnumResponse>(
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsEnumResponse>(
         type: kWithErrorSyntax_ErrorAsEnum_Response_Type, offset: 4),
-    const $fidl.MemberType<ErrorEnun>(type: kErrorEnun_Type, offset: 4),
+    $fidl.MemberType<ErrorEnun>(type: kErrorEnun_Type, offset: 4),
   ],
   ctor: WithErrorSyntaxErrorAsEnumResult._ctor,
 );
@@ -263,17 +279,17 @@
   }
 
   static WithErrorSyntaxErrorAsPrimitiveResponse _ctor(List<Object> argv) =>
-      new WithErrorSyntaxErrorAsPrimitiveResponse._(argv);
+      WithErrorSyntaxErrorAsPrimitiveResponse._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.StructType<WithErrorSyntaxErrorAsPrimitiveResponse>
     kWithErrorSyntax_ErrorAsPrimitive_Response_Type =
-    const $fidl.StructType<WithErrorSyntaxErrorAsPrimitiveResponse>(
+    $fidl.StructType<WithErrorSyntaxErrorAsPrimitiveResponse>(
   encodedSize: 1,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Uint8Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Uint8Type(), offset: 0),
   ],
   ctor: WithErrorSyntaxErrorAsPrimitiveResponse._ctor,
 );
@@ -308,17 +324,17 @@
   }
 
   static WithErrorSyntaxErrorAsEnumResponse _ctor(List<Object> argv) =>
-      new WithErrorSyntaxErrorAsEnumResponse._(argv);
+      WithErrorSyntaxErrorAsEnumResponse._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.StructType<WithErrorSyntaxErrorAsEnumResponse>
     kWithErrorSyntax_ErrorAsEnum_Response_Type =
-    const $fidl.StructType<WithErrorSyntaxErrorAsEnumResponse>(
+    $fidl.StructType<WithErrorSyntaxErrorAsEnumResponse>(
   encodedSize: 1,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Uint8Type(), offset: 0),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Uint8Type(), offset: 0),
   ],
   ctor: WithErrorSyntaxErrorAsEnumResponse._ctor,
 );
@@ -337,8 +353,7 @@
 const int _kWithAndWithoutRequestResponse_NoRequestNoResponse_Ordinal =
     503576693;
 const $fidl.MethodType
-    _kWithAndWithoutRequestResponse_NoRequestNoResponse_Type =
-    const $fidl.MethodType(
+    _kWithAndWithoutRequestResponse_NoRequestNoResponse_Type = $fidl.MethodType(
   request: null,
   response: null,
   name: r"WithAndWithoutRequestResponse.NoRequestNoResponse",
@@ -348,7 +363,7 @@
     1308023765;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"WithAndWithoutRequestResponse.NoRequestEmptyResponse",
@@ -358,11 +373,11 @@
     107534328;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_NoRequestWithResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   name: r"WithAndWithoutRequestResponse.NoRequestWithResponse",
@@ -372,10 +387,10 @@
     432149361;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_WithRequestNoResponse_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   response: null,
@@ -386,10 +401,10 @@
     1995585907;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   response: null,
@@ -400,15 +415,15 @@
     426977568;
 const $fidl.MethodType
     _kWithAndWithoutRequestResponse_WithRequestWithResponse_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   name: r"WithAndWithoutRequestResponse.WithRequestWithResponse",
@@ -416,7 +431,7 @@
 // onEmptyResponse:  -> ()
 const int _kWithAndWithoutRequestResponse_OnEmptyResponse_Ordinal = 1769985842;
 const $fidl.MethodType _kWithAndWithoutRequestResponse_OnEmptyResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
   response: null,
   name: r"WithAndWithoutRequestResponse.OnEmptyResponse",
@@ -424,11 +439,11 @@
 // onWithResponse:  -> (String ret)
 const int _kWithAndWithoutRequestResponse_OnWithResponse_Ordinal = 2051478023;
 const $fidl.MethodType _kWithAndWithoutRequestResponse_OnWithResponse_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 16),
   ],
   name: r"WithAndWithoutRequestResponse.OnWithResponse",
@@ -441,14 +456,14 @@
     extends $fidl.Proxy<WithAndWithoutRequestResponse>
     implements WithAndWithoutRequestResponse {
   WithAndWithoutRequestResponseProxy()
-      : super(new $fidl.ProxyController<WithAndWithoutRequestResponse>(
+      : super($fidl.ProxyController<WithAndWithoutRequestResponse>(
             $serviceName: null,
             $interfaceName: r'WithAndWithoutRequestResponse')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithAndWithoutRequestResponse_OnEmptyResponse_Ordinal:
         final String _name =
@@ -516,7 +531,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Ordinal:
         final String _name =
@@ -612,7 +627,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_NoRequestNoResponse_Ordinal, 0);
     ctrl.sendMessage($encoder.message);
@@ -625,7 +640,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Ordinal, 0);
     Function $zonedCallback;
@@ -645,7 +660,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_NoRequestWithResponse_Ordinal, 0);
     Function $zonedCallback;
@@ -671,7 +686,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_WithRequestNoResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -688,7 +703,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -712,7 +727,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_WithRequestWithResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -742,14 +757,14 @@
 class WithAndWithoutRequestResponseEvents {
   $fidl.Binding<WithAndWithoutRequestResponse> _binding;
   void onEmptyResponse() {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_OnEmptyResponse_Ordinal, 0);
     _binding.sendMessage($encoder.message);
   }
 
   void onWithResponse(String ret) {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(
         _kWithAndWithoutRequestResponse_OnWithResponse_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -767,12 +782,12 @@
   }
 
   final WithAndWithoutRequestResponseEvents events =
-      new WithAndWithoutRequestResponseEvents();
+      WithAndWithoutRequestResponseEvents();
 
   Function _noRequestEmptyResponseResponder(
       $fidl.MessageSink $respond, int $txid) {
     return () {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kWithAndWithoutRequestResponse_NoRequestEmptyResponse_Ordinal,
           $txid);
@@ -783,7 +798,7 @@
   Function _noRequestWithResponseResponder(
       $fidl.MessageSink $respond, int $txid) {
     return (String ret) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kWithAndWithoutRequestResponse_NoRequestWithResponse_Ordinal, $txid);
       $encoder.alloc(32 - $fidl.kMessageHeaderSize);
@@ -797,7 +812,7 @@
   Function _withRequestEmptyResponseResponder(
       $fidl.MessageSink $respond, int $txid) {
     return () {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kWithAndWithoutRequestResponse_WithRequestEmptyResponse_Ordinal,
           $txid);
@@ -808,7 +823,7 @@
   Function _withRequestWithResponseResponder(
       $fidl.MessageSink $respond, int $txid) {
     return (String ret) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kWithAndWithoutRequestResponse_WithRequestWithResponse_Ordinal,
           $txid);
@@ -822,7 +837,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithAndWithoutRequestResponse_NoRequestNoResponse_Ordinal:
         final String _name =
@@ -950,8 +965,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for WithAndWithoutRequestResponseBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for WithAndWithoutRequestResponseBinding');
     }
   }
 }
@@ -966,21 +981,20 @@
 // errorAsPrimitive: () -> (WithErrorSyntaxErrorAsPrimitiveResult result)
 const int _kWithErrorSyntax_ErrorAsPrimitive_Ordinal = 2069369145;
 const $fidl.MethodType _kWithErrorSyntax_ErrorAsPrimitive_Type =
-    const $fidl.MethodType(
+    $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResult>(
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsPrimitiveResult>(
         type: kWithErrorSyntax_ErrorAsPrimitive_Result_Type, offset: 16),
   ],
   name: r"WithErrorSyntax.ErrorAsPrimitive",
 );
 // errorAsEnum: () -> (WithErrorSyntaxErrorAsEnumResult result)
 const int _kWithErrorSyntax_ErrorAsEnum_Ordinal = 1284890143;
-const $fidl.MethodType _kWithErrorSyntax_ErrorAsEnum_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kWithErrorSyntax_ErrorAsEnum_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<WithErrorSyntaxErrorAsEnumResult>(
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<WithErrorSyntaxErrorAsEnumResult>(
         type: kWithErrorSyntax_ErrorAsEnum_Result_Type, offset: 16),
   ],
   name: r"WithErrorSyntax.ErrorAsEnum",
@@ -989,13 +1003,13 @@
 class WithErrorSyntaxProxy extends $fidl.Proxy<WithErrorSyntax>
     implements WithErrorSyntax {
   WithErrorSyntaxProxy()
-      : super(new $fidl.ProxyController<WithErrorSyntax>(
+      : super($fidl.ProxyController<WithErrorSyntax>(
             $serviceName: null, $interfaceName: r'WithErrorSyntax')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       default:
         ctrl.proxyError('Unexpected message ordinal: ${$message.ordinal}');
@@ -1015,7 +1029,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithErrorSyntax_ErrorAsPrimitive_Ordinal:
         final String _name = _kWithErrorSyntax_ErrorAsPrimitive_Type.name;
@@ -1070,7 +1084,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kWithErrorSyntax_ErrorAsPrimitive_Ordinal, 0);
     Function $zonedCallback;
     if ((callback == null) || identical(Zone.current, Zone.root)) {
@@ -1095,7 +1109,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kWithErrorSyntax_ErrorAsEnum_Ordinal, 0);
     Function $zonedCallback;
     if ((callback == null) || identical(Zone.current, Zone.root)) {
@@ -1117,7 +1131,7 @@
 class WithErrorSyntaxBinding extends $fidl.Binding<WithErrorSyntax> {
   Function _errorAsPrimitiveResponder($fidl.MessageSink $respond, int $txid) {
     return (WithErrorSyntaxErrorAsPrimitiveResult result) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kWithErrorSyntax_ErrorAsPrimitive_Ordinal, $txid);
       $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1130,7 +1144,7 @@
 
   Function _errorAsEnumResponder($fidl.MessageSink $respond, int $txid) {
     return (WithErrorSyntaxErrorAsEnumResult result) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kWithErrorSyntax_ErrorAsEnum_Ordinal, $txid);
       $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1143,7 +1157,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kWithErrorSyntax_ErrorAsPrimitive_Ordinal:
         final String _name = _kWithErrorSyntax_ErrorAsPrimitive_Type.name;
@@ -1184,8 +1198,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for WithErrorSyntaxBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for WithErrorSyntaxBinding');
     }
   }
 }
@@ -1199,35 +1213,34 @@
 // methodA: (int a, int b)
 const int _kOvernetInternalProtocol_MethodA_Ordinal = 1993818253;
 const $fidl.MethodType _kOvernetInternalProtocol_MethodA_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"OvernetInternalProtocol.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kOvernetInternalProtocol_EventA_Ordinal = 1746007436;
-const $fidl.MethodType _kOvernetInternalProtocol_EventA_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kOvernetInternalProtocol_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"OvernetInternalProtocol.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kOvernetInternalProtocol_MethodB_Ordinal = 952134976;
 const $fidl.MethodType _kOvernetInternalProtocol_MethodB_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+    $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"OvernetInternalProtocol.MethodB",
 );
@@ -1237,13 +1250,13 @@
 class OvernetInternalProtocolProxy extends $fidl.Proxy<OvernetInternalProtocol>
     implements OvernetInternalProtocol {
   OvernetInternalProtocolProxy()
-      : super(new $fidl.ProxyController<OvernetInternalProtocol>(
+      : super($fidl.ProxyController<OvernetInternalProtocol>(
             $serviceName: null, $interfaceName: r'OvernetInternalProtocol')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kOvernetInternalProtocol_EventA_Ordinal:
         final String _name = _kOvernetInternalProtocol_EventA_Type.name;
@@ -1288,7 +1301,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kOvernetInternalProtocol_MethodB_Ordinal:
         final String _name = _kOvernetInternalProtocol_MethodB_Type.name;
@@ -1323,7 +1336,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kOvernetInternalProtocol_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1341,7 +1354,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kOvernetInternalProtocol_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1368,7 +1381,7 @@
 class OvernetInternalProtocolEvents {
   $fidl.Binding<OvernetInternalProtocol> _binding;
   void eventA(int a, int b) {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kOvernetInternalProtocol_EventA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1385,12 +1398,11 @@
     events._binding = this;
   }
 
-  final OvernetInternalProtocolEvents events =
-      new OvernetInternalProtocolEvents();
+  final OvernetInternalProtocolEvents events = OvernetInternalProtocolEvents();
 
   Function _methodBResponder($fidl.MessageSink $respond, int $txid) {
     return (int result) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kOvernetInternalProtocol_MethodB_Ordinal, $txid);
       $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1403,7 +1415,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kOvernetInternalProtocol_MethodA_Ordinal:
         final String _name = _kOvernetInternalProtocol_MethodA_Type.name;
@@ -1447,8 +1459,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for OvernetInternalProtocolBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for OvernetInternalProtocolBinding');
     }
   }
 }
@@ -1461,36 +1473,33 @@
 
 // methodA: (int a, int b)
 const int _kSocketControlProtocol_MethodA_Ordinal = 1007842318;
-const $fidl.MethodType _kSocketControlProtocol_MethodA_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kSocketControlProtocol_MethodA_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"SocketControlProtocol.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kSocketControlProtocol_EventA_Ordinal = 955483393;
-const $fidl.MethodType _kSocketControlProtocol_EventA_Type =
-    const $fidl.MethodType(
+const $fidl.MethodType _kSocketControlProtocol_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"SocketControlProtocol.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kSocketControlProtocol_MethodB_Ordinal = 677342235;
-const $fidl.MethodType _kSocketControlProtocol_MethodB_Type =
-    const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kSocketControlProtocol_MethodB_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"SocketControlProtocol.MethodB",
 );
@@ -1500,13 +1509,13 @@
 class SocketControlProtocolProxy extends $fidl.Proxy<SocketControlProtocol>
     implements SocketControlProtocol {
   SocketControlProtocolProxy()
-      : super(new $fidl.ProxyController<SocketControlProtocol>(
+      : super($fidl.ProxyController<SocketControlProtocol>(
             $serviceName: null, $interfaceName: r'SocketControlProtocol')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSocketControlProtocol_EventA_Ordinal:
         final String _name = _kSocketControlProtocol_EventA_Type.name;
@@ -1551,7 +1560,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSocketControlProtocol_MethodB_Ordinal:
         final String _name = _kSocketControlProtocol_MethodB_Type.name;
@@ -1586,7 +1595,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSocketControlProtocol_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1604,7 +1613,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSocketControlProtocol_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1631,7 +1640,7 @@
 class SocketControlProtocolEvents {
   $fidl.Binding<SocketControlProtocol> _binding;
   void eventA(int a, int b) {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kSocketControlProtocol_EventA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1648,11 +1657,11 @@
     events._binding = this;
   }
 
-  final SocketControlProtocolEvents events = new SocketControlProtocolEvents();
+  final SocketControlProtocolEvents events = SocketControlProtocolEvents();
 
   Function _methodBResponder($fidl.MessageSink $respond, int $txid) {
     return (int result) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(
           _kSocketControlProtocol_MethodB_Ordinal, $txid);
       $encoder.alloc(24 - $fidl.kMessageHeaderSize);
@@ -1665,7 +1674,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kSocketControlProtocol_MethodA_Ordinal:
         final String _name = _kSocketControlProtocol_MethodA_Type.name;
@@ -1709,8 +1718,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for SocketControlProtocolBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for SocketControlProtocolBinding');
     }
   }
 }
@@ -1723,33 +1732,33 @@
 
 // methodA: (int a, int b)
 const int _kChannelProtocol_MethodA_Ordinal = 1432785874;
-const $fidl.MethodType _kChannelProtocol_MethodA_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kChannelProtocol_MethodA_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"ChannelProtocol.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kChannelProtocol_EventA_Ordinal = 477676034;
-const $fidl.MethodType _kChannelProtocol_EventA_Type = const $fidl.MethodType(
+const $fidl.MethodType _kChannelProtocol_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"ChannelProtocol.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kChannelProtocol_MethodB_Ordinal = 180770075;
-const $fidl.MethodType _kChannelProtocol_MethodB_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kChannelProtocol_MethodB_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"ChannelProtocol.MethodB",
 );
@@ -1759,13 +1768,13 @@
 class ChannelProtocolProxy extends $fidl.Proxy<ChannelProtocol>
     implements ChannelProtocol {
   ChannelProtocolProxy()
-      : super(new $fidl.ProxyController<ChannelProtocol>(
+      : super($fidl.ProxyController<ChannelProtocol>(
             $serviceName: null, $interfaceName: r'ChannelProtocol')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kChannelProtocol_EventA_Ordinal:
         final String _name = _kChannelProtocol_EventA_Type.name;
@@ -1810,7 +1819,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kChannelProtocol_MethodB_Ordinal:
         final String _name = _kChannelProtocol_MethodB_Type.name;
@@ -1845,7 +1854,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kChannelProtocol_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1863,7 +1872,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kChannelProtocol_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1890,7 +1899,7 @@
 class ChannelProtocolEvents {
   $fidl.Binding<ChannelProtocol> _binding;
   void eventA(int a, int b) {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kChannelProtocol_EventA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types =
@@ -1906,11 +1915,11 @@
     events._binding = this;
   }
 
-  final ChannelProtocolEvents events = new ChannelProtocolEvents();
+  final ChannelProtocolEvents events = ChannelProtocolEvents();
 
   Function _methodBResponder($fidl.MessageSink $respond, int $txid) {
     return (int result) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(_kChannelProtocol_MethodB_Ordinal, $txid);
       $encoder.alloc(24 - $fidl.kMessageHeaderSize);
       final List<$fidl.MemberType> $types =
@@ -1922,7 +1931,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kChannelProtocol_MethodA_Ordinal:
         final String _name = _kChannelProtocol_MethodA_Type.name;
@@ -1966,8 +1975,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for ChannelProtocolBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for ChannelProtocolBinding');
     }
   }
 }
@@ -1980,33 +1989,33 @@
 
 // methodA: (int a, int b)
 const int _kKitchenSink_MethodA_Ordinal = 450577456;
-const $fidl.MethodType _kKitchenSink_MethodA_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kKitchenSink_MethodA_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   response: null,
   name: r"KitchenSink.MethodA",
 );
 // eventA:  -> (int a, int b)
 const int _kKitchenSink_EventA_Ordinal = 1795426833;
-const $fidl.MethodType _kKitchenSink_EventA_Type = const $fidl.MethodType(
+const $fidl.MethodType _kKitchenSink_EventA_Type = $fidl.MethodType(
   request: null,
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
   name: r"KitchenSink.EventA",
 );
 // methodB: (int a, int b) -> (int result)
 const int _kKitchenSink_MethodB_Ordinal = 1999489700;
-const $fidl.MethodType _kKitchenSink_MethodB_Type = const $fidl.MethodType(
-  request: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 24),
+const $fidl.MethodType _kKitchenSink_MethodB_Type = $fidl.MethodType(
+  request: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 24),
   ],
-  response: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int64Type(), offset: 16),
+  response: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int64Type(), offset: 16),
   ],
   name: r"KitchenSink.MethodB",
 );
@@ -2015,13 +2024,13 @@
 
 class KitchenSinkProxy extends $fidl.Proxy<KitchenSink> implements KitchenSink {
   KitchenSinkProxy()
-      : super(new $fidl.ProxyController<KitchenSink>(
+      : super($fidl.ProxyController<KitchenSink>(
             $serviceName: null, $interfaceName: r'KitchenSink')) {
     ctrl.onResponse = _handleResponse;
   }
 
   void _handleEvent($fidl.Message $message) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kKitchenSink_EventA_Ordinal:
         final String _name = _kKitchenSink_EventA_Type.name;
@@ -2066,7 +2075,7 @@
       $message.closeHandles();
       return;
     }
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kKitchenSink_MethodB_Ordinal:
         final String _name = _kKitchenSink_MethodB_Type.name;
@@ -2101,7 +2110,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kKitchenSink_MethodA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types = _kKitchenSink_MethodA_Type.request;
@@ -2118,7 +2127,7 @@
       return;
     }
 
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kKitchenSink_MethodB_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types = _kKitchenSink_MethodB_Type.request;
@@ -2144,7 +2153,7 @@
 class KitchenSinkEvents {
   $fidl.Binding<KitchenSink> _binding;
   void eventA(int a, int b) {
-    final $fidl.Encoder $encoder = new $fidl.Encoder();
+    final $fidl.Encoder $encoder = $fidl.Encoder();
     $encoder.encodeMessageHeader(_kKitchenSink_EventA_Ordinal, 0);
     $encoder.alloc(32 - $fidl.kMessageHeaderSize);
     final List<$fidl.MemberType> $types = _kKitchenSink_EventA_Type.response;
@@ -2159,11 +2168,11 @@
     events._binding = this;
   }
 
-  final KitchenSinkEvents events = new KitchenSinkEvents();
+  final KitchenSinkEvents events = KitchenSinkEvents();
 
   Function _methodBResponder($fidl.MessageSink $respond, int $txid) {
     return (int result) {
-      final $fidl.Encoder $encoder = new $fidl.Encoder();
+      final $fidl.Encoder $encoder = $fidl.Encoder();
       $encoder.encodeMessageHeader(_kKitchenSink_MethodB_Ordinal, $txid);
       $encoder.alloc(24 - $fidl.kMessageHeaderSize);
       final List<$fidl.MemberType> $types = _kKitchenSink_MethodB_Type.response;
@@ -2174,7 +2183,7 @@
 
   @override
   void handleMessage($fidl.Message $message, $fidl.MessageSink $respond) {
-    final $fidl.Decoder $decoder = new $fidl.Decoder($message);
+    final $fidl.Decoder $decoder = $fidl.Decoder($message);
     switch ($message.ordinal) {
       case _kKitchenSink_MethodA_Ordinal:
         final String _name = _kKitchenSink_MethodA_Type.name;
@@ -2218,8 +2227,8 @@
         }
         break;
       default:
-        throw new $fidl.FidlError(
-            'Unexpected message name for KitchenSinkBinding');
+        throw $fidl.FidlError(
+            r'Unexpected message name for KitchenSinkBinding');
     }
   }
 }
diff --git a/bin/fidlgen_dart/goldens/protocols.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/protocols.test.fidl.json_test.dart.golden
index 38b5f4e..c223b4b 100644
--- a/bin/fidlgen_dart/goldens/protocols.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/protocols.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
@@ -27,122 +27,122 @@
 class WithAndWithoutRequestResponse$TestBase
     extends WithAndWithoutRequestResponse {
   @override
-  Future<void> noRequestNoResponse() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> noRequestNoResponse() {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<void> noRequestEmptyResponse() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> noRequestEmptyResponse() {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<String> noRequestWithResponse() {
-    return Future.error(UnimplementedError());
+  $async.Future<String> noRequestWithResponse() {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<void> withRequestNoResponse(String arg) {
-    return Future.error(UnimplementedError());
+  $async.Future<void> withRequestNoResponse(String arg) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<void> withRequestEmptyResponse(String arg) {
-    return Future.error(UnimplementedError());
+  $async.Future<void> withRequestEmptyResponse(String arg) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<String> withRequestWithResponse(String arg) {
-    return Future.error(UnimplementedError());
+  $async.Future<String> withRequestWithResponse(String arg) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Stream<void> get onEmptyResponse {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<void> get onEmptyResponse {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 
   @override
-  Stream<String> get onWithResponse {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<String> get onWithResponse {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 }
 
 class WithErrorSyntax$TestBase extends WithErrorSyntax {
   @override
-  Future<WithErrorSyntaxErrorAsPrimitiveResult> errorAsPrimitive() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> errorAsPrimitive() {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Future<WithErrorSyntaxErrorAsEnumResult> errorAsEnum() {
-    return Future.error(UnimplementedError());
+  $async.Future<void> errorAsEnum() {
+    return $async.Future.error(UnimplementedError());
   }
 }
 
 class OvernetInternalProtocol$TestBase extends OvernetInternalProtocol {
   @override
-  Future<void> methodA(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<void> methodA(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Stream<OvernetInternalProtocol$EventA$Response> get eventA {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<OvernetInternalProtocol$EventA$Response> get eventA {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 
   @override
-  Future<int> methodB(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<int> methodB(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 }
 
 class SocketControlProtocol$TestBase extends SocketControlProtocol {
   @override
-  Future<void> methodA(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<void> methodA(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Stream<SocketControlProtocol$EventA$Response> get eventA {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<SocketControlProtocol$EventA$Response> get eventA {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 
   @override
-  Future<int> methodB(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<int> methodB(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 }
 
 class ChannelProtocol$TestBase extends ChannelProtocol {
   @override
-  Future<void> methodA(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<void> methodA(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Stream<ChannelProtocol$EventA$Response> get eventA {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<ChannelProtocol$EventA$Response> get eventA {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 
   @override
-  Future<int> methodB(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<int> methodB(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 }
 
 class KitchenSink$TestBase extends KitchenSink {
   @override
-  Future<void> methodA(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<void> methodA(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 
   @override
-  Stream<KitchenSink$EventA$Response> get eventA {
-    return Stream.fromFuture(Future.error(UnimplementedError()));
+  $async.Stream<KitchenSink$EventA$Response> get eventA {
+    return $async.Stream.fromFuture($async.Future.error(UnimplementedError()));
   }
 
   @override
-  Future<int> methodB(int a, int b) {
-    return Future.error(UnimplementedError());
+  $async.Future<int> methodB(int a, int b) {
+    return $async.Future.error(UnimplementedError());
   }
 }
diff --git a/bin/fidlgen_dart/goldens/tables.test.fidl.json b/bin/fidlgen_dart/goldens/tables.test.fidl.json
index 860b584..4a72da7 100644
--- a/bin/fidlgen_dart/goldens/tables.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/tables.test.fidl.json
@@ -13,7 +13,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
         "line": 3,
-        "column": 6
+        "column": 7
       },
       "members": [],
       "size": 16,
@@ -26,7 +26,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
         "line": 6,
-        "column": 6
+        "column": 7
       },
       "members": [
         {
@@ -40,7 +40,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
             "line": 7,
-            "column": 13
+            "column": 14
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -70,7 +70,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
             "line": 11,
-            "column": 13
+            "column": 14
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -88,7 +88,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
         "line": 14,
-        "column": 6
+        "column": 7
       },
       "members": [
         {
@@ -102,7 +102,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
             "line": 15,
-            "column": 13
+            "column": 14
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -124,7 +124,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
         "line": 19,
-        "column": 6
+        "column": 7
       },
       "members": [
         {
@@ -138,7 +138,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
             "line": 20,
-            "column": 13
+            "column": 14
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -168,7 +168,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
             "line": 24,
-            "column": 13
+            "column": 14
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -186,7 +186,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/tables.test.fidl",
             "line": 25,
-            "column": 13
+            "column": 14
           },
           "size": 8,
           "max_out_of_line": 0,
diff --git a/bin/fidlgen_dart/goldens/tables.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/tables.test.fidl.json_async.dart.golden
index f58218f..61f5546 100644
--- a/bin/fidlgen_dart/goldens/tables.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/tables.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -54,15 +55,15 @@
     return {};
   }
 
-  static EmptyTable _ctor(Map<int, dynamic> argv) => new EmptyTable._(argv);
+  static EmptyTable _ctor(Map<int, dynamic> argv) => EmptyTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<EmptyTable> kEmptyTable_Type =
-    const $fidl.TableType<EmptyTable>(
+    $fidl.TableType<EmptyTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{},
+  members: <int, $fidl.FidlType>{},
   ctor: EmptyTable._ctor,
 );
 
@@ -86,17 +87,17 @@
     };
   }
 
-  static SimpleTable _ctor(Map<int, dynamic> argv) => new SimpleTable._(argv);
+  static SimpleTable _ctor(Map<int, dynamic> argv) => SimpleTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<SimpleTable> kSimpleTable_Type =
-    const $fidl.TableType<SimpleTable>(
+    $fidl.TableType<SimpleTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int64Type(),
-    5: const $fidl.Int64Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int64Type(),
+    5: $fidl.Int64Type(),
   },
   ctor: SimpleTable._ctor,
 );
@@ -117,16 +118,16 @@
   }
 
   static OlderSimpleTable _ctor(Map<int, dynamic> argv) =>
-      new OlderSimpleTable._(argv);
+      OlderSimpleTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<OlderSimpleTable> kOlderSimpleTable_Type =
-    const $fidl.TableType<OlderSimpleTable>(
+    $fidl.TableType<OlderSimpleTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int64Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int64Type(),
   },
   ctor: OlderSimpleTable._ctor,
 );
@@ -156,18 +157,18 @@
   }
 
   static NewerSimpleTable _ctor(Map<int, dynamic> argv) =>
-      new NewerSimpleTable._(argv);
+      NewerSimpleTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<NewerSimpleTable> kNewerSimpleTable_Type =
-    const $fidl.TableType<NewerSimpleTable>(
+    $fidl.TableType<NewerSimpleTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int64Type(),
-    5: const $fidl.Int64Type(),
-    6: const $fidl.Int64Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int64Type(),
+    5: $fidl.Int64Type(),
+    6: $fidl.Int64Type(),
   },
   ctor: NewerSimpleTable._ctor,
 );
diff --git a/bin/fidlgen_dart/goldens/tables.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/tables.test.fidl.json_sync.dart.golden
index a0e75af..d669b3d 100644
--- a/bin/fidlgen_dart/goldens/tables.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/tables.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -50,15 +50,15 @@
     return {};
   }
 
-  static EmptyTable _ctor(Map<int, dynamic> argv) => new EmptyTable._(argv);
+  static EmptyTable _ctor(Map<int, dynamic> argv) => EmptyTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<EmptyTable> kEmptyTable_Type =
-    const $fidl.TableType<EmptyTable>(
+    $fidl.TableType<EmptyTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{},
+  members: <int, $fidl.FidlType>{},
   ctor: EmptyTable._ctor,
 );
 
@@ -82,17 +82,17 @@
     };
   }
 
-  static SimpleTable _ctor(Map<int, dynamic> argv) => new SimpleTable._(argv);
+  static SimpleTable _ctor(Map<int, dynamic> argv) => SimpleTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<SimpleTable> kSimpleTable_Type =
-    const $fidl.TableType<SimpleTable>(
+    $fidl.TableType<SimpleTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int64Type(),
-    5: const $fidl.Int64Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int64Type(),
+    5: $fidl.Int64Type(),
   },
   ctor: SimpleTable._ctor,
 );
@@ -113,16 +113,16 @@
   }
 
   static OlderSimpleTable _ctor(Map<int, dynamic> argv) =>
-      new OlderSimpleTable._(argv);
+      OlderSimpleTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<OlderSimpleTable> kOlderSimpleTable_Type =
-    const $fidl.TableType<OlderSimpleTable>(
+    $fidl.TableType<OlderSimpleTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int64Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int64Type(),
   },
   ctor: OlderSimpleTable._ctor,
 );
@@ -152,18 +152,18 @@
   }
 
   static NewerSimpleTable _ctor(Map<int, dynamic> argv) =>
-      new NewerSimpleTable._(argv);
+      NewerSimpleTable._(argv);
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.TableType<NewerSimpleTable> kNewerSimpleTable_Type =
-    const $fidl.TableType<NewerSimpleTable>(
+    $fidl.TableType<NewerSimpleTable>(
   encodedSize: 16,
-  members: const <int, $fidl.FidlType>{
-    1: const $fidl.Int64Type(),
-    5: const $fidl.Int64Type(),
-    6: const $fidl.Int64Type(),
+  members: <int, $fidl.FidlType>{
+    1: $fidl.Int64Type(),
+    5: $fidl.Int64Type(),
+    6: $fidl.Int64Type(),
   },
   ctor: NewerSimpleTable._ctor,
 );
diff --git a/bin/fidlgen_dart/goldens/tables.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/tables.test.fidl.json_test.dart.golden
index 3b23a46..96548bb 100644
--- a/bin/fidlgen_dart/goldens/tables.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/tables.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
diff --git a/bin/fidlgen_dart/goldens/union.test.fidl.json b/bin/fidlgen_dart/goldens/union.test.fidl.json
index 2de29fb..c2fb8a9 100644
--- a/bin/fidlgen_dart/goldens/union.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/union.test.fidl.json
@@ -14,7 +14,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/union.test.fidl",
         "line": 3,
-        "column": 6
+        "column": 7
       },
       "members": [
         {
@@ -26,7 +26,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/union.test.fidl",
             "line": 4,
-            "column": 10
+            "column": 11
           },
           "size": 4,
           "max_out_of_line": 0,
@@ -42,7 +42,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/union.test.fidl",
             "line": 5,
-            "column": 11
+            "column": 12
           },
           "size": 16,
           "max_out_of_line": 4294967295,
@@ -62,7 +62,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/union.test.fidl",
             "line": 6,
-            "column": 19
+            "column": 20
           },
           "size": 16,
           "max_out_of_line": 4294967295,
diff --git a/bin/fidlgen_dart/goldens/union.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/union.test.fidl.json_async.dart.golden
index 7d87961..47a5a96 100644
--- a/bin/fidlgen_dart/goldens/union.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/union.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -53,36 +54,38 @@
 class Union extends $fidl.Union {
   const Union.withPrimitive(int value)
       : _data = value,
-        tag = UnionTag.primitive;
+        _tag = UnionTag.primitive;
 
   const Union.withStringNeedsConstructor(String value)
       : _data = value,
-        tag = UnionTag.stringNeedsConstructor;
+        _tag = UnionTag.stringNeedsConstructor;
 
   const Union.withVectorStringAlsoNeedsConstructor(List<String> value)
       : _data = value,
-        tag = UnionTag.vectorStringAlsoNeedsConstructor;
+        _tag = UnionTag.vectorStringAlsoNeedsConstructor;
 
-  Union._(this.tag, Object data) : _data = data;
+  Union._(UnionTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final UnionTag tag;
+  final UnionTag _tag;
   final _data;
   int get primitive {
-    if (tag != UnionTag.primitive) {
+    if (_tag != UnionTag.primitive) {
       return null;
     }
     return _data;
   }
 
   String get stringNeedsConstructor {
-    if (tag != UnionTag.stringNeedsConstructor) {
+    if (_tag != UnionTag.stringNeedsConstructor) {
       return null;
     }
     return _data;
   }
 
   List<String> get vectorStringAlsoNeedsConstructor {
-    if (tag != UnionTag.vectorStringAlsoNeedsConstructor) {
+    if (_tag != UnionTag.vectorStringAlsoNeedsConstructor) {
       return null;
     }
     return _data;
@@ -90,42 +93,45 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case UnionTag.primitive:
-        return 'Union.primitive($primitive)';
+        return r'Union.primitive($primitive)';
       case UnionTag.stringNeedsConstructor:
-        return 'Union.stringNeedsConstructor($stringNeedsConstructor)';
+        return r'Union.stringNeedsConstructor($stringNeedsConstructor)';
       case UnionTag.vectorStringAlsoNeedsConstructor:
-        return 'Union.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
+        return r'Union.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
       default:
         return null;
     }
   }
 
+  UnionTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  UnionTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static Union _ctor(int index, Object data) {
-    return new Union._(UnionTag.values[index], data);
+    return Union._(UnionTag.values[index], data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.UnionType<Union> kUnion_Type = const $fidl.UnionType<Union>(
+const $fidl.UnionType<Union> kUnion_Type = $fidl.UnionType<Union>(
   encodedSize: 24,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int32Type(), offset: 8),
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int32Type(), offset: 8),
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 8),
-    const $fidl.MemberType<List<String>>(
-        type: const $fidl.VectorType<List<String>>(
-            element: const $fidl.StringType(
-                maybeElementCount: null, nullable: false),
+    $fidl.MemberType<List<String>>(
+        type: $fidl.VectorType<List<String>>(
+            element: $fidl.StringType(maybeElementCount: null, nullable: false),
             maybeElementCount: null,
             nullable: false),
         offset: 8),
diff --git a/bin/fidlgen_dart/goldens/union.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/union.test.fidl.json_sync.dart.golden
index 739e16c..90f360a 100644
--- a/bin/fidlgen_dart/goldens/union.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/union.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -49,36 +49,38 @@
 class Union extends $fidl.Union {
   const Union.withPrimitive(int value)
       : _data = value,
-        tag = UnionTag.primitive;
+        _tag = UnionTag.primitive;
 
   const Union.withStringNeedsConstructor(String value)
       : _data = value,
-        tag = UnionTag.stringNeedsConstructor;
+        _tag = UnionTag.stringNeedsConstructor;
 
   const Union.withVectorStringAlsoNeedsConstructor(List<String> value)
       : _data = value,
-        tag = UnionTag.vectorStringAlsoNeedsConstructor;
+        _tag = UnionTag.vectorStringAlsoNeedsConstructor;
 
-  Union._(this.tag, Object data) : _data = data;
+  Union._(UnionTag tag, Object data)
+      : _tag = tag,
+        _data = data;
 
-  final UnionTag tag;
+  final UnionTag _tag;
   final _data;
   int get primitive {
-    if (tag != UnionTag.primitive) {
+    if (_tag != UnionTag.primitive) {
       return null;
     }
     return _data;
   }
 
   String get stringNeedsConstructor {
-    if (tag != UnionTag.stringNeedsConstructor) {
+    if (_tag != UnionTag.stringNeedsConstructor) {
       return null;
     }
     return _data;
   }
 
   List<String> get vectorStringAlsoNeedsConstructor {
-    if (tag != UnionTag.vectorStringAlsoNeedsConstructor) {
+    if (_tag != UnionTag.vectorStringAlsoNeedsConstructor) {
       return null;
     }
     return _data;
@@ -86,42 +88,45 @@
 
   @override
   String toString() {
-    switch (tag) {
+    switch (_tag) {
       case UnionTag.primitive:
-        return 'Union.primitive($primitive)';
+        return r'Union.primitive($primitive)';
       case UnionTag.stringNeedsConstructor:
-        return 'Union.stringNeedsConstructor($stringNeedsConstructor)';
+        return r'Union.stringNeedsConstructor($stringNeedsConstructor)';
       case UnionTag.vectorStringAlsoNeedsConstructor:
-        return 'Union.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
+        return r'Union.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
       default:
         return null;
     }
   }
 
+  UnionTag get $tag => _tag;
+  // TODO: remove, see: FIDL-587
+  UnionTag get tag => _tag;
+
   @override
-  int get $index => tag.index;
+  int get $index => _tag.index;
 
   @override
   Object get $data => _data;
 
   static Union _ctor(int index, Object data) {
-    return new Union._(UnionTag.values[index], data);
+    return Union._(UnionTag.values[index], data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
-const $fidl.UnionType<Union> kUnion_Type = const $fidl.UnionType<Union>(
+const $fidl.UnionType<Union> kUnion_Type = $fidl.UnionType<Union>(
   encodedSize: 24,
-  members: const <$fidl.MemberType>[
-    const $fidl.MemberType<int>(type: const $fidl.Int32Type(), offset: 8),
-    const $fidl.MemberType<String>(
-        type: const $fidl.StringType(maybeElementCount: null, nullable: false),
+  members: <$fidl.MemberType>[
+    $fidl.MemberType<int>(type: $fidl.Int32Type(), offset: 8),
+    $fidl.MemberType<String>(
+        type: $fidl.StringType(maybeElementCount: null, nullable: false),
         offset: 8),
-    const $fidl.MemberType<List<String>>(
-        type: const $fidl.VectorType<List<String>>(
-            element: const $fidl.StringType(
-                maybeElementCount: null, nullable: false),
+    $fidl.MemberType<List<String>>(
+        type: $fidl.VectorType<List<String>>(
+            element: $fidl.StringType(maybeElementCount: null, nullable: false),
             maybeElementCount: null,
             nullable: false),
         offset: 8),
diff --git a/bin/fidlgen_dart/goldens/union.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/union.test.fidl.json_test.dart.golden
index 3b23a46..96548bb 100644
--- a/bin/fidlgen_dart/goldens/union.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/union.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
diff --git a/bin/fidlgen_dart/goldens/xunion.test.fidl.json b/bin/fidlgen_dart/goldens/xunion.test.fidl.json
index d852f18..0d7350d 100644
--- a/bin/fidlgen_dart/goldens/xunion.test.fidl.json
+++ b/bin/fidlgen_dart/goldens/xunion.test.fidl.json
@@ -15,7 +15,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
         "line": 3,
-        "column": 7
+        "column": 8
       },
       "members": [
         {
@@ -28,7 +28,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
             "line": 4,
-            "column": 8
+            "column": 9
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -45,7 +45,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
             "line": 5,
-            "column": 10
+            "column": 11
           },
           "size": 4,
           "max_out_of_line": 0,
@@ -63,7 +63,7 @@
       "location": {
         "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
         "line": 8,
-        "column": 7
+        "column": 8
       },
       "members": [
         {
@@ -76,7 +76,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
             "line": 11,
-            "column": 8
+            "column": 9
           },
           "size": 8,
           "max_out_of_line": 0,
@@ -93,7 +93,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
             "line": 13,
-            "column": 9
+            "column": 10
           },
           "size": 16,
           "max_out_of_line": 4294967295,
@@ -114,7 +114,7 @@
           "location": {
             "filename": "garnet/go/src/fidl/compiler/backend/typestest/xunion.test.fidl",
             "line": 14,
-            "column": 17
+            "column": 18
           },
           "size": 16,
           "max_out_of_line": 4294967295,
diff --git a/bin/fidlgen_dart/goldens/xunion.test.fidl.json_async.dart.golden b/bin/fidlgen_dart/goldens/xunion.test.fidl.json_async.dart.golden
index d87c171..aa72fbd 100644
--- a/bin/fidlgen_dart/goldens/xunion.test.fidl.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/xunion.test.fidl.json_async.dart.golden
@@ -6,13 +6,14 @@
 
 library fidl_test_name_async;
 
-import 'dart:async';
+import 'dart:async' as $async;
+import 'dart:core' hide Set;
 import 'dart:developer';
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -49,7 +50,7 @@
   f, // 0x5136cf7e
 }
 
-const Map<int, OlderSimpleUnionTag> _OlderSimpleUnionTag_map = const {
+const Map<int, OlderSimpleUnionTag> _OlderSimpleUnionTag_map = {
   1026732503: OlderSimpleUnionTag.i,
   1362546558: OlderSimpleUnionTag.f,
 };
@@ -70,7 +71,7 @@
   final int _ordinal;
   final _data;
 
-  OlderSimpleUnionTag get tag => _OlderSimpleUnionTag_map[_ordinal];
+  OlderSimpleUnionTag get $tag => _OlderSimpleUnionTag_map[_ordinal];
 
   int get i {
     if (_ordinal != 1026732503) {
@@ -105,27 +106,27 @@
   Object get $data => _data;
 
   static OlderSimpleUnion _ctor(int ordinal, Object data) {
-    return new OlderSimpleUnion._(ordinal, data);
+    return OlderSimpleUnion._(ordinal, data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.XUnionType<OlderSimpleUnion> kOlderSimpleUnion_Type =
-    const $fidl.XUnionType<OlderSimpleUnion>(
+    $fidl.XUnionType<OlderSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    1026732503: const $fidl.Int64Type(),
-    1362546558: const $fidl.Float32Type(),
+  members: <int, $fidl.FidlType>{
+    1026732503: $fidl.Int64Type(),
+    1362546558: $fidl.Float32Type(),
   },
   ctor: OlderSimpleUnion._ctor,
 );
 const $fidl.XUnionType<OlderSimpleUnion> kOlderSimpleUnion_OptType =
-    const $fidl.XUnionType<OlderSimpleUnion>(
+    $fidl.XUnionType<OlderSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    1026732503: const $fidl.Int64Type(),
-    1362546558: const $fidl.Float32Type(),
+  members: <int, $fidl.FidlType>{
+    1026732503: $fidl.Int64Type(),
+    1362546558: $fidl.Float32Type(),
   },
   ctor: OlderSimpleUnion._ctor,
   nullable: true,
@@ -137,7 +138,7 @@
   v, // 0x6c38b28f
 }
 
-const Map<int, NewerSimpleUnionTag> _NewerSimpleUnionTag_map = const {
+const Map<int, NewerSimpleUnionTag> _NewerSimpleUnionTag_map = {
   693944286: NewerSimpleUnionTag.i,
   473666119: NewerSimpleUnionTag.s,
   1815655055: NewerSimpleUnionTag.v,
@@ -163,7 +164,7 @@
   final int _ordinal;
   final _data;
 
-  NewerSimpleUnionTag get tag => _NewerSimpleUnionTag_map[_ordinal];
+  NewerSimpleUnionTag get $tag => _NewerSimpleUnionTag_map[_ordinal];
 
   int get i {
     if (_ordinal != 693944286) {
@@ -207,35 +208,33 @@
   Object get $data => _data;
 
   static NewerSimpleUnion _ctor(int ordinal, Object data) {
-    return new NewerSimpleUnion._(ordinal, data);
+    return NewerSimpleUnion._(ordinal, data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.XUnionType<NewerSimpleUnion> kNewerSimpleUnion_Type =
-    const $fidl.XUnionType<NewerSimpleUnion>(
+    $fidl.XUnionType<NewerSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    693944286: const $fidl.Int64Type(),
-    473666119: const $fidl.StringType(maybeElementCount: null, nullable: false),
-    1815655055: const $fidl.VectorType<List<String>>(
-        element:
-            const $fidl.StringType(maybeElementCount: null, nullable: false),
+  members: <int, $fidl.FidlType>{
+    693944286: $fidl.Int64Type(),
+    473666119: $fidl.StringType(maybeElementCount: null, nullable: false),
+    1815655055: $fidl.VectorType<List<String>>(
+        element: $fidl.StringType(maybeElementCount: null, nullable: false),
         maybeElementCount: null,
         nullable: false),
   },
   ctor: NewerSimpleUnion._ctor,
 );
 const $fidl.XUnionType<NewerSimpleUnion> kNewerSimpleUnion_OptType =
-    const $fidl.XUnionType<NewerSimpleUnion>(
+    $fidl.XUnionType<NewerSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    693944286: const $fidl.Int64Type(),
-    473666119: const $fidl.StringType(maybeElementCount: null, nullable: false),
-    1815655055: const $fidl.VectorType<List<String>>(
-        element:
-            const $fidl.StringType(maybeElementCount: null, nullable: false),
+  members: <int, $fidl.FidlType>{
+    693944286: $fidl.Int64Type(),
+    473666119: $fidl.StringType(maybeElementCount: null, nullable: false),
+    1815655055: $fidl.VectorType<List<String>>(
+        element: $fidl.StringType(maybeElementCount: null, nullable: false),
         maybeElementCount: null,
         nullable: false),
   },
diff --git a/bin/fidlgen_dart/goldens/xunion.test.fidl.json_sync.dart.golden b/bin/fidlgen_dart/goldens/xunion.test.fidl.json_sync.dart.golden
index 5db86bd..4df55cf 100644
--- a/bin/fidlgen_dart/goldens/xunion.test.fidl.json_sync.dart.golden
+++ b/bin/fidlgen_dart/goldens/xunion.test.fidl.json_sync.dart.golden
@@ -12,7 +12,7 @@
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 // These imports improve deduplication by making uses of {fidl.dart},
 // {fidl_async.dart} and {fidl.dart, fidl_async.dart} generate equivalent
@@ -45,7 +45,7 @@
   f, // 0x5136cf7e
 }
 
-const Map<int, OlderSimpleUnionTag> _OlderSimpleUnionTag_map = const {
+const Map<int, OlderSimpleUnionTag> _OlderSimpleUnionTag_map = {
   1026732503: OlderSimpleUnionTag.i,
   1362546558: OlderSimpleUnionTag.f,
 };
@@ -66,7 +66,7 @@
   final int _ordinal;
   final _data;
 
-  OlderSimpleUnionTag get tag => _OlderSimpleUnionTag_map[_ordinal];
+  OlderSimpleUnionTag get $tag => _OlderSimpleUnionTag_map[_ordinal];
 
   int get i {
     if (_ordinal != 1026732503) {
@@ -101,27 +101,27 @@
   Object get $data => _data;
 
   static OlderSimpleUnion _ctor(int ordinal, Object data) {
-    return new OlderSimpleUnion._(ordinal, data);
+    return OlderSimpleUnion._(ordinal, data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.XUnionType<OlderSimpleUnion> kOlderSimpleUnion_Type =
-    const $fidl.XUnionType<OlderSimpleUnion>(
+    $fidl.XUnionType<OlderSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    1026732503: const $fidl.Int64Type(),
-    1362546558: const $fidl.Float32Type(),
+  members: <int, $fidl.FidlType>{
+    1026732503: $fidl.Int64Type(),
+    1362546558: $fidl.Float32Type(),
   },
   ctor: OlderSimpleUnion._ctor,
 );
 const $fidl.XUnionType<OlderSimpleUnion> kOlderSimpleUnion_OptType =
-    const $fidl.XUnionType<OlderSimpleUnion>(
+    $fidl.XUnionType<OlderSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    1026732503: const $fidl.Int64Type(),
-    1362546558: const $fidl.Float32Type(),
+  members: <int, $fidl.FidlType>{
+    1026732503: $fidl.Int64Type(),
+    1362546558: $fidl.Float32Type(),
   },
   ctor: OlderSimpleUnion._ctor,
   nullable: true,
@@ -133,7 +133,7 @@
   v, // 0x6c38b28f
 }
 
-const Map<int, NewerSimpleUnionTag> _NewerSimpleUnionTag_map = const {
+const Map<int, NewerSimpleUnionTag> _NewerSimpleUnionTag_map = {
   693944286: NewerSimpleUnionTag.i,
   473666119: NewerSimpleUnionTag.s,
   1815655055: NewerSimpleUnionTag.v,
@@ -159,7 +159,7 @@
   final int _ordinal;
   final _data;
 
-  NewerSimpleUnionTag get tag => _NewerSimpleUnionTag_map[_ordinal];
+  NewerSimpleUnionTag get $tag => _NewerSimpleUnionTag_map[_ordinal];
 
   int get i {
     if (_ordinal != 693944286) {
@@ -203,35 +203,33 @@
   Object get $data => _data;
 
   static NewerSimpleUnion _ctor(int ordinal, Object data) {
-    return new NewerSimpleUnion._(ordinal, data);
+    return NewerSimpleUnion._(ordinal, data);
   }
 }
 
 // See FIDL-308:
 // ignore: recursive_compile_time_constant
 const $fidl.XUnionType<NewerSimpleUnion> kNewerSimpleUnion_Type =
-    const $fidl.XUnionType<NewerSimpleUnion>(
+    $fidl.XUnionType<NewerSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    693944286: const $fidl.Int64Type(),
-    473666119: const $fidl.StringType(maybeElementCount: null, nullable: false),
-    1815655055: const $fidl.VectorType<List<String>>(
-        element:
-            const $fidl.StringType(maybeElementCount: null, nullable: false),
+  members: <int, $fidl.FidlType>{
+    693944286: $fidl.Int64Type(),
+    473666119: $fidl.StringType(maybeElementCount: null, nullable: false),
+    1815655055: $fidl.VectorType<List<String>>(
+        element: $fidl.StringType(maybeElementCount: null, nullable: false),
         maybeElementCount: null,
         nullable: false),
   },
   ctor: NewerSimpleUnion._ctor,
 );
 const $fidl.XUnionType<NewerSimpleUnion> kNewerSimpleUnion_OptType =
-    const $fidl.XUnionType<NewerSimpleUnion>(
+    $fidl.XUnionType<NewerSimpleUnion>(
   encodedSize: 24,
-  members: const <int, $fidl.FidlType>{
-    693944286: const $fidl.Int64Type(),
-    473666119: const $fidl.StringType(maybeElementCount: null, nullable: false),
-    1815655055: const $fidl.VectorType<List<String>>(
-        element:
-            const $fidl.StringType(maybeElementCount: null, nullable: false),
+  members: <int, $fidl.FidlType>{
+    693944286: $fidl.Int64Type(),
+    473666119: $fidl.StringType(maybeElementCount: null, nullable: false),
+    1815655055: $fidl.VectorType<List<String>>(
+        element: $fidl.StringType(maybeElementCount: null, nullable: false),
         maybeElementCount: null,
         nullable: false),
   },
diff --git a/bin/fidlgen_dart/goldens/xunion.test.fidl.json_test.dart.golden b/bin/fidlgen_dart/goldens/xunion.test.fidl.json_test.dart.golden
index 3b23a46..96548bb 100644
--- a/bin/fidlgen_dart/goldens/xunion.test.fidl.json_test.dart.golden
+++ b/bin/fidlgen_dart/goldens/xunion.test.fidl.json_test.dart.golden
@@ -6,13 +6,13 @@
 
 library fidl_test_name_test;
 
-import 'dart:async' show Future, Stream;
-import 'dart:core' hide Error;
+import 'dart:async' as $async;
+import 'dart:core' hide Error, Future, Match, Set, Stream, Type;
 import 'dart:typed_data';
 
 import 'package:fidl/fidl.dart' as $fidl;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart';
+import 'package:zircon/zircon.dart' as $zx;
 
 import './fidl_async.dart';
 
diff --git a/lib/setui/settings/service/lib/src/intl/intl_settings_util.dart b/lib/setui/settings/service/lib/src/intl/intl_settings_util.dart
index fbc5cdc..5797831 100644
--- a/lib/setui/settings/service/lib/src/intl/intl_settings_util.dart
+++ b/lib/setui/settings/service/lib/src/intl/intl_settings_util.dart
@@ -9,7 +9,7 @@
 import 'package:fidl_fuchsia_setui/fidl.dart';
 
 IntlSettings applyMutation(IntlSettings settings, Mutation mutation) {
-  switch (mutation.tag) {
+  switch (mutation.$tag) {
     case MutationTag.localesMutationValue:
       return setLocales(settings, mutation.localesMutationValue);
     case MutationTag.hourCycleMutationValue:
@@ -67,6 +67,6 @@
   Map<String, dynamic> parsed = jsonDecode(json);
   return IntlSettings(
       locales: List<String>.from(parsed['locales']),
-      hourCycle: HourCycle.valuesMap[parsed['hour_cycle']],
-      temperatureUnit: TemperatureUnit.valuesMap[parsed['temperature_unit']]);
+      hourCycle: HourCycle.$valuesMap[parsed['hour_cycle']],
+      temperatureUnit: TemperatureUnit.$valuesMap[parsed['temperature_unit']]);
 }
diff --git a/packages/tests/BUILD.gn b/packages/tests/BUILD.gn
index c413942..75a7fb1 100644
--- a/packages/tests/BUILD.gn
+++ b/packages/tests/BUILD.gn
@@ -80,6 +80,7 @@
     "//topaz/packages/tests:fidl_changes",
     "//topaz/packages/tests:fidl_compatibility_test",
     "//topaz/packages/tests:fidl_compatibility_test_server_dart",
+    "//topaz/packages/tests:fidl_dangerous_identifiers",
     "//topaz/packages/tests:flutter_runner_tests",
     "//topaz/packages/tests:flutter_screencap_test",
     "//topaz/packages/tests:flutter_screencap_test_app",
@@ -183,6 +184,13 @@
   ]
 }
 
+group("fidl_dangerous_identifiers") {
+  testonly = true
+  public_deps = [
+    "//topaz/tests/fidl-dangerous-identifiers",
+  ]
+}
+
 group("sledge") {
   testonly = true
   public_deps = [
diff --git a/public/dart/fidl/lib/src/enum.dart b/public/dart/fidl/lib/src/enum.dart
index 8c9e7fd..9da9d2f 100644
--- a/public/dart/fidl/lib/src/enum.dart
+++ b/public/dart/fidl/lib/src/enum.dart
@@ -7,7 +7,7 @@
 abstract class Enum {
   const Enum();
 
-  int get value;
+  int get $value;
 }
 
 typedef EnumFactory<T> = T Function(int value);
diff --git a/public/dart/fidl/lib/src/types.dart b/public/dart/fidl/lib/src/types.dart
index 61b0679..7c732ec 100644
--- a/public/dart/fidl/lib/src/types.dart
+++ b/public/dart/fidl/lib/src/types.dart
@@ -954,7 +954,7 @@
 
   @override
   void encode(Encoder encoder, T value, int offset) {
-    type.encode(encoder, value.value, offset);
+    type.encode(encoder, value.$value, offset);
   }
 
   @override
diff --git a/public/dart/fuchsia_modular/lib/src/module/intent.dart b/public/dart/fuchsia_modular/lib/src/module/intent.dart
index 81179f4..b7bb7a7 100644
--- a/public/dart/fuchsia_modular/lib/src/module/intent.dart
+++ b/public/dart/fuchsia_modular/lib/src/module/intent.dart
@@ -93,7 +93,7 @@
     fidl.IntentParameter parameter,
     String type,
   }) {
-    if (parameter.data.tag == fidl.IntentParameterDataTag.entityReference) {
+    if (parameter.data.$tag == fidl.IntentParameterDataTag.entityReference) {
       return Entity(
           type: type, entityReference: parameter.data.entityReference);
     }
diff --git a/shell/mondrian_story_shell/lib/models/surface/surface_graph.dart b/shell/mondrian_story_shell/lib/models/surface/surface_graph.dart
index 9bc54d5..61316a1 100644
--- a/shell/mondrian_story_shell/lib/models/surface/surface_graph.dart
+++ b/shell/mondrian_story_shell/lib/models/surface/surface_graph.dart
@@ -86,7 +86,7 @@
         this, node, properties, relation, pattern, placeholderColor);
     // if this is an external surface, create an association between this and
     // the most focused surface.
-    if (properties.source == ModuleSource.external$ &&
+    if (properties.source == ModuleSource.external &&
         _focusedSurfaces.isNotEmpty) {
       _visualAssociation[_focusedSurfaces.last] = id;
     }
@@ -296,7 +296,7 @@
     Surface parent = getNode(surfaceId);
     List<Surface> externalSurfaces = parent.children.toList()
       ..retainWhere(
-          (Surface s) => s.properties.source == ModuleSource.external$);
+          (Surface s) => s.properties.source == ModuleSource.external);
     Set<String> externalIds =
         externalSurfaces.map((Surface s) => s.node.value).toSet();
     // Case2: The focused surface has a recorded visual association with an
diff --git a/shell/mondrian_story_shell/lib/models/surface/surface_properties.dart b/shell/mondrian_story_shell/lib/models/surface/surface_properties.dart
index 3e209d8..a88c8fc 100644
--- a/shell/mondrian_story_shell/lib/models/surface/surface_properties.dart
+++ b/shell/mondrian_story_shell/lib/models/surface/surface_properties.dart
@@ -39,8 +39,8 @@
   ModuleSource moduleSourceFromString(String str) {
     if (str == ModuleSource.internal.toString()) {
       return ModuleSource.internal;
-    } else if (str == ModuleSource.external$.toString()) {
-      return ModuleSource.external$;
+    } else if (str == ModuleSource.external.toString()) {
+      return ModuleSource.external;
     } else if (str == 'null') {
       return null;
     } else {
diff --git a/shell/mondrian_story_shell/test/model/surface/surface_graph_test.dart b/shell/mondrian_story_shell/test/model/surface/surface_graph_test.dart
index ced699f..212c3ef 100644
--- a/shell/mondrian_story_shell/test/model/surface/surface_graph_test.dart
+++ b/shell/mondrian_story_shell/test/model/surface/surface_graph_test.dart
@@ -182,7 +182,7 @@
   test('external surfaces are found by resummon dismissed checks', () {
     SurfaceGraph graph = SurfaceGraph();
     SurfaceProperties externalProp =
-        SurfaceProperties(source: ModuleSource.external$);
+        SurfaceProperties(source: ModuleSource.external);
     graph
       ..addSurface('parent', SurfaceProperties(), '', SurfaceRelation(),
           null, '')
diff --git a/shell/mondrian_story_shell/test/model/surface/surface_test.dart b/shell/mondrian_story_shell/test/model/surface/surface_test.dart
index cc18b32..fe04f5a 100644
--- a/shell/mondrian_story_shell/test/model/surface/surface_test.dart
+++ b/shell/mondrian_story_shell/test/model/surface/surface_test.dart
@@ -21,7 +21,7 @@
     parent.add(node);
     node.add(child);
     SurfaceProperties properties = SurfaceProperties(
-        containerLabel: 'containerLabel', source: ModuleSource.external$);
+        containerLabel: 'containerLabel', source: ModuleSource.external);
     SurfaceRelation relation = SurfaceRelation(
       emphasis: 0.12,
       arrangement: SurfaceArrangement.copresent,
@@ -37,7 +37,7 @@
     expect(decodedSurface.relation.arrangement, SurfaceArrangement.copresent);
     expect(decodedSurface.relation.dependency, SurfaceDependency.dependent);
     expect(decodedSurface.properties.containerLabel, 'containerLabel');
-    expect(decodedSurface.properties.source, ModuleSource.external$);
+    expect(decodedSurface.properties.source, ModuleSource.external);
     expect(decodedSurface.compositionPattern, null);
   });
 
diff --git a/tests/fidl-dangerous-identifiers/BUILD.gn b/tests/fidl-dangerous-identifiers/BUILD.gn
new file mode 100644
index 0000000..eb14149
--- /dev/null
+++ b/tests/fidl-dangerous-identifiers/BUILD.gn
@@ -0,0 +1,9 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/dart/toolchain.gni")
+
+group("fidl-dangerous-identifiers") {
+  deps = [ "//garnet/tests/fidl-dangerous-identifiers/fidl($dart_toolchain)" ]
+}