diff --git a/protoc-gen-go/generator/generator.go b/protoc-gen-go/generator/generator.go
index 0e40162..48f029d 100644
--- a/protoc-gen-go/generator/generator.go
+++ b/protoc-gen-go/generator/generator.go
@@ -1655,8 +1655,23 @@
 // Names of messages in the `google.protobuf` package for which
 // we will generate XXX_WellKnownType methods.
 var wellKnownTypes = map[string]bool{
+	"Any":       true,
 	"Duration":  true,
+	"Empty":     true,
+	"Struct":    true,
 	"Timestamp": true,
+
+	"Value":       true,
+	"ListValue":   true,
+	"DoubleValue": true,
+	"FloatValue":  true,
+	"Int64Value":  true,
+	"UInt64Value": true,
+	"Int32Value":  true,
+	"UInt32Value": true,
+	"BoolValue":   true,
+	"StringValue": true,
+	"BytesValue":  true,
 }
 
 // Generate the type and default constant definitions for this Descriptor.
diff --git a/ptypes/any/any.pb.go b/ptypes/any/any.pb.go
index c30c737..c809f44 100644
--- a/ptypes/any/any.pb.go
+++ b/ptypes/any/any.pb.go
@@ -88,6 +88,7 @@
 func (m *Any) String() string            { return proto.CompactTextString(m) }
 func (*Any) ProtoMessage()               {}
 func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*Any) XXX_WellKnownType() string   { return "Any" }
 
 func init() {
 	proto.RegisterType((*Any)(nil), "google.protobuf.Any")
diff --git a/ptypes/empty/empty.pb.go b/ptypes/empty/empty.pb.go
index 75513c4..5af4b19 100644
--- a/ptypes/empty/empty.pb.go
+++ b/ptypes/empty/empty.pb.go
@@ -42,6 +42,7 @@
 func (m *Empty) String() string            { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()               {}
 func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*Empty) XXX_WellKnownType() string   { return "Empty" }
 
 func init() {
 	proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
diff --git a/ptypes/struct/struct.pb.go b/ptypes/struct/struct.pb.go
index 9f2ef62..004409e 100644
--- a/ptypes/struct/struct.pb.go
+++ b/ptypes/struct/struct.pb.go
@@ -68,6 +68,7 @@
 func (m *Struct) String() string            { return proto.CompactTextString(m) }
 func (*Struct) ProtoMessage()               {}
 func (*Struct) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*Struct) XXX_WellKnownType() string   { return "Struct" }
 
 func (m *Struct) GetFields() map[string]*Value {
 	if m != nil {
@@ -99,6 +100,7 @@
 func (m *Value) String() string            { return proto.CompactTextString(m) }
 func (*Value) ProtoMessage()               {}
 func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (*Value) XXX_WellKnownType() string   { return "Value" }
 
 type isValue_Kind interface {
 	isValue_Kind()
@@ -326,6 +328,7 @@
 func (m *ListValue) String() string            { return proto.CompactTextString(m) }
 func (*ListValue) ProtoMessage()               {}
 func (*ListValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (*ListValue) XXX_WellKnownType() string   { return "ListValue" }
 
 func (m *ListValue) GetValues() []*Value {
 	if m != nil {
diff --git a/ptypes/wrappers/wrappers.pb.go b/ptypes/wrappers/wrappers.pb.go
index 1363bb6..a0fe341 100644
--- a/ptypes/wrappers/wrappers.pb.go
+++ b/ptypes/wrappers/wrappers.pb.go
@@ -46,6 +46,7 @@
 func (m *DoubleValue) String() string            { return proto.CompactTextString(m) }
 func (*DoubleValue) ProtoMessage()               {}
 func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*DoubleValue) XXX_WellKnownType() string   { return "DoubleValue" }
 
 // Wrapper message for `float`.
 //
@@ -59,6 +60,7 @@
 func (m *FloatValue) String() string            { return proto.CompactTextString(m) }
 func (*FloatValue) ProtoMessage()               {}
 func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (*FloatValue) XXX_WellKnownType() string   { return "FloatValue" }
 
 // Wrapper message for `int64`.
 //
@@ -72,6 +74,7 @@
 func (m *Int64Value) String() string            { return proto.CompactTextString(m) }
 func (*Int64Value) ProtoMessage()               {}
 func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (*Int64Value) XXX_WellKnownType() string   { return "Int64Value" }
 
 // Wrapper message for `uint64`.
 //
@@ -85,6 +88,7 @@
 func (m *UInt64Value) String() string            { return proto.CompactTextString(m) }
 func (*UInt64Value) ProtoMessage()               {}
 func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+func (*UInt64Value) XXX_WellKnownType() string   { return "UInt64Value" }
 
 // Wrapper message for `int32`.
 //
@@ -98,6 +102,7 @@
 func (m *Int32Value) String() string            { return proto.CompactTextString(m) }
 func (*Int32Value) ProtoMessage()               {}
 func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (*Int32Value) XXX_WellKnownType() string   { return "Int32Value" }
 
 // Wrapper message for `uint32`.
 //
@@ -111,6 +116,7 @@
 func (m *UInt32Value) String() string            { return proto.CompactTextString(m) }
 func (*UInt32Value) ProtoMessage()               {}
 func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+func (*UInt32Value) XXX_WellKnownType() string   { return "UInt32Value" }
 
 // Wrapper message for `bool`.
 //
@@ -124,6 +130,7 @@
 func (m *BoolValue) String() string            { return proto.CompactTextString(m) }
 func (*BoolValue) ProtoMessage()               {}
 func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (*BoolValue) XXX_WellKnownType() string   { return "BoolValue" }
 
 // Wrapper message for `string`.
 //
@@ -137,6 +144,7 @@
 func (m *StringValue) String() string            { return proto.CompactTextString(m) }
 func (*StringValue) ProtoMessage()               {}
 func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (*StringValue) XXX_WellKnownType() string   { return "StringValue" }
 
 // Wrapper message for `bytes`.
 //
@@ -150,6 +158,7 @@
 func (m *BytesValue) String() string            { return proto.CompactTextString(m) }
 func (*BytesValue) ProtoMessage()               {}
 func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (*BytesValue) XXX_WellKnownType() string   { return "BytesValue" }
 
 func init() {
 	proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")
