Update comments, package declarations and syntax statements.
diff --git a/protoc-gen-go/main.go b/protoc-gen-go/main.go
index 81f5087..8e2486d 100644
--- a/protoc-gen-go/main.go
+++ b/protoc-gen-go/main.go
@@ -29,14 +29,23 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-/*
-	A plugin for the Google protocol buffer compiler to generate Go code.
-
-	This plugin takes no options and the protocol buffer file syntax does
-	not yet define any options for Go, so program does no option evaluation.
-	That may change.
-*/
-
+// protoc-gen-go is a plugin for the Google protocol buffer compiler to generate
+// Go code.  Run it by building this program and putting it in your path with
+// the name
+// 	protoc-gen-go
+// That word 'go' at the end becomes part of the option string set for the
+// protocol compiler, so once the protocol compiler (protoc) is installed
+// you can run
+// 	protoc --go_out=output_directory input_directory/file.proto
+// to generate Go bindings for the protocol defined by file.proto.
+// With that input, the output will be written to
+// 	output_directory/file.pb.go
+//
+// The generated code is documented in the package comment for
+// the library.
+//
+// See the README and documentation for protocol buffers to learn more:
+// 	https://developers.google.com/protocol-buffers/
 package main
 
 import (
diff --git a/protoc-gen-go/testdata/extension_base.proto b/protoc-gen-go/testdata/extension_base.proto
index 709aefb..94acfc1 100644
--- a/protoc-gen-go/testdata/extension_base.proto
+++ b/protoc-gen-go/testdata/extension_base.proto
@@ -29,6 +29,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
 package extension_base;
 
 message BaseMessage {
diff --git a/protoc-gen-go/testdata/extension_user.proto b/protoc-gen-go/testdata/extension_user.proto
index 58f011c..ff65873 100644
--- a/protoc-gen-go/testdata/extension_user.proto
+++ b/protoc-gen-go/testdata/extension_user.proto
@@ -29,6 +29,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
 import "extension_base.proto";
 import "extension_extra.proto";
 
diff --git a/protoc-gen-go/testdata/imp.proto b/protoc-gen-go/testdata/imp.proto
index 0cd9477..42f144e 100644
--- a/protoc-gen-go/testdata/imp.proto
+++ b/protoc-gen-go/testdata/imp.proto
@@ -29,6 +29,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
 package imp;
 
 import "imp2.proto";
diff --git a/protoc-gen-go/testdata/imp2.proto b/protoc-gen-go/testdata/imp2.proto
index e9baf18..3bb0632 100644
--- a/protoc-gen-go/testdata/imp2.proto
+++ b/protoc-gen-go/testdata/imp2.proto
@@ -1,3 +1,4 @@
+// Go support for Protocol Buffers - Google's data interchange format
 //
 // Copyright 2011 The Go Authors.  All rights reserved.
 // https://github.com/golang/protobuf
@@ -28,6 +29,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
 package imp;
 
 message PubliclyImportedMessage {
diff --git a/protoc-gen-go/testdata/imp3.proto b/protoc-gen-go/testdata/imp3.proto
index 62a5738..58fc759 100644
--- a/protoc-gen-go/testdata/imp3.proto
+++ b/protoc-gen-go/testdata/imp3.proto
@@ -1,3 +1,4 @@
+// Go support for Protocol Buffers - Google's data interchange format
 //
 // Copyright 2012 The Go Authors.  All rights reserved.
 // https://github.com/golang/protobuf
@@ -28,6 +29,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
 package imp;
 
 message ForeignImportedMessage {
diff --git a/protoc-gen-go/testdata/main_test.go b/protoc-gen-go/testdata/main_test.go
index 03815eb..2f1711c 100644
--- a/protoc-gen-go/testdata/main_test.go
+++ b/protoc-gen-go/testdata/main_test.go
@@ -36,11 +36,11 @@
 import (
 	"testing"
 
-	"./multi"
-	"./my_test"
+	multipb "./multi"
+	mytestpb "./my_test"
 )
 
 func TestLink(t *testing.T) {
-	_ = &multi.Multi1{}
-	_ = &my_test.Request{}
+	_ = &multipb.Multi1{}
+	_ = &mytestpb.Request{}
 }
diff --git a/protoc-gen-go/testdata/multi/multi1.proto b/protoc-gen-go/testdata/multi/multi1.proto
index e02b96f..0da6e0a 100644
--- a/protoc-gen-go/testdata/multi/multi1.proto
+++ b/protoc-gen-go/testdata/multi/multi1.proto
@@ -29,10 +29,12 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
 import "multi/multi2.proto";
 import "multi/multi3.proto";
 
-package multi;
+package multitest;
 
 message Multi1 {
   required Multi2 multi2 = 1;
diff --git a/protoc-gen-go/testdata/multi/multi2.proto b/protoc-gen-go/testdata/multi/multi2.proto
index 6fe8ffc..e6bfc71 100644
--- a/protoc-gen-go/testdata/multi/multi2.proto
+++ b/protoc-gen-go/testdata/multi/multi2.proto
@@ -29,7 +29,9 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-package multi;
+syntax = "proto2";
+
+package multitest;
 
 message Multi2 {
   required int32 required_value = 1;
diff --git a/protoc-gen-go/testdata/multi/multi3.proto b/protoc-gen-go/testdata/multi/multi3.proto
index 93493c6..146c255 100644
--- a/protoc-gen-go/testdata/multi/multi3.proto
+++ b/protoc-gen-go/testdata/multi/multi3.proto
@@ -29,7 +29,9 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-package multi;
+syntax = "proto2";
+
+package multitest;
 
 message Multi3 {
   enum HatType {
diff --git a/protoc-gen-go/testdata/my_test/test.pb.go b/protoc-gen-go/testdata/my_test/test.pb.go
index 5cd7b2a..566588d 100644
--- a/protoc-gen-go/testdata/my_test/test.pb.go
+++ b/protoc-gen-go/testdata/my_test/test.pb.go
@@ -5,6 +5,8 @@
 /*
 Package my_test is a generated protocol buffer package.
 
+This package holds interesting messages.
+
 It is generated from these files:
 	my_test/test.proto
 
@@ -21,7 +23,7 @@
 import proto "github.com/golang/protobuf/proto"
 import math "math"
 
-// discarding unused import multi2 "multi/multi1.pb"
+// discarding unused import multitest2 "multi/multi1.pb"
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
diff --git a/protoc-gen-go/testdata/my_test/test.pb.go.golden b/protoc-gen-go/testdata/my_test/test.pb.go.golden
index 5cd7b2a..566588d 100644
--- a/protoc-gen-go/testdata/my_test/test.pb.go.golden
+++ b/protoc-gen-go/testdata/my_test/test.pb.go.golden
@@ -5,6 +5,8 @@
 /*
 Package my_test is a generated protocol buffer package.
 
+This package holds interesting messages.
+
 It is generated from these files:
 	my_test/test.proto
 
@@ -21,7 +23,7 @@
 import proto "github.com/golang/protobuf/proto"
 import math "math"
 
-// discarding unused import multi2 "multi/multi1.pb"
+// discarding unused import multitest2 "multi/multi1.pb"
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
diff --git a/protoc-gen-go/testdata/my_test/test.proto b/protoc-gen-go/testdata/my_test/test.proto
index af69c47..975520f 100644
--- a/protoc-gen-go/testdata/my_test/test.proto
+++ b/protoc-gen-go/testdata/my_test/test.proto
@@ -29,6 +29,9 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+syntax = "proto2";
+
+// This package holds interesting messages.
 package my.test;  // dotted package name
 
 //import "imp.proto";