diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h
index 9cd1a06..a7bcfc8 100644
--- a/googlemock/include/gmock/gmock-matchers.h
+++ b/googlemock/include/gmock/gmock-matchers.h
@@ -56,9 +56,10 @@
 # include <initializer_list>  // NOLINT -- must be after gtest.h
 #endif
 
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 5046 \
-/* class A needs to have dll-interface to be used by clients of class B */ \
-/* Symbol involving type with internal linkage not defined */)
+GTEST_DISABLE_MSC_WARNINGS_PUSH_(
+    4251 5046 /* class A needs to have dll-interface to be used by clients of
+                 class B */
+    /* Symbol involving type with internal linkage not defined */)
 
 namespace testing {
 
diff --git a/googletest/include/gtest/gtest-typed-test.h b/googletest/include/gtest/gtest-typed-test.h
index ea31567..74bce46 100644
--- a/googletest/include/gtest/gtest-typed-test.h
+++ b/googletest/include/gtest/gtest-typed-test.h
@@ -96,7 +96,7 @@
 //     static std::string GetName(int) {
 //       if (std::is_same<T, char>()) return "char";
 //       if (std::is_same<T, int>()) return "int";
-//       if (std::is_same<T, unsigned int>()) return "unsigned_int";
+//       if (std::is_same<T, unsigned int>()) return "unsignedInt";
 //     }
 //   };
 //   TYPED_TEST_CASE(FooTest, MyTypes, MyTypeNames);
diff --git a/googletest/test/googletest-output-test-golden-lin.txt b/googletest/test/googletest-output-test-golden-lin.txt
index 7711cdc..86da845 100644
--- a/googletest/test/googletest-output-test-golden-lin.txt
+++ b/googletest/test/googletest-output-test-golden-lin.txt
@@ -606,24 +606,24 @@
 Stack trace: (omitted)
 
 [0;31m[  FAILED  ] [mTypedTest/0.Failure, where TypeParam = int
-[0;32m[----------] [m2 tests from TypedTestWithNames/char_0, where TypeParam = char
-[0;32m[ RUN      ] [mTypedTestWithNames/char_0.Success
-[0;32m[       OK ] [mTypedTestWithNames/char_0.Success
-[0;32m[ RUN      ] [mTypedTestWithNames/char_0.Failure
+[0;32m[----------] [m2 tests from TypedTestWithNames/char0, where TypeParam = char
+[0;32m[ RUN      ] [mTypedTestWithNames/char0.Success
+[0;32m[       OK ] [mTypedTestWithNames/char0.Success
+[0;32m[ RUN      ] [mTypedTestWithNames/char0.Failure
 googletest-output-test_.cc:#: Failure
 Failed
 Stack trace: (omitted)
 
-[0;31m[  FAILED  ] [mTypedTestWithNames/char_0.Failure, where TypeParam = char
-[0;32m[----------] [m2 tests from TypedTestWithNames/int_1, where TypeParam = int
-[0;32m[ RUN      ] [mTypedTestWithNames/int_1.Success
-[0;32m[       OK ] [mTypedTestWithNames/int_1.Success
-[0;32m[ RUN      ] [mTypedTestWithNames/int_1.Failure
+[0;31m[  FAILED  ] [mTypedTestWithNames/char0.Failure, where TypeParam = char
+[0;32m[----------] [m2 tests from TypedTestWithNames/int1, where TypeParam = int
+[0;32m[ RUN      ] [mTypedTestWithNames/int1.Success
+[0;32m[       OK ] [mTypedTestWithNames/int1.Success
+[0;32m[ RUN      ] [mTypedTestWithNames/int1.Failure
 googletest-output-test_.cc:#: Failure
 Failed
 Stack trace: (omitted)
 
-[0;31m[  FAILED  ] [mTypedTestWithNames/int_1.Failure, where TypeParam = int
+[0;31m[  FAILED  ] [mTypedTestWithNames/int1.Failure, where TypeParam = int
 [0;32m[----------] [m2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char
 [0;32m[ RUN      ] [mUnsigned/TypedTestP/0.Success
 [0;32m[       OK ] [mUnsigned/TypedTestP/0.Success
@@ -652,10 +652,10 @@
 Stack trace: (omitted)
 
 [0;31m[  FAILED  ] [mUnsigned/TypedTestP/1.Failure, where TypeParam = unsigned int
-[0;32m[----------] [m2 tests from UnsignedCustomName/TypedTestP/unsigned_char_0, where TypeParam = unsigned char
-[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsigned_char_0.Success
-[0;32m[       OK ] [mUnsignedCustomName/TypedTestP/unsigned_char_0.Success
-[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsigned_char_0.Failure
+[0;32m[----------] [m2 tests from UnsignedCustomName/TypedTestP/unsignedChar0, where TypeParam = unsigned char
+[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsignedChar0.Success
+[0;32m[       OK ] [mUnsignedCustomName/TypedTestP/unsignedChar0.Success
+[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsignedChar0.Failure
 googletest-output-test_.cc:#: Failure
 Expected equality of these values:
   1U
@@ -665,11 +665,11 @@
 Expected failure
 Stack trace: (omitted)
 
-[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsigned_char_0.Failure, where TypeParam = unsigned char
-[0;32m[----------] [m2 tests from UnsignedCustomName/TypedTestP/unsigned_int_1, where TypeParam = unsigned int
-[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsigned_int_1.Success
-[0;32m[       OK ] [mUnsignedCustomName/TypedTestP/unsigned_int_1.Success
-[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsigned_int_1.Failure
+[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsignedChar0.Failure, where TypeParam = unsigned char
+[0;32m[----------] [m2 tests from UnsignedCustomName/TypedTestP/unsignedInt1, where TypeParam = unsigned int
+[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsignedInt1.Success
+[0;32m[       OK ] [mUnsignedCustomName/TypedTestP/unsignedInt1.Success
+[0;32m[ RUN      ] [mUnsignedCustomName/TypedTestP/unsignedInt1.Failure
 googletest-output-test_.cc:#: Failure
 Expected equality of these values:
   1U
@@ -679,7 +679,7 @@
 Expected failure
 Stack trace: (omitted)
 
-[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsigned_int_1.Failure, where TypeParam = unsigned int
+[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsignedInt1.Failure, where TypeParam = unsigned int
 [0;32m[----------] [m4 tests from ExpectFailureTest
 [0;32m[ RUN      ] [mExpectFailureTest.ExpectFatalFailure
 (expecting 1 failure)
@@ -944,12 +944,12 @@
 [0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenStatementReturns
 [0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenStatementThrows
 [0;31m[  FAILED  ] [mTypedTest/0.Failure, where TypeParam = int
-[0;31m[  FAILED  ] [mTypedTestWithNames/char_0.Failure, where TypeParam = char
-[0;31m[  FAILED  ] [mTypedTestWithNames/int_1.Failure, where TypeParam = int
+[0;31m[  FAILED  ] [mTypedTestWithNames/char0.Failure, where TypeParam = char
+[0;31m[  FAILED  ] [mTypedTestWithNames/int1.Failure, where TypeParam = int
 [0;31m[  FAILED  ] [mUnsigned/TypedTestP/0.Failure, where TypeParam = unsigned char
 [0;31m[  FAILED  ] [mUnsigned/TypedTestP/1.Failure, where TypeParam = unsigned int
-[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsigned_char_0.Failure, where TypeParam = unsigned char
-[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsigned_int_1.Failure, where TypeParam = unsigned int
+[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsignedChar0.Failure, where TypeParam = unsigned char
+[0;31m[  FAILED  ] [mUnsignedCustomName/TypedTestP/unsignedInt1.Failure, where TypeParam = unsigned int
 [0;31m[  FAILED  ] [mExpectFailureTest.ExpectFatalFailure
 [0;31m[  FAILED  ] [mExpectFailureTest.ExpectNonFatalFailure
 [0;31m[  FAILED  ] [mExpectFailureTest.ExpectFatalFailureOnAllThreads
diff --git a/googletest/test/googletest-output-test_.cc b/googletest/test/googletest-output-test_.cc
index 180630e..f6525ec 100644
--- a/googletest/test/googletest-output-test_.cc
+++ b/googletest/test/googletest-output-test_.cc
@@ -40,8 +40,8 @@
 #include <stdlib.h>
 
 #if _MSC_VER
-  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127 /* conditional expression is constant */)
-#endif  // . _MSC_VER    
+GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127 /* conditional expression is constant */)
+#endif  //  _MSC_VER
 
 #if GTEST_IS_THREADSAFE
 using testing::ScopedFakeTestPartResultReporter;
@@ -815,9 +815,9 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, char>::value)
-      return std::string("char_") + ::testing::PrintToString(i);
+      return std::string("char") + ::testing::PrintToString(i);
     if (testing::internal::IsSame<T, int>::value)
-      return std::string("int_") + ::testing::PrintToString(i);
+      return std::string("int") + ::testing::PrintToString(i);
   }
 };
 
@@ -856,10 +856,10 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, unsigned char>::value) {
-      return std::string("unsigned_char_") + ::testing::PrintToString(i);
+      return std::string("unsignedChar") + ::testing::PrintToString(i);
     }
     if (testing::internal::IsSame<T, unsigned int>::value) {
-      return std::string("unsigned_int_") + ::testing::PrintToString(i);
+      return std::string("unsignedInt") + ::testing::PrintToString(i);
     }
   }
 };
@@ -1103,7 +1103,7 @@
   testing::AddGlobalTestEnvironment(new FooEnvironment);
   testing::AddGlobalTestEnvironment(new BarEnvironment);
 #if _MSC_VER
-  GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4127
-#endif  // . _MSC_VER    
+GTEST_DISABLE_MSC_WARNINGS_POP_()  //  4127
+#endif  //  _MSC_VER
   return RunAllTests();
 }
diff --git a/googletest/test/gtest-typed-test_test.cc b/googletest/test/gtest-typed-test_test.cc
index c38bb94..4e39869 100644
--- a/googletest/test/gtest-typed-test_test.cc
+++ b/googletest/test/gtest-typed-test_test.cc
@@ -178,10 +178,10 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, char>::value) {
-      return std::string("char_") + ::testing::PrintToString(i);
+      return std::string("char") + ::testing::PrintToString(i);
     }
     if (testing::internal::IsSame<T, int>::value) {
-      return std::string("int_") + ::testing::PrintToString(i);
+      return std::string("int") + ::testing::PrintToString(i);
     }
   }
 };
@@ -193,13 +193,13 @@
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "TypedTestWithNames/char_0");
+                 "TypedTestWithNames/char0");
   }
   if (testing::internal::IsSame<TypeParam, int>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "TypedTestWithNames/int_1");
+                 "TypedTestWithNames/int1");
   }
 }
 
@@ -315,13 +315,13 @@
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "CustomName/TypeParametrizedTestWithNames/p_char_0");
+                 "CustomName/TypeParametrizedTestWithNames/parChar0");
   }
   if (testing::internal::IsSame<TypeParam, int>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "CustomName/TypeParametrizedTestWithNames/p_int_1");
+                 "CustomName/TypeParametrizedTestWithNames/parInt1");
   }
 }
 
@@ -332,10 +332,10 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, char>::value) {
-      return std::string("p_char_") + ::testing::PrintToString(i);
+      return std::string("parChar") + ::testing::PrintToString(i);
     }
     if (testing::internal::IsSame<T, int>::value) {
-      return std::string("p_int_") + ::testing::PrintToString(i);
+      return std::string("parInt") + ::testing::PrintToString(i);
     }
   }
 };
