diff --git a/gotypes/README.md b/gotypes/README.md
index 5b80b8c..3886945 100644
--- a/gotypes/README.md
+++ b/gotypes/README.md
@@ -352,7 +352,7 @@
 	Object = *Func         // function, concrete method, or abstract method
 	       | *Var          // variable, parameter, result, or struct field
 	       | *Const        // constant
-	       | *TypeName     // named type (except for predeclared ones)
+	       | *TypeName     // type name
 	       | *Label        // statement label
 	       | *PkgName      // package name, e.g. json after import "encoding/json"
 	       | *Builtin      // predeclared function such as append or len
@@ -396,6 +396,7 @@
 	func (*Var) Anonymous() bool
 	func (*Var) IsField() bool
 	func (*Const) Val() constant.Value
+	func (*TypeName) IsAlias() bool // expected in Go 1.9
 	func (*PkgName) Imported() *Package
 
 
@@ -408,6 +409,11 @@
 `(*Const).Val` returns the value of a named [constant](#constants).
 
 
+`(*TypeName).IsAlias`, to be introduced in Go 1.9, reports whether the
+type name is simply an alias for a type (as in `type I = int`),
+as opposed to a definition of a [`Named`](#named-types) type, as
+in `type Celsius float64`.
+
 
 `(*PkgName).Imported` returns the package (for instance,
 `encoding/json`) denoted by a given import name such as `json`.
@@ -1251,11 +1257,37 @@
 ## Named Types
 
 
-A type declaration creates a `TypeName` object, and the type of
-that object is a `Named`.
-These two entities, an object and a type, are distinct but closely
-related, and they exist in one-to-one correspondence.
+Type declarations come in two forms.
+The simplest kind, to be introduced in Go 1.9,
+merely declares a (possibly alternative) name for an existing type.
+Type names used in this way are informally called _type aliases_.
+For example, this declaration lets you use the type
+`Dictionary` as an alias for `map[string]string`:
 
+	type Dictionary = map[string]string
+
+The declaration creates a `TypeName` object for `Dictionary`.  The
+object's `IsAlias` method returns true, and its `Type` method returns
+a `Map` type that represents `map[string]string`.
+
+
+The second form of type declaration, and the only kind prior to Go
+1.9, does not use an equals sign:
+
+	type Celsius float64
+
+This declaration does more than just give a name to a type.
+It first defines a new `Named` type
+whose underlying type is `float64`; this `Named` type is different
+from any other type, including `float64`.  The declaration binds the
+`TypeName` object to the `Named` type.
+
+Since Go 1.9, the Go language specification has used the term _defined
+types_ instead of named types;
+the essential property of a defined type is not that it has a name,
+but that it is a distinct type with its own method set.
+However, the type checker API predates that
+change and instead calls defined types "named" types.
 
 	type Named struct{ ... }
 	func (*Named) NumMethods() int
@@ -1263,13 +1295,14 @@
 	func (*Named) Obj() *TypeName
 	func (*Named) Underlying() Type
 
-
 The `Named` type's `Obj` method returns the `TypeName` object, which
 provides the name, position, and other properties of the declaration.
 Conversely, the `TypeName` object's `Type` method returns the `Named` type.
 
-
-
+A `Named` type may appear as the receiver type in a method declaration.
+Methods are associated with the `Named` type, not the name (the
+`TypeName` object); it's possible---though cryptic---to declare a
+method on a `Named` type using one of its aliases.
 The `NumMethods` and `Method` methods enumerate the declared
 methods associated with this `Named` type (or a pointer to it),
 in the order they were declared.
diff --git a/gotypes/go-types.md b/gotypes/go-types.md
index 07ee3e3..9dccc68 100644
--- a/gotypes/go-types.md
+++ b/gotypes/go-types.md
@@ -269,7 +269,7 @@
 	Object = *Func         // function, concrete method, or abstract method
 	       | *Var          // variable, parameter, result, or struct field
 	       | *Const        // constant
-	       | *TypeName     // named type (except for predeclared ones)
+	       | *TypeName     // type name
 	       | *Label        // statement label
 	       | *PkgName      // package name, e.g. json after import "encoding/json"
 	       | *Builtin      // predeclared function such as append or len
@@ -313,6 +313,7 @@
 	func (*Var) Anonymous() bool
 	func (*Var) IsField() bool
 	func (*Const) Val() constant.Value
+	func (*TypeName) IsAlias() bool // expected in Go 1.9
 	func (*PkgName) Imported() *Package
 
 
@@ -325,6 +326,11 @@
 `(*Const).Val` returns the value of a named [constant](#constants).
 
 
+`(*TypeName).IsAlias`, to be introduced in Go 1.9, reports whether the
+type name is simply an alias for a type (as in `type I = int`),
+as opposed to a definition of a [`Named`](#named-types) type, as
+in `type Celsius float64`.
+
 
 `(*PkgName).Imported` returns the package (for instance,
 `encoding/json`) denoted by a given import name such as `json`.
@@ -1070,11 +1076,37 @@
 ## Named Types
 
 
-A type declaration creates a `TypeName` object, and the type of
-that object is a `Named`.
-These two entities, an object and a type, are distinct but closely
-related, and they exist in one-to-one correspondence.
+Type declarations come in two forms.
+The simplest kind, to be introduced in Go 1.9,
+merely declares a (possibly alternative) name for an existing type.
+Type names used in this way are informally called _type aliases_.
+For example, this declaration lets you use the type
+`Dictionary` as an alias for `map[string]string`:
 
+	type Dictionary = map[string]string
+
+The declaration creates a `TypeName` object for `Dictionary`.  The
+object's `IsAlias` method returns true, and its `Type` method returns
+a `Map` type that represents `map[string]string`.
+
+
+The second form of type declaration, and the only kind prior to Go
+1.9, does not use an equals sign:
+
+	type Celsius float64
+
+This declaration does more than just give a name to a type.
+It first defines a new `Named` type
+whose underlying type is `float64`; this `Named` type is different
+from any other type, including `float64`.  The declaration binds the
+`TypeName` object to the `Named` type.
+
+Since Go 1.9, the Go language specification has used the term _defined
+types_ instead of named types;
+the essential property of a defined type is not that it has a name,
+but that it is a distinct type with its own method set.
+However, the type checker API predates that
+change and instead calls defined types "named" types.
 
 	type Named struct{ ... }
 	func (*Named) NumMethods() int
@@ -1082,13 +1114,14 @@
 	func (*Named) Obj() *TypeName
 	func (*Named) Underlying() Type
 
-
 The `Named` type's `Obj` method returns the `TypeName` object, which
 provides the name, position, and other properties of the declaration.
 Conversely, the `TypeName` object's `Type` method returns the `Named` type.
 
-
-
+A `Named` type may appear as the receiver type in a method declaration.
+Methods are associated with the `Named` type, not the name (the
+`TypeName` object); it's possible---though cryptic---to declare a
+method on a `Named` type using one of its aliases.
 The `NumMethods` and `Method` methods enumerate the declared
 methods associated with this `Named` type (or a pointer to it),
 in the order they were declared.
