Revert "Add option for eliding property metadata from messages"

This reverts commit ca3674b7d5f76299138ca635fa9c02e01e0fdf76.

While there are savings, it ends up being to easy/common to run into issues with
AppStore validation since the selector usage now appears to be a possible match
for private apis vs. for selectors/properties in the generated code.
diff --git a/objectivec/DevTools/compile_testing_protos.sh b/objectivec/DevTools/compile_testing_protos.sh
index 613c63c..69c32f9 100755
--- a/objectivec/DevTools/compile_testing_protos.sh
+++ b/objectivec/DevTools/compile_testing_protos.sh
@@ -1,6 +1,8 @@
 #!/bin/bash -eu
 # Invoked by the Xcode projects to build the protos needed for the unittests.
 
+readonly OUTPUT_DIR="${PROJECT_DERIVED_FILE_DIR}/protos"
+
 # -----------------------------------------------------------------------------
 # Helper for bailing.
 die() {
@@ -9,27 +11,6 @@
 }
 
 # -----------------------------------------------------------------------------
-# Parameters.
-if (( $# > 1 )); then
-  die "Script takes only one parameter: $#"
-fi
-
-if (( $# == 1 )); then
-  case "$1" in
-    "--elide_message_metadata")
-      readonly ELIDE_MESSAGE_METADATA_OPTION="--objc_opt=elide_message_metadata"
-      readonly OUTPUT_DIR="${PROJECT_DERIVED_FILE_DIR}/elided/protos"
-      ;;
-    *)
-      die "Unknown option: $1"
-      ;;
-  esac
-else
-  readonly ELIDE_MESSAGE_METADATA_OPTION=""
-  readonly OUTPUT_DIR="${PROJECT_DERIVED_FILE_DIR}/normal/protos"
-fi
-
-# -----------------------------------------------------------------------------
 # What to do.
 case "${ACTION}" in
   "")
@@ -176,7 +157,6 @@
     --proto_path=src/google/protobuf/          \
     --proto_path=src                           \
     --experimental_allow_proto3_optional       \
-    ${ELIDE_MESSAGE_METADATA_OPTION}           \
     "$@"
 }
 
diff --git a/objectivec/GPBMessage_PackagePrivate.h b/objectivec/GPBMessage_PackagePrivate.h
index 2aa984b..ca10983 100644
--- a/objectivec/GPBMessage_PackagePrivate.h
+++ b/objectivec/GPBMessage_PackagePrivate.h
@@ -34,8 +34,6 @@
 
 #import "GPBMessage.h"
 
-#import "GPBUtilities_PackagePrivate.h"
-
 // TODO: Remove this import. Older generated code use the OSAtomic* apis,
 // so anyone that hasn't regenerated says building by having this. After
 // enough time has passed, this likely can be removed as folks should have
@@ -44,134 +42,6 @@
 
 #import "GPBBootstrap.h"
 
-#if defined(__LP64__) && __LP64__
-#define GPB_ASM_PTR " .quad "
-#define GPB_ASM_PTRSIZE " 8 "
-#define GPB_ASM_ONLY_LP64(x) x
-#define GPB_ALIGN_SIZE " 3 "
-#define GPB_DESCRIPTOR_METHOD_TYPE "@16@0:8"
-#else  // __LP64__
-#define GPB_ASM_PTR " .long "
-#define GPB_ASM_PTRSIZE " 4 "
-#define GPB_ASM_ONLY_LP64(x)
-#define GPB_ALIGN_SIZE " 2 "
-#define GPB_DESCRIPTOR_METHOD_TYPE "@8@0:4"
-#endif  // __LP64__
-
-#define GPB_MESSAGE_CLASS_NAME_RAW GPBMessage
-#define GPB_MESSAGE_CLASS_NAME GPBStringifySymbol(GPB_MESSAGE_CLASS_NAME_RAW)
-
-#if !__has_feature(objc_arc)
-#define GPB_CLASS_FLAGS " 0x00 "
-#define GPB_METACLASS_FLAGS " 0x01 "
-#else
-// 0x80 denotes that the class supports ARC.
-#define GPB_CLASS_FLAGS " 0x80 "
-#define GPB_METACLASS_FLAGS " 0x81 "
-#endif
-
-// This generates code equivalent to:
-// ```
-// @implementation _name_
-// + (GPBDescriptor *)descriptor {
-//      return _descriptorFunc_(self, _cmd);
-// }
-// @end
-// ```
-// We do this to avoid all of the @property metadata.
-// If we use `@dynamic` the compiler generates a lot of property data including
-// selectors and encoding strings. For large uses of protobufs, this can add
-// up to several megabytes of unused Objective-C metadata.
-// This inline class definition avoids the property data generation at the
-// cost of being a little ugly. This has been tested with both 32 and 64 bits
-// on intel and arm with Xcode 11.7 and Xcode 12.4.
-// We make cstring_literals be local definitions by starting them with "L".
-// https://ftp.gnu.org/old-gnu/Manuals/gas-2.9.1/html_chapter/as_5.html#SEC48
-// This keeps our symbols tables smaller, and is what the linker expects.
-// The linker in Xcode 12+ seems to be a bit more lenient about it, but the
-// Xcode 11 linker requires it, and will give a cryptic "malformed method list"
-// assertion if they are global.
-#define GPB_MESSAGE_SUBCLASS_IMPL(name, descriptorFunc)                        \
-  __asm__(                                                                     \
-    ".section __TEXT, __objc_classname, cstring_literals \n"                   \
-    "L_OBJC_CLASS_NAME_" GPBStringifySymbol(name) ": "                         \
-    "    .asciz \"" GPBStringifySymbol(name) "\" \n"                           \
-                                                                               \
-    ".ifndef L_GBPDescriptorMethodName \n"                                     \
-    ".section __TEXT, __objc_methname, cstring_literals \n"                    \
-    "L_GBPDescriptorMethodName: .asciz \"descriptor\" \n"                      \
-    ".endif \n"                                                                \
-                                                                               \
-    ".ifndef L_GPBDescriptorMethodType \n"                                     \
-    ".section __TEXT, __objc_methtype, cstring_literals \n"                    \
-    "L_GPBDescriptorMethodType: .asciz \"" GPB_DESCRIPTOR_METHOD_TYPE "\" \n"  \
-    ".endif \n"                                                                \
-                                                                               \
-    ".section __DATA,__objc_const, regular \n"                                 \
-    ".p2align" GPB_ALIGN_SIZE "\n"                                             \
-    "__OBJC_$_CLASS_METHODS_" GPBStringifySymbol(name) ": \n"                  \
-    ".long 3 *" GPB_ASM_PTRSIZE "\n"                                           \
-    ".long 0x1 \n"                                                             \
-    GPB_ASM_PTR "L_GBPDescriptorMethodName \n"                                 \
-    GPB_ASM_PTR "L_GPBDescriptorMethodType \n"                                 \
-    GPB_ASM_PTR "_" #descriptorFunc " \n"                                      \
-                                                                               \
-    ".section __DATA,__objc_const, regular \n"                                 \
-    ".p2align" GPB_ALIGN_SIZE "\n"                                             \
-    "__OBJC_METACLASS_RO_$_" GPBStringifySymbol(name) ": \n"                   \
-    ".long" GPB_METACLASS_FLAGS "\n"                                           \
-    ".long 5 *" GPB_ASM_PTRSIZE "\n"                                           \
-    ".long 5 *" GPB_ASM_PTRSIZE "\n"                                           \
-    GPB_ASM_ONLY_LP64(".space 4 \n")                                           \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "L_OBJC_CLASS_NAME_" GPBStringifySymbol(name) " \n"            \
-    GPB_ASM_PTR "__OBJC_$_CLASS_METHODS_" GPBStringifySymbol(name) " \n"       \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-                                                                               \
-    ".section __DATA,__objc_const, regular \n"                                 \
-    ".p2align" GPB_ALIGN_SIZE "\n"                                             \
-    "__OBJC_CLASS_RO_$_" GPBStringifySymbol(name) ": \n"                       \
-    ".long" GPB_CLASS_FLAGS "\n"                                               \
-    ".long" GPB_ASM_PTRSIZE "\n"                                               \
-    ".long" GPB_ASM_PTRSIZE "\n"                                               \
-    GPB_ASM_ONLY_LP64(".long 0 \n")                                            \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "L_OBJC_CLASS_NAME_" GPBStringifySymbol(name) " \n"            \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "0 \n"                                                         \
-                                                                               \
-    ".globl _OBJC_METACLASS_$_" GPBStringifySymbol(name) "\n"                  \
-    ".section __DATA,__objc_data, regular \n"                                  \
-    ".p2align" GPB_ALIGN_SIZE "\n"                                             \
-    "_OBJC_METACLASS_$_" GPBStringifySymbol(name) ": \n"                       \
-    GPB_ASM_PTR "_OBJC_METACLASS_$_NSObject \n"                                \
-    GPB_ASM_PTR "_OBJC_METACLASS_$_" GPB_MESSAGE_CLASS_NAME " \n"              \
-    GPB_ASM_PTR "__objc_empty_cache \n"                                        \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "__OBJC_METACLASS_RO_$_" GPBStringifySymbol(name) " \n"        \
-                                                                               \
-    ".globl _OBJC_CLASS_$_" GPBStringifySymbol(name) "\n"                      \
-    ".section __DATA,__objc_data, regular \n"                                  \
-    ".p2align" GPB_ALIGN_SIZE "\n"                                             \
-    "_OBJC_CLASS_$_" GPBStringifySymbol(name) ": \n"                           \
-    GPB_ASM_PTR "_OBJC_METACLASS_$_" GPBStringifySymbol(name) " \n"            \
-    GPB_ASM_PTR "_OBJC_CLASS_$_" GPB_MESSAGE_CLASS_NAME " \n"                  \
-    GPB_ASM_PTR "__objc_empty_cache \n"                                        \
-    GPB_ASM_PTR "0 \n"                                                         \
-    GPB_ASM_PTR "__OBJC_CLASS_RO_$_" GPBStringifySymbol(name) " \n"            \
-                                                                               \
-    ".section __DATA, __objc_classlist, regular, no_dead_strip \n"             \
-    ".p2align" GPB_ALIGN_SIZE "\n"                                             \
-    "_OBJC_LABEL_CLASS_$" GPBStringifySymbol(name) ": \n"                      \
-    GPB_ASM_PTR "_OBJC_CLASS_$_" GPBStringifySymbol(name) " \n"                \
-  )
-
 typedef struct GPBMessage_Storage {
   uint32_t _has_storage_[0];
 } GPBMessage_Storage;
diff --git a/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj
index 45997ec..365fdc3 100644
--- a/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj
+++ b/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj
@@ -22,67 +22,6 @@
 		8B4248BB1A8C256A00BC1EC6 /* GPBSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248BA1A8C256A00BC1EC6 /* GPBSwiftTests.swift */; };
 		8B4248D21A927E1500BC1EC6 /* GPBWellKnownTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248D01A927E1500BC1EC6 /* GPBWellKnownTypes.m */; };
 		8B4248DC1A92933A00BC1EC6 /* GPBWellKnownTypesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248DB1A92933A00BC1EC6 /* GPBWellKnownTypesTest.m */; };
-		8B6C2AE62682952200026204 /* golden_message in Resources */ = {isa = PBXBuildFile; fileRef = 8B210CCD159383D60032D72D /* golden_message */; };
-		8B6C2AE72682952200026204 /* text_format_extensions_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F4F53F89219CC4F2001EABF4 /* text_format_extensions_unittest_data.txt */; };
-		8B6C2AE82682952200026204 /* text_format_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F43C88CF191D77FC009E917D /* text_format_unittest_data.txt */; };
-		8B6C2AE92682952200026204 /* golden_packed_fields_message in Resources */ = {isa = PBXBuildFile; fileRef = 8B210CCF159386920032D72D /* golden_packed_fields_message */; };
-		8B6C2AEA2682952200026204 /* text_format_map_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F45E57C61AE6DC6A000B7D99 /* text_format_map_unittest_data.txt */; };
-		8B6C2AEC2682952200026204 /* GPBCodedInputStreamTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B69B0F94FDF800A0C422 /* GPBCodedInputStreamTests.m */; };
-		8B6C2AED2682952200026204 /* GPBCompileTest24.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE508206C06440071091A /* GPBCompileTest24.m */; };
-		8B6C2AEE2682952200026204 /* GPBCompileTest20.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE485206BF8AF0071091A /* GPBCompileTest20.m */; };
-		8B6C2AEF2682952200026204 /* GPBArrayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F401DC321A8E5C0200FCC765 /* GPBArrayTests.m */; };
-		8B6C2AF02682952200026204 /* GPBCompileTest10.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE48C206BF8B00071091A /* GPBCompileTest10.m */; };
-		8B6C2AF12682952200026204 /* GPBDictionaryTests+Int64.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D2F1AC06F10005A6198 /* GPBDictionaryTests+Int64.m */; };
-		8B6C2AF22682952200026204 /* GPBCompileTest22.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE48A206BF8B00071091A /* GPBCompileTest22.m */; };
-		8B6C2AF32682952200026204 /* GPBCompileTest08.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE47D206BF8AD0071091A /* GPBCompileTest08.m */; };
-		8B6C2AF42682952200026204 /* GPBCompileTest17.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE48D206BF8B00071091A /* GPBCompileTest17.m */; };
-		8B6C2AF52682952200026204 /* GPBDictionaryTests+UInt64.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D321AC06F10005A6198 /* GPBDictionaryTests+UInt64.m */; };
-		8B6C2AF62682952200026204 /* GPBCodedOuputStreamTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B69D0F94FDF800A0C422 /* GPBCodedOuputStreamTests.m */; };
-		8B6C2AF72682952200026204 /* GPBCompileTest23.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE487206BF8B00071091A /* GPBCompileTest23.m */; };
-		8B6C2AF82682952200026204 /* GPBMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6A30F94FDF800A0C422 /* GPBMessageTests.m */; };
-		8B6C2AF92682952200026204 /* GPBObjectiveCPlusPlusTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4B51B1D1BBC610700744318 /* GPBObjectiveCPlusPlusTest.mm */; };
-		8B6C2AFA2682952200026204 /* GPBCompileTest19.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE482206BF8AF0071091A /* GPBCompileTest19.m */; };
-		8B6C2AFB2682952200026204 /* GPBCompileTest06.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE492206BF8B10071091A /* GPBCompileTest06.m */; };
-		8B6C2AFC2682952200026204 /* GPBCompileTest12.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE490206BF8B10071091A /* GPBCompileTest12.m */; };
-		8B6C2AFD2682952200026204 /* GPBMessageTests+Serialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C7E1AAF62CD00531423 /* GPBMessageTests+Serialization.m */; };
-		8B6C2AFE2682952200026204 /* GPBCompileTest03.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE491206BF8B10071091A /* GPBCompileTest03.m */; };
-		8B6C2AFF2682952200026204 /* GPBCompileTest18.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE48E206BF8B10071091A /* GPBCompileTest18.m */; };
-		8B6C2B002682952200026204 /* GPBCompileTest13.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE483206BF8AF0071091A /* GPBCompileTest13.m */; };
-		8B6C2B012682952200026204 /* GPBCompileTest15.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE489206BF8B00071091A /* GPBCompileTest15.m */; };
-		8B6C2B022682952200026204 /* GPBCompileTest07.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE480206BF8AE0071091A /* GPBCompileTest07.m */; };
-		8B6C2B032682952200026204 /* GPBWellKnownTypesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248DB1A92933A00BC1EC6 /* GPBWellKnownTypesTest.m */; };
-		8B6C2B042682952200026204 /* GPBCompileTest21.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE486206BF8AF0071091A /* GPBCompileTest21.m */; };
-		8B6C2B052682952200026204 /* GPBCompileTest11.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE493206BF8B20071091A /* GPBCompileTest11.m */; };
-		8B6C2B062682952200026204 /* GPBUnittestProtos2.m in Sources */ = {isa = PBXBuildFile; fileRef = F4F8D8811D789FCE002CE128 /* GPBUnittestProtos2.m */; };
-		8B6C2B072682952200026204 /* GPBDescriptorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D1C1AB8822D005A6198 /* GPBDescriptorTests.m */; };
-		8B6C2B082682952200026204 /* GPBSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248BA1A8C256A00BC1EC6 /* GPBSwiftTests.swift */; };
-		8B6C2B092682952200026204 /* GPBCompileTest25.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE507206C06440071091A /* GPBCompileTest25.m */; };
-		8B6C2B0A2682952200026204 /* GPBExtensionRegistryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4584D7E1ECCB38900803AB6 /* GPBExtensionRegistryTest.m */; };
-		8B6C2B0B2682952200026204 /* GPBMessageTests+ClassNames.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFF9D1923AD582200E63E32 /* GPBMessageTests+ClassNames.m */; };
-		8B6C2B0C2682952200026204 /* GPBConcurrencyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5102DABB1891A052002037B6 /* GPBConcurrencyTests.m */; };
-		8B6C2B0D2682952200026204 /* GPBMessageTests+Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C741AADF7F500531423 /* GPBMessageTests+Runtime.m */; };
-		8B6C2B0E2682952200026204 /* GPBCompileTest02.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE481206BF8AE0071091A /* GPBCompileTest02.m */; };
-		8B6C2B0F2682952200026204 /* GPBDictionaryTests+Int32.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D2E1AC06F10005A6198 /* GPBDictionaryTests+Int32.m */; };
-		8B6C2B102682952200026204 /* GPBCompileTest05.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE47F206BF8AE0071091A /* GPBCompileTest05.m */; };
-		8B6C2B112682952200026204 /* GPBCompileTest14.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE48F206BF8B10071091A /* GPBCompileTest14.m */; };
-		8B6C2B122682952200026204 /* GPBTestUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6AC0F94FDF800A0C422 /* GPBTestUtilities.m */; };
-		8B6C2B132682952200026204 /* GPBCompileTest04.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE47E206BF8AE0071091A /* GPBCompileTest04.m */; };
-		8B6C2B142682952200026204 /* GPBCompileTest16.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE48B206BF8B00071091A /* GPBCompileTest16.m */; };
-		8B6C2B152682952200026204 /* GPBPerfTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F41C175C1833D3310064ED4D /* GPBPerfTests.m */; };
-		8B6C2B162682952200026204 /* GPBDictionaryTests+Bool.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D2D1AC06F10005A6198 /* GPBDictionaryTests+Bool.m */; };
-		8B6C2B172682952200026204 /* GPBMessageTests+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C821AAF6AB300531423 /* GPBMessageTests+Merge.m */; };
-		8B6C2B182682952200026204 /* GPBCompileTest01.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE488206BF8B00071091A /* GPBCompileTest01.m */; };
-		8B6C2B192682952200026204 /* GPBUnknownFieldSetTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6B80F94FDF900A0C422 /* GPBUnknownFieldSetTest.m */; };
-		8B6C2B1A2682952200026204 /* GPBDictionaryTests+String.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D301AC06F10005A6198 /* GPBDictionaryTests+String.m */; };
-		8B6C2B1B2682952200026204 /* GPBDictionaryTests+UInt32.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D311AC06F10005A6198 /* GPBDictionaryTests+UInt32.m */; };
-		8B6C2B1C2682952200026204 /* GPBCompileTest09.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE484206BF8AF0071091A /* GPBCompileTest09.m */; };
-		8B6C2B1D2682952200026204 /* GPBUtilitiesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6BA0F94FDF900A0C422 /* GPBUtilitiesTests.m */; };
-		8B6C2B1E2682952200026204 /* GPBDictionaryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C4B9E21E1D974F00D3B61D /* GPBDictionaryTests.m */; };
-		8B6C2B1F2682952200026204 /* GPBWireFormatTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6BC0F94FDF900A0C422 /* GPBWireFormatTests.m */; };
-		8B6C2B202682952200026204 /* GPBUnittestProtos.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD3981E14BE59D70081D629 /* GPBUnittestProtos.m */; };
-		8B6C2B212682952200026204 /* GPBARCUnittestProtos.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8B615C17DF7056002EE618 /* GPBARCUnittestProtos.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
-		8B6C2B232682952200026204 /* libProtocolBuffers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7461B52E0F94FAF800A0C422 /* libProtocolBuffers.a */; };
-		8B6C2B242682952200026204 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
 		8B79657B14992E3F002FFBFC /* GPBRootObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B79657914992E3E002FFBFC /* GPBRootObject.m */; };
 		8B8B615D17DF7056002EE618 /* GPBARCUnittestProtos.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8B615C17DF7056002EE618 /* GPBARCUnittestProtos.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		8B96157414C8C38C00A2AC0B /* GPBDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B96157314C8C38C00A2AC0B /* GPBDescriptor.m */; };
@@ -159,20 +98,6 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
-		8B6C2AE12682952200026204 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 7461B52D0F94FAF800A0C422;
-			remoteInfo = ProtocolBuffers;
-		};
-		8B6C2B442682966800026204 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 8B6C2B34268295BA00026204;
-			remoteInfo = "Compile Elided Unittest Protos";
-		};
 		8BBEA4BC147C729A00C4ADB7 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
@@ -234,8 +159,6 @@
 		8B4248DB1A92933A00BC1EC6 /* GPBWellKnownTypesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPBWellKnownTypesTest.m; sourceTree = "<group>"; };
 		8B42494C1A92A16600BC1EC6 /* duration.proto */ = {isa = PBXFileReference; lastKnownFileType = text; name = duration.proto; path = ../src/google/protobuf/duration.proto; sourceTree = "<group>"; };
 		8B42494D1A92A16600BC1EC6 /* timestamp.proto */ = {isa = PBXFileReference; lastKnownFileType = text; name = timestamp.proto; path = ../src/google/protobuf/timestamp.proto; sourceTree = "<group>"; };
-		8B6C2B282682952200026204 /* UnitTestsElidedProperties.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTestsElidedProperties.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		8B6C2B322682956000026204 /* compile_testing_protos.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = compile_testing_protos.sh; sourceTree = "<group>"; };
 		8B79657814992E3E002FFBFC /* GPBRootObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPBRootObject.h; sourceTree = "<group>"; };
 		8B79657914992E3E002FFBFC /* GPBRootObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPBRootObject.m; sourceTree = "<group>"; };
 		8B7E6A7414893DBA00F8884A /* unittest_custom_options.proto */ = {isa = PBXFileReference; lastKnownFileType = text; name = unittest_custom_options.proto; path = ../../src/google/protobuf/unittest_custom_options.proto; sourceTree = "<group>"; };
@@ -359,15 +282,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		8B6C2B222682952200026204 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8B6C2B232682952200026204 /* libProtocolBuffers.a in Frameworks */,
-				8B6C2B242682952200026204 /* Foundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8BBEA4A3147C727100C4ADB7 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -410,7 +324,6 @@
 				7461B52E0F94FAF800A0C422 /* libProtocolBuffers.a */,
 				8BBEA4A6147C727100C4ADB7 /* UnitTests.xctest */,
 				F4487C511A9F8E0200531423 /* libTestSingleSourceBuild.a */,
-				8B6C2B282682952200026204 /* UnitTestsElidedProperties.xctest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -418,7 +331,6 @@
 		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
 			isa = PBXGroup;
 			children = (
-				8B6C2B332682957100026204 /* DevTools */,
 				080E96DDFE201D6D7F000001 /* Core Source */,
 				7461B6940F94FDDD00A0C422 /* Tests */,
 				29B97323FDCFA39411CA2CEA /* Frameworks */,
@@ -613,14 +525,6 @@
 			path = Tests;
 			sourceTree = "<group>";
 		};
-		8B6C2B332682957100026204 /* DevTools */ = {
-			isa = PBXGroup;
-			children = (
-				8B6C2B322682956000026204 /* compile_testing_protos.sh */,
-			);
-			path = DevTools;
-			sourceTree = "<group>";
-		};
 		8BCF334414ED727300BC5317 /* Support */ = {
 			isa = PBXGroup;
 			children = (
@@ -661,28 +565,13 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXLegacyTarget section */
-		8B6C2B34268295BA00026204 /* Compile Elided Unittest Protos */ = {
-			isa = PBXLegacyTarget;
-			buildArgumentsString = "--elide_message_metadata";
-			buildConfigurationList = 8B6C2B35268295BA00026204 /* Build configuration list for PBXLegacyTarget "Compile Elided Unittest Protos" */;
-			buildPhases = (
-			);
-			buildToolPath = DevTools/compile_testing_protos.sh;
-			buildWorkingDirectory = "";
-			dependencies = (
-			);
-			name = "Compile Elided Unittest Protos";
-			passBuildSettingsInEnvironment = 1;
-			productName = "Compile Unittest Protos";
-		};
 		F45BBC141B0CE3C6002D064D /* Compile Unittest Protos */ = {
 			isa = PBXLegacyTarget;
-			buildArgumentsString = "";
+			buildArgumentsString = "$(ACTION)";
 			buildConfigurationList = F45BBC171B0CE3C6002D064D /* Build configuration list for PBXLegacyTarget "Compile Unittest Protos" */;
 			buildPhases = (
 			);
 			buildToolPath = DevTools/compile_testing_protos.sh;
-			buildWorkingDirectory = "";
 			dependencies = (
 			);
 			name = "Compile Unittest Protos";
@@ -709,26 +598,6 @@
 			productReference = 7461B52E0F94FAF800A0C422 /* libProtocolBuffers.a */;
 			productType = "com.apple.product-type.library.static";
 		};
-		8B6C2ADF2682952200026204 /* UnitTestsElidedProperties */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 8B6C2B252682952200026204 /* Build configuration list for PBXNativeTarget "UnitTestsElidedProperties" */;
-			buildPhases = (
-				8B6C2AE42682952200026204 /* Script: Check Runtime Stamps */,
-				8B6C2AE52682952200026204 /* Resources */,
-				8B6C2AEB2682952200026204 /* Sources */,
-				8B6C2B222682952200026204 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				8B6C2AE02682952200026204 /* PBXTargetDependency */,
-				8B6C2B452682966800026204 /* PBXTargetDependency */,
-			);
-			name = UnitTestsElidedProperties;
-			productName = UnitTests;
-			productReference = 8B6C2B282682952200026204 /* UnitTestsElidedProperties.xctest */;
-			productType = "com.apple.product-type.bundle.unit-test";
-		};
 		8BBEA4A5147C727100C4ADB7 /* UnitTests */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 8BBEA4BA147C728600C4ADB7 /* Build configuration list for PBXNativeTarget "UnitTests" */;
@@ -801,25 +670,11 @@
 				8BBEA4A5147C727100C4ADB7 /* UnitTests */,
 				F4487C381A9F8E0200531423 /* TestSingleSourceBuild */,
 				F45BBC141B0CE3C6002D064D /* Compile Unittest Protos */,
-				8B6C2ADF2682952200026204 /* UnitTestsElidedProperties */,
-				8B6C2B34268295BA00026204 /* Compile Elided Unittest Protos */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
-		8B6C2AE52682952200026204 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8B6C2AE62682952200026204 /* golden_message in Resources */,
-				8B6C2AE72682952200026204 /* text_format_extensions_unittest_data.txt in Resources */,
-				8B6C2AE82682952200026204 /* text_format_unittest_data.txt in Resources */,
-				8B6C2AE92682952200026204 /* golden_packed_fields_message in Resources */,
-				8B6C2AEA2682952200026204 /* text_format_map_unittest_data.txt in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8BBEA4A1147C727100C4ADB7 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -835,21 +690,6 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		8B6C2AE42682952200026204 /* Script: Check Runtime Stamps */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = "Script: Check Runtime Stamps";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "set -eu\nexec \"${SOURCE_ROOT}/DevTools/check_version_stamps.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
 		F4B62A781AF91F6000AFCEDC /* Script: Check Runtime Stamps */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -899,67 +739,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		8B6C2AEB2682952200026204 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8B6C2AEC2682952200026204 /* GPBCodedInputStreamTests.m in Sources */,
-				8B6C2AED2682952200026204 /* GPBCompileTest24.m in Sources */,
-				8B6C2AEE2682952200026204 /* GPBCompileTest20.m in Sources */,
-				8B6C2AEF2682952200026204 /* GPBArrayTests.m in Sources */,
-				8B6C2AF02682952200026204 /* GPBCompileTest10.m in Sources */,
-				8B6C2AF12682952200026204 /* GPBDictionaryTests+Int64.m in Sources */,
-				8B6C2AF22682952200026204 /* GPBCompileTest22.m in Sources */,
-				8B6C2AF32682952200026204 /* GPBCompileTest08.m in Sources */,
-				8B6C2AF42682952200026204 /* GPBCompileTest17.m in Sources */,
-				8B6C2AF52682952200026204 /* GPBDictionaryTests+UInt64.m in Sources */,
-				8B6C2AF62682952200026204 /* GPBCodedOuputStreamTests.m in Sources */,
-				8B6C2AF72682952200026204 /* GPBCompileTest23.m in Sources */,
-				8B6C2AF82682952200026204 /* GPBMessageTests.m in Sources */,
-				8B6C2AF92682952200026204 /* GPBObjectiveCPlusPlusTest.mm in Sources */,
-				8B6C2AFA2682952200026204 /* GPBCompileTest19.m in Sources */,
-				8B6C2AFB2682952200026204 /* GPBCompileTest06.m in Sources */,
-				8B6C2AFC2682952200026204 /* GPBCompileTest12.m in Sources */,
-				8B6C2AFD2682952200026204 /* GPBMessageTests+Serialization.m in Sources */,
-				8B6C2AFE2682952200026204 /* GPBCompileTest03.m in Sources */,
-				8B6C2AFF2682952200026204 /* GPBCompileTest18.m in Sources */,
-				8B6C2B002682952200026204 /* GPBCompileTest13.m in Sources */,
-				8B6C2B012682952200026204 /* GPBCompileTest15.m in Sources */,
-				8B6C2B022682952200026204 /* GPBCompileTest07.m in Sources */,
-				8B6C2B032682952200026204 /* GPBWellKnownTypesTest.m in Sources */,
-				8B6C2B042682952200026204 /* GPBCompileTest21.m in Sources */,
-				8B6C2B052682952200026204 /* GPBCompileTest11.m in Sources */,
-				8B6C2B062682952200026204 /* GPBUnittestProtos2.m in Sources */,
-				8B6C2B072682952200026204 /* GPBDescriptorTests.m in Sources */,
-				8B6C2B082682952200026204 /* GPBSwiftTests.swift in Sources */,
-				8B6C2B092682952200026204 /* GPBCompileTest25.m in Sources */,
-				8B6C2B0A2682952200026204 /* GPBExtensionRegistryTest.m in Sources */,
-				8B6C2B0B2682952200026204 /* GPBMessageTests+ClassNames.m in Sources */,
-				8B6C2B0C2682952200026204 /* GPBConcurrencyTests.m in Sources */,
-				8B6C2B0D2682952200026204 /* GPBMessageTests+Runtime.m in Sources */,
-				8B6C2B0E2682952200026204 /* GPBCompileTest02.m in Sources */,
-				8B6C2B0F2682952200026204 /* GPBDictionaryTests+Int32.m in Sources */,
-				8B6C2B102682952200026204 /* GPBCompileTest05.m in Sources */,
-				8B6C2B112682952200026204 /* GPBCompileTest14.m in Sources */,
-				8B6C2B122682952200026204 /* GPBTestUtilities.m in Sources */,
-				8B6C2B132682952200026204 /* GPBCompileTest04.m in Sources */,
-				8B6C2B142682952200026204 /* GPBCompileTest16.m in Sources */,
-				8B6C2B152682952200026204 /* GPBPerfTests.m in Sources */,
-				8B6C2B162682952200026204 /* GPBDictionaryTests+Bool.m in Sources */,
-				8B6C2B172682952200026204 /* GPBMessageTests+Merge.m in Sources */,
-				8B6C2B182682952200026204 /* GPBCompileTest01.m in Sources */,
-				8B6C2B192682952200026204 /* GPBUnknownFieldSetTest.m in Sources */,
-				8B6C2B1A2682952200026204 /* GPBDictionaryTests+String.m in Sources */,
-				8B6C2B1B2682952200026204 /* GPBDictionaryTests+UInt32.m in Sources */,
-				8B6C2B1C2682952200026204 /* GPBCompileTest09.m in Sources */,
-				8B6C2B1D2682952200026204 /* GPBUtilitiesTests.m in Sources */,
-				8B6C2B1E2682952200026204 /* GPBDictionaryTests.m in Sources */,
-				8B6C2B1F2682952200026204 /* GPBWireFormatTests.m in Sources */,
-				8B6C2B202682952200026204 /* GPBUnittestProtos.m in Sources */,
-				8B6C2B212682952200026204 /* GPBARCUnittestProtos.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8BBEA4A2147C727100C4ADB7 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1032,16 +811,6 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
-		8B6C2AE02682952200026204 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 7461B52D0F94FAF800A0C422 /* ProtocolBuffers */;
-			targetProxy = 8B6C2AE12682952200026204 /* PBXContainerItemProxy */;
-		};
-		8B6C2B452682966800026204 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 8B6C2B34268295BA00026204 /* Compile Elided Unittest Protos */;
-			targetProxy = 8B6C2B442682966800026204 /* PBXContainerItemProxy */;
-		};
 		8BBEA4BD147C729A00C4ADB7 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 7461B52D0F94FAF800A0C422 /* ProtocolBuffers */;
@@ -1075,65 +844,6 @@
 			};
 			name = Release;
 		};
-		8B6C2B262682952200026204 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				COMBINE_HIDPI_IMAGES = YES;
-				INFOPLIST_FILE = "Tests/UnitTests-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
-				OTHER_LDFLAGS = "-ObjC";
-				PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:identifier}";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-				SWIFT_VERSION = 4.0;
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/elided/protos $(SRCROOT)";
-				WARNING_CFLAGS = (
-					"$(inherited)",
-					"-Wno-documentation-unknown-command",
-					"-Wno-reserved-id-macro",
-					"-Wno-direct-ivar-access",
-				);
-			};
-			name = Debug;
-		};
-		8B6C2B272682952200026204 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				COMBINE_HIDPI_IMAGES = YES;
-				INFOPLIST_FILE = "Tests/UnitTests-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
-				OTHER_LDFLAGS = "-ObjC";
-				PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:identifier}";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
-				SWIFT_VERSION = 4.0;
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/elided/protos $(SRCROOT)";
-				WARNING_CFLAGS = (
-					"$(inherited)",
-					"-Wno-documentation-unknown-command",
-					"-Wno-reserved-id-macro",
-					"-Wno-direct-ivar-access",
-				);
-			};
-			name = Release;
-		};
-		8B6C2B36268295BA00026204 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-			};
-			name = Debug;
-		};
-		8B6C2B37268295BA00026204 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-			};
-			name = Release;
-		};
 		8BBEA4A7147C727100C4ADB7 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -1148,7 +858,7 @@
 				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 4.0;
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/normal/protos $(SRCROOT)";
+				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/protos $(SRCROOT)";
 				WARNING_CFLAGS = (
 					"$(inherited)",
 					"-Wno-documentation-unknown-command",
@@ -1171,7 +881,7 @@
 				PRODUCT_NAME = UnitTests;
 				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
 				SWIFT_VERSION = 4.0;
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/normal/protos $(SRCROOT)";
+				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/protos $(SRCROOT)";
 				WARNING_CFLAGS = (
 					"$(inherited)",
 					"-Wno-documentation-unknown-command",
@@ -1344,12 +1054,14 @@
 		F45BBC151B0CE3C6002D064D /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = YES;
 			};
 			name = Debug;
 		};
 		F45BBC161B0CE3C6002D064D /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = YES;
 			};
 			name = Release;
 		};
@@ -1365,24 +1077,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		8B6C2B252682952200026204 /* Build configuration list for PBXNativeTarget "UnitTestsElidedProperties" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				8B6C2B262682952200026204 /* Debug */,
-				8B6C2B272682952200026204 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		8B6C2B35268295BA00026204 /* Build configuration list for PBXLegacyTarget "Compile Elided Unittest Protos" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				8B6C2B36268295BA00026204 /* Debug */,
-				8B6C2B37268295BA00026204 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 		8BBEA4BA147C728600C4ADB7 /* Build configuration list for PBXNativeTarget "UnitTests" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
diff --git a/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme b/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme
index 0a8ac1c..6653a1b 100644
--- a/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme
+++ b/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme
@@ -267,276 +267,6 @@
                   Identifier = "GPBUInt64UInt64DictionaryTests">
                </Test>
                <Test
-                  Identifier = "MessageClassNameTests">
-               </Test>
-               <Test
-                  Identifier = "MessageMergeTests">
-               </Test>
-               <Test
-                  Identifier = "MessageRuntimeTests">
-               </Test>
-               <Test
-                  Identifier = "MessageSerializationTests">
-               </Test>
-               <Test
-                  Identifier = "MessageTests">
-               </Test>
-               <Test
-                  Identifier = "UnknownFieldSetTest">
-               </Test>
-               <Test
-                  Identifier = "UtilitiesTests">
-               </Test>
-               <Test
-                  Identifier = "WellKnownTypesTest">
-               </Test>
-               <Test
-                  Identifier = "WireFormatTests">
-               </Test>
-            </SkippedTests>
-         </TestableReference>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "8B6C2ADF2682952200026204"
-               BuildableName = "UnitTestsElidedProperties.xctest"
-               BlueprintName = "UnitTestsElidedProperties"
-               ReferencedContainer = "container:ProtocolBuffers_OSX.xcodeproj">
-            </BuildableReference>
-            <SkippedTests>
-               <Test
-                  Identifier = "CodedInputStreamTests">
-               </Test>
-               <Test
-                  Identifier = "CodedOutputStreamTests">
-               </Test>
-               <Test
-                  Identifier = "ConcurrencyTests">
-               </Test>
-               <Test
-                  Identifier = "DescriptorTests">
-               </Test>
-               <Test
-                  Identifier = "GPBAutocreatedArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBAutocreatedDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolBoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolDoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolFloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolUInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolUInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBridgeTests">
-               </Test>
-               <Test
-                  Identifier = "GPBDoubleArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBEnumArrayCustomTests">
-               </Test>
-               <Test
-                  Identifier = "GPBEnumArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBExtensionRegistryTest">
-               </Test>
-               <Test
-                  Identifier = "GPBFloatArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBObjectiveCPlusPlusTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringBoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringDoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringEnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringEnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringFloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringUInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringUInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBTestCase">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "MessageClassNameTests">
-               </Test>
-               <Test
                   Identifier = "MessageMergeTests">
                </Test>
                <Test
@@ -563,6 +293,8 @@
             </SkippedTests>
          </TestableReference>
       </Testables>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Release"
@@ -583,6 +315,8 @@
             ReferencedContainer = "container:ProtocolBuffers_OSX.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme b/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme
index 4c79211..328771b 100644
--- a/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme
+++ b/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme
@@ -54,17 +54,8 @@
       buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      codeCoverageEnabled = "YES">
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "7461B52D0F94FAF800A0C422"
-            BuildableName = "libProtocolBuffers.a"
-            BlueprintName = "ProtocolBuffers"
-            ReferencedContainer = "container:ProtocolBuffers_OSX.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
+      codeCoverageEnabled = "YES"
+      shouldUseLaunchSchemeArgsEnv = "YES">
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -81,22 +72,18 @@
                </Test>
             </SkippedTests>
          </TestableReference>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "8B6C2ADF2682952200026204"
-               BuildableName = "UnitTestsElidedProperties.xctest"
-               BlueprintName = "UnitTestsElidedProperties"
-               ReferencedContainer = "container:ProtocolBuffers_OSX.xcodeproj">
-            </BuildableReference>
-            <SkippedTests>
-               <Test
-                  Identifier = "PerfTests">
-               </Test>
-            </SkippedTests>
-         </TestableReference>
       </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "7461B52D0F94FAF800A0C422"
+            BuildableName = "libProtocolBuffers.a"
+            BlueprintName = "ProtocolBuffers"
+            ReferencedContainer = "container:ProtocolBuffers_OSX.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Debug"
@@ -117,6 +104,8 @@
             ReferencedContainer = "container:ProtocolBuffers_OSX.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj
index 8c1706e..03e0580 100644
--- a/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj
+++ b/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj
@@ -22,68 +22,6 @@
 		8B4248B41A8BD96E00BC1EC6 /* GPBSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248B31A8BD96E00BC1EC6 /* GPBSwiftTests.swift */; };
 		8B4248E41A929C8900BC1EC6 /* GPBWellKnownTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248E21A929C8900BC1EC6 /* GPBWellKnownTypes.m */; };
 		8B4248E61A929C9900BC1EC6 /* GPBWellKnownTypesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248E51A929C9900BC1EC6 /* GPBWellKnownTypesTest.m */; };
-		8B6C2B772682A55300026204 /* golden_message in Resources */ = {isa = PBXBuildFile; fileRef = 8B210CCD159383D60032D72D /* golden_message */; };
-		8B6C2B782682A55300026204 /* text_format_extensions_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F4F53F8B219CC5DF001EABF4 /* text_format_extensions_unittest_data.txt */; };
-		8B6C2B792682A55300026204 /* text_format_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F43C88CF191D77FC009E917D /* text_format_unittest_data.txt */; };
-		8B6C2B7A2682A55300026204 /* golden_packed_fields_message in Resources */ = {isa = PBXBuildFile; fileRef = 8B210CCF159386920032D72D /* golden_packed_fields_message */; };
-		8B6C2B7B2682A55300026204 /* text_format_map_unittest_data.txt in Resources */ = {isa = PBXBuildFile; fileRef = F45E57C81AE6DC98000B7D99 /* text_format_map_unittest_data.txt */; };
-		8B6C2B7D2682A55300026204 /* GPBCodedInputStreamTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B69B0F94FDF800A0C422 /* GPBCodedInputStreamTests.m */; };
-		8B6C2B7E2682A55300026204 /* GPBCompileTest24.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE50E206C06880071091A /* GPBCompileTest24.m */; };
-		8B6C2B7F2682A55300026204 /* GPBCompileTest20.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4CA206BF9170071091A /* GPBCompileTest20.m */; };
-		8B6C2B802682A55300026204 /* GPBArrayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F401DC341A8E5C6F00FCC765 /* GPBArrayTests.m */; };
-		8B6C2B812682A55300026204 /* GPBCompileTest10.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D1206BF9180071091A /* GPBCompileTest10.m */; };
-		8B6C2B822682A55300026204 /* GPBDictionaryTests+Int64.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D3D1AC06F31005A6198 /* GPBDictionaryTests+Int64.m */; };
-		8B6C2B832682A55300026204 /* GPBCompileTest22.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4CF206BF9170071091A /* GPBCompileTest22.m */; };
-		8B6C2B842682A55300026204 /* GPBCompileTest08.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C2206BF9160071091A /* GPBCompileTest08.m */; };
-		8B6C2B852682A55300026204 /* GPBCompileTest17.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D2206BF9180071091A /* GPBCompileTest17.m */; };
-		8B6C2B862682A55300026204 /* GPBDictionaryTests+UInt64.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D401AC06F31005A6198 /* GPBDictionaryTests+UInt64.m */; };
-		8B6C2B872682A55300026204 /* GPBCodedOuputStreamTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B69D0F94FDF800A0C422 /* GPBCodedOuputStreamTests.m */; };
-		8B6C2B882682A55300026204 /* GPBCompileTest23.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4CC206BF9170071091A /* GPBCompileTest23.m */; };
-		8B6C2B892682A55300026204 /* GPBMessageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6A30F94FDF800A0C422 /* GPBMessageTests.m */; };
-		8B6C2B8A2682A55300026204 /* GPBMessageTests+Serialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C801AAF62FC00531423 /* GPBMessageTests+Serialization.m */; };
-		8B6C2B8B2682A55300026204 /* GPBCompileTest19.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C7206BF9170071091A /* GPBCompileTest19.m */; };
-		8B6C2B8C2682A55300026204 /* GPBCompileTest06.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D7206BF9190071091A /* GPBCompileTest06.m */; };
-		8B6C2B8D2682A55300026204 /* GPBCompileTest12.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D5206BF9180071091A /* GPBCompileTest12.m */; };
-		8B6C2B8E2682A55300026204 /* GPBWellKnownTypesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248E51A929C9900BC1EC6 /* GPBWellKnownTypesTest.m */; };
-		8B6C2B8F2682A55300026204 /* GPBCompileTest03.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D6206BF9190071091A /* GPBCompileTest03.m */; };
-		8B6C2B902682A55300026204 /* GPBCompileTest18.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D3206BF9180071091A /* GPBCompileTest18.m */; };
-		8B6C2B912682A55300026204 /* GPBCompileTest13.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C8206BF9170071091A /* GPBCompileTest13.m */; };
-		8B6C2B922682A55300026204 /* GPBCompileTest15.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4CE206BF9170071091A /* GPBCompileTest15.m */; };
-		8B6C2B932682A55300026204 /* GPBCompileTest07.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C5206BF9170071091A /* GPBCompileTest07.m */; };
-		8B6C2B942682A55300026204 /* GPBDescriptorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D1E1AB88243005A6198 /* GPBDescriptorTests.m */; };
-		8B6C2B952682A55300026204 /* GPBCompileTest21.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4CB206BF9170071091A /* GPBCompileTest21.m */; };
-		8B6C2B962682A55300026204 /* GPBCompileTest11.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D8206BF9190071091A /* GPBCompileTest11.m */; };
-		8B6C2B972682A55300026204 /* GPBUnittestProtos2.m in Sources */ = {isa = PBXBuildFile; fileRef = F4F8D8841D78A186002CE128 /* GPBUnittestProtos2.m */; };
-		8B6C2B982682A55300026204 /* GPBObjectiveCPlusPlusTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4B51B1B1BBC5C7100744318 /* GPBObjectiveCPlusPlusTest.mm */; };
-		8B6C2B992682A55300026204 /* GPBSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B4248B31A8BD96E00BC1EC6 /* GPBSwiftTests.swift */; };
-		8B6C2B9A2682A55300026204 /* GPBCompileTest25.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE50D206C06880071091A /* GPBCompileTest25.m */; };
-		8B6C2B9B2682A55300026204 /* GPBExtensionRegistryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4584D801ECCB39E00803AB6 /* GPBExtensionRegistryTest.m */; };
-		8B6C2B9C2682A55300026204 /* GPBMessageTests+ClassNames.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFF9D1B23AD593B00E63E32 /* GPBMessageTests+ClassNames.m */; };
-		8B6C2B9D2682A55300026204 /* GPBConcurrencyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5102DABB1891A052002037B6 /* GPBConcurrencyTests.m */; };
-		8B6C2B9E2682A55300026204 /* GPBMessageTests+Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C761AADF84900531423 /* GPBMessageTests+Runtime.m */; };
-		8B6C2B9F2682A55300026204 /* GPBCompileTest02.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C6206BF9170071091A /* GPBCompileTest02.m */; };
-		8B6C2BA02682A55300026204 /* GPBDictionaryTests+Int32.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D3C1AC06F31005A6198 /* GPBDictionaryTests+Int32.m */; };
-		8B6C2BA12682A55300026204 /* GPBCompileTest05.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C4206BF9160071091A /* GPBCompileTest05.m */; };
-		8B6C2BA22682A55300026204 /* GPBCompileTest14.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D4206BF9180071091A /* GPBCompileTest14.m */; };
-		8B6C2BA32682A55300026204 /* GPBTestUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6AC0F94FDF800A0C422 /* GPBTestUtilities.m */; };
-		8B6C2BA42682A55300026204 /* GPBCompileTest04.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C3206BF9160071091A /* GPBCompileTest04.m */; };
-		8B6C2BA52682A55300026204 /* GPBCompileTest16.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4D0206BF9180071091A /* GPBCompileTest16.m */; };
-		8B6C2BA62682A55300026204 /* GPBPerfTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F41C175C1833D3310064ED4D /* GPBPerfTests.m */; };
-		8B6C2BA72682A55300026204 /* GPBDictionaryTests+Bool.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D3B1AC06F31005A6198 /* GPBDictionaryTests+Bool.m */; };
-		8B6C2BA82682A55300026204 /* GPBMessageTests+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = F4487C841AAF6AC500531423 /* GPBMessageTests+Merge.m */; };
-		8B6C2BA92682A55300026204 /* GPBCompileTest01.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4CD206BF9170071091A /* GPBCompileTest01.m */; };
-		8B6C2BAA2682A55300026204 /* GPBUnknownFieldSetTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6B80F94FDF900A0C422 /* GPBUnknownFieldSetTest.m */; };
-		8B6C2BAB2682A55300026204 /* GPBDictionaryTests+String.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D3E1AC06F31005A6198 /* GPBDictionaryTests+String.m */; };
-		8B6C2BAC2682A55300026204 /* GPBDictionaryTests+UInt32.m in Sources */ = {isa = PBXBuildFile; fileRef = F4353D3F1AC06F31005A6198 /* GPBDictionaryTests+UInt32.m */; };
-		8B6C2BAD2682A55300026204 /* GPBCompileTest09.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EE4C9206BF9170071091A /* GPBCompileTest09.m */; };
-		8B6C2BAE2682A55300026204 /* GPBUtilitiesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6BA0F94FDF900A0C422 /* GPBUtilitiesTests.m */; };
-		8B6C2BAF2682A55300026204 /* GPBDictionaryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C4B9E51E1D97BB00D3B61D /* GPBDictionaryTests.m */; };
-		8B6C2BB02682A55300026204 /* GPBWireFormatTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7461B6BC0F94FDF900A0C422 /* GPBWireFormatTests.m */; };
-		8B6C2BB12682A55300026204 /* GPBUnittestProtos.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD3981E14BE59D70081D629 /* GPBUnittestProtos.m */; };
-		8B6C2BB22682A55300026204 /* GPBARCUnittestProtos.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8B615C17DF7056002EE618 /* GPBARCUnittestProtos.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
-		8B6C2BB42682A55300026204 /* libProtocolBuffers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7461B52E0F94FAF800A0C422 /* libProtocolBuffers.a */; };
-		8B6C2BB52682A55300026204 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A5E9F1831913D00A9D33B /* UIKit.framework */; };
-		8B6C2BB62682A55300026204 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
 		8B79657B14992E3F002FFBFC /* GPBRootObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B79657914992E3E002FFBFC /* GPBRootObject.m */; };
 		8B8B615D17DF7056002EE618 /* GPBARCUnittestProtos.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8B615C17DF7056002EE618 /* GPBARCUnittestProtos.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		8B96157414C8C38C00A2AC0B /* GPBDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B96157314C8C38C00A2AC0B /* GPBDescriptor.m */; };
@@ -161,20 +99,6 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
-		8B6C2B722682A55300026204 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 7461B52D0F94FAF800A0C422;
-			remoteInfo = ProtocolBuffers;
-		};
-		8B6C2BCC2682A59300026204 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 8B6C2BC42682A57600026204;
-			remoteInfo = "Compile Elided Unittest Protos";
-		};
 		8BBEA4BC147C729A00C4ADB7 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
@@ -236,8 +160,6 @@
 		8B4248E51A929C9900BC1EC6 /* GPBWellKnownTypesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPBWellKnownTypesTest.m; sourceTree = "<group>"; };
 		8B4249481A92A02300BC1EC6 /* timestamp.proto */ = {isa = PBXFileReference; lastKnownFileType = text; name = timestamp.proto; path = ../src/google/protobuf/timestamp.proto; sourceTree = "<group>"; };
 		8B42494A1A92A0BA00BC1EC6 /* duration.proto */ = {isa = PBXFileReference; lastKnownFileType = text; name = duration.proto; path = ../src/google/protobuf/duration.proto; sourceTree = "<group>"; };
-		8B6C2B6E2682A53800026204 /* compile_testing_protos.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = compile_testing_protos.sh; sourceTree = "<group>"; };
-		8B6C2BBA2682A55300026204 /* UnitTestsElidedProperties.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTestsElidedProperties.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		8B79657814992E3E002FFBFC /* GPBRootObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPBRootObject.h; sourceTree = "<group>"; };
 		8B79657914992E3E002FFBFC /* GPBRootObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPBRootObject.m; sourceTree = "<group>"; };
 		8B7E6A7414893DBA00F8884A /* unittest_custom_options.proto */ = {isa = PBXFileReference; lastKnownFileType = text; name = unittest_custom_options.proto; path = ../../src/google/protobuf/unittest_custom_options.proto; sourceTree = "<group>"; };
@@ -363,16 +285,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		8B6C2BB32682A55300026204 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8B6C2BB42682A55300026204 /* libProtocolBuffers.a in Frameworks */,
-				8B6C2BB52682A55300026204 /* UIKit.framework in Frameworks */,
-				8B6C2BB62682A55300026204 /* Foundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8BBEA4A3147C727100C4ADB7 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -416,7 +328,6 @@
 				7461B52E0F94FAF800A0C422 /* libProtocolBuffers.a */,
 				8BBEA4A6147C727100C4ADB7 /* UnitTests.xctest */,
 				F4487C6E1A9F8F8100531423 /* libTestSingleSourceBuild.a */,
-				8B6C2BBA2682A55300026204 /* UnitTestsElidedProperties.xctest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -424,7 +335,6 @@
 		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
 			isa = PBXGroup;
 			children = (
-				8B6C2B6A2682A53800026204 /* DevTools */,
 				080E96DDFE201D6D7F000001 /* Core Source */,
 				7461B6940F94FDDD00A0C422 /* Tests */,
 				29B97323FDCFA39411CA2CEA /* Frameworks */,
@@ -621,14 +531,6 @@
 			path = Tests;
 			sourceTree = "<group>";
 		};
-		8B6C2B6A2682A53800026204 /* DevTools */ = {
-			isa = PBXGroup;
-			children = (
-				8B6C2B6E2682A53800026204 /* compile_testing_protos.sh */,
-			);
-			path = DevTools;
-			sourceTree = "<group>";
-		};
 		8BCF334414ED727300BC5317 /* Support */ = {
 			isa = PBXGroup;
 			children = (
@@ -669,23 +571,9 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXLegacyTarget section */
-		8B6C2BC42682A57600026204 /* Compile Elided Unittest Protos */ = {
-			isa = PBXLegacyTarget;
-			buildArgumentsString = "--elide_message_metadata";
-			buildConfigurationList = 8B6C2BC52682A57600026204 /* Build configuration list for PBXLegacyTarget "Compile Elided Unittest Protos" */;
-			buildPhases = (
-			);
-			buildToolPath = DevTools/compile_testing_protos.sh;
-			buildWorkingDirectory = "";
-			dependencies = (
-			);
-			name = "Compile Elided Unittest Protos";
-			passBuildSettingsInEnvironment = 1;
-			productName = "Compile Unittest Protos";
-		};
 		F45BBC0E1B0CDB50002D064D /* Compile Unittest Protos */ = {
 			isa = PBXLegacyTarget;
-			buildArgumentsString = "";
+			buildArgumentsString = "$(ACTION)";
 			buildConfigurationList = F45BBC111B0CDB50002D064D /* Build configuration list for PBXLegacyTarget "Compile Unittest Protos" */;
 			buildPhases = (
 			);
@@ -717,26 +605,6 @@
 			productReference = 7461B52E0F94FAF800A0C422 /* libProtocolBuffers.a */;
 			productType = "com.apple.product-type.library.static";
 		};
-		8B6C2B702682A55300026204 /* UnitTestsElidedProperties */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 8B6C2BB72682A55300026204 /* Build configuration list for PBXNativeTarget "UnitTestsElidedProperties" */;
-			buildPhases = (
-				8B6C2B752682A55300026204 /* Script: Check Runtime Stamps */,
-				8B6C2B762682A55300026204 /* Resources */,
-				8B6C2B7C2682A55300026204 /* Sources */,
-				8B6C2BB32682A55300026204 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				8B6C2B712682A55300026204 /* PBXTargetDependency */,
-				8B6C2BCD2682A59300026204 /* PBXTargetDependency */,
-			);
-			name = UnitTestsElidedProperties;
-			productName = UnitTests;
-			productReference = 8B6C2BBA2682A55300026204 /* UnitTestsElidedProperties.xctest */;
-			productType = "com.apple.product-type.bundle.unit-test";
-		};
 		8BBEA4A5147C727100C4ADB7 /* UnitTests */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 8BBEA4BA147C728600C4ADB7 /* Build configuration list for PBXNativeTarget "UnitTests" */;
@@ -809,25 +677,11 @@
 				8BBEA4A5147C727100C4ADB7 /* UnitTests */,
 				F4487C551A9F8F8100531423 /* TestSingleSourceBuild */,
 				F45BBC0E1B0CDB50002D064D /* Compile Unittest Protos */,
-				8B6C2B702682A55300026204 /* UnitTestsElidedProperties */,
-				8B6C2BC42682A57600026204 /* Compile Elided Unittest Protos */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
-		8B6C2B762682A55300026204 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8B6C2B772682A55300026204 /* golden_message in Resources */,
-				8B6C2B782682A55300026204 /* text_format_extensions_unittest_data.txt in Resources */,
-				8B6C2B792682A55300026204 /* text_format_unittest_data.txt in Resources */,
-				8B6C2B7A2682A55300026204 /* golden_packed_fields_message in Resources */,
-				8B6C2B7B2682A55300026204 /* text_format_map_unittest_data.txt in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8BBEA4A1147C727100C4ADB7 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -843,21 +697,6 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		8B6C2B752682A55300026204 /* Script: Check Runtime Stamps */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = "Script: Check Runtime Stamps";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "set -eu\nexec \"${SOURCE_ROOT}/DevTools/check_version_stamps.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
 		F4B62A791AF91F7500AFCEDC /* Script: Check Runtime Stamps */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -907,67 +746,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		8B6C2B7C2682A55300026204 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8B6C2B7D2682A55300026204 /* GPBCodedInputStreamTests.m in Sources */,
-				8B6C2B7E2682A55300026204 /* GPBCompileTest24.m in Sources */,
-				8B6C2B7F2682A55300026204 /* GPBCompileTest20.m in Sources */,
-				8B6C2B802682A55300026204 /* GPBArrayTests.m in Sources */,
-				8B6C2B812682A55300026204 /* GPBCompileTest10.m in Sources */,
-				8B6C2B822682A55300026204 /* GPBDictionaryTests+Int64.m in Sources */,
-				8B6C2B832682A55300026204 /* GPBCompileTest22.m in Sources */,
-				8B6C2B842682A55300026204 /* GPBCompileTest08.m in Sources */,
-				8B6C2B852682A55300026204 /* GPBCompileTest17.m in Sources */,
-				8B6C2B862682A55300026204 /* GPBDictionaryTests+UInt64.m in Sources */,
-				8B6C2B872682A55300026204 /* GPBCodedOuputStreamTests.m in Sources */,
-				8B6C2B882682A55300026204 /* GPBCompileTest23.m in Sources */,
-				8B6C2B892682A55300026204 /* GPBMessageTests.m in Sources */,
-				8B6C2B8A2682A55300026204 /* GPBMessageTests+Serialization.m in Sources */,
-				8B6C2B8B2682A55300026204 /* GPBCompileTest19.m in Sources */,
-				8B6C2B8C2682A55300026204 /* GPBCompileTest06.m in Sources */,
-				8B6C2B8D2682A55300026204 /* GPBCompileTest12.m in Sources */,
-				8B6C2B8E2682A55300026204 /* GPBWellKnownTypesTest.m in Sources */,
-				8B6C2B8F2682A55300026204 /* GPBCompileTest03.m in Sources */,
-				8B6C2B902682A55300026204 /* GPBCompileTest18.m in Sources */,
-				8B6C2B912682A55300026204 /* GPBCompileTest13.m in Sources */,
-				8B6C2B922682A55300026204 /* GPBCompileTest15.m in Sources */,
-				8B6C2B932682A55300026204 /* GPBCompileTest07.m in Sources */,
-				8B6C2B942682A55300026204 /* GPBDescriptorTests.m in Sources */,
-				8B6C2B952682A55300026204 /* GPBCompileTest21.m in Sources */,
-				8B6C2B962682A55300026204 /* GPBCompileTest11.m in Sources */,
-				8B6C2B972682A55300026204 /* GPBUnittestProtos2.m in Sources */,
-				8B6C2B982682A55300026204 /* GPBObjectiveCPlusPlusTest.mm in Sources */,
-				8B6C2B992682A55300026204 /* GPBSwiftTests.swift in Sources */,
-				8B6C2B9A2682A55300026204 /* GPBCompileTest25.m in Sources */,
-				8B6C2B9B2682A55300026204 /* GPBExtensionRegistryTest.m in Sources */,
-				8B6C2B9C2682A55300026204 /* GPBMessageTests+ClassNames.m in Sources */,
-				8B6C2B9D2682A55300026204 /* GPBConcurrencyTests.m in Sources */,
-				8B6C2B9E2682A55300026204 /* GPBMessageTests+Runtime.m in Sources */,
-				8B6C2B9F2682A55300026204 /* GPBCompileTest02.m in Sources */,
-				8B6C2BA02682A55300026204 /* GPBDictionaryTests+Int32.m in Sources */,
-				8B6C2BA12682A55300026204 /* GPBCompileTest05.m in Sources */,
-				8B6C2BA22682A55300026204 /* GPBCompileTest14.m in Sources */,
-				8B6C2BA32682A55300026204 /* GPBTestUtilities.m in Sources */,
-				8B6C2BA42682A55300026204 /* GPBCompileTest04.m in Sources */,
-				8B6C2BA52682A55300026204 /* GPBCompileTest16.m in Sources */,
-				8B6C2BA62682A55300026204 /* GPBPerfTests.m in Sources */,
-				8B6C2BA72682A55300026204 /* GPBDictionaryTests+Bool.m in Sources */,
-				8B6C2BA82682A55300026204 /* GPBMessageTests+Merge.m in Sources */,
-				8B6C2BA92682A55300026204 /* GPBCompileTest01.m in Sources */,
-				8B6C2BAA2682A55300026204 /* GPBUnknownFieldSetTest.m in Sources */,
-				8B6C2BAB2682A55300026204 /* GPBDictionaryTests+String.m in Sources */,
-				8B6C2BAC2682A55300026204 /* GPBDictionaryTests+UInt32.m in Sources */,
-				8B6C2BAD2682A55300026204 /* GPBCompileTest09.m in Sources */,
-				8B6C2BAE2682A55300026204 /* GPBUtilitiesTests.m in Sources */,
-				8B6C2BAF2682A55300026204 /* GPBDictionaryTests.m in Sources */,
-				8B6C2BB02682A55300026204 /* GPBWireFormatTests.m in Sources */,
-				8B6C2BB12682A55300026204 /* GPBUnittestProtos.m in Sources */,
-				8B6C2BB22682A55300026204 /* GPBARCUnittestProtos.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8BBEA4A2147C727100C4ADB7 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1040,16 +818,6 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
-		8B6C2B712682A55300026204 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 7461B52D0F94FAF800A0C422 /* ProtocolBuffers */;
-			targetProxy = 8B6C2B722682A55300026204 /* PBXContainerItemProxy */;
-		};
-		8B6C2BCD2682A59300026204 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 8B6C2BC42682A57600026204 /* Compile Elided Unittest Protos */;
-			targetProxy = 8B6C2BCC2682A59300026204 /* PBXContainerItemProxy */;
-		};
 		8BBEA4BD147C729A00C4ADB7 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 7461B52D0F94FAF800A0C422 /* ProtocolBuffers */;
@@ -1085,79 +853,6 @@
 			};
 			name = Release;
 		};
-		8B6C2BB82682A55300026204 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				FRAMEWORK_SEARCH_PATHS = (
-					"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
-					"$(inherited)",
-				);
-				INFOPLIST_FILE = "Tests/UnitTests-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"\"$(DEVELOPER_DIR)/usr/lib\"",
-				);
-				OTHER_LDFLAGS = "-ObjC";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-				SWIFT_VERSION = 4.0;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/elided/protos $(SRCROOT)";
-				WARNING_CFLAGS = (
-					"$(inherited)",
-					"-Wno-documentation-unknown-command",
-					"-Wno-reserved-id-macro",
-					"-Wno-direct-ivar-access",
-				);
-			};
-			name = Debug;
-		};
-		8B6C2BB92682A55300026204 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				FRAMEWORK_SEARCH_PATHS = (
-					"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
-					"$(inherited)",
-				);
-				INFOPLIST_FILE = "Tests/UnitTests-Info.plist";
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"\"$(DEVELOPER_DIR)/usr/lib\"",
-				);
-				OTHER_LDFLAGS = "-ObjC";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
-				SWIFT_VERSION = 4.0;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/elided/protos $(SRCROOT)";
-				WARNING_CFLAGS = (
-					"$(inherited)",
-					"-Wno-documentation-unknown-command",
-					"-Wno-reserved-id-macro",
-					"-Wno-direct-ivar-access",
-				);
-			};
-			name = Release;
-		};
-		8B6C2BC62682A57600026204 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-			};
-			name = Debug;
-		};
-		8B6C2BC72682A57600026204 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-			};
-			name = Release;
-		};
 		8BBEA4A7147C727100C4ADB7 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -1179,7 +874,7 @@
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 4.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/normal/protos $(SRCROOT)";
+				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/protos $(SRCROOT)";
 				WARNING_CFLAGS = (
 					"$(inherited)",
 					"-Wno-documentation-unknown-command",
@@ -1209,7 +904,7 @@
 				SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
 				SWIFT_VERSION = 4.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
-				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/normal/protos $(SRCROOT)";
+				USER_HEADER_SEARCH_PATHS = "${PROJECT_DERIVED_FILE_DIR}/protos $(SRCROOT)";
 				WARNING_CFLAGS = (
 					"$(inherited)",
 					"-Wno-documentation-unknown-command",
@@ -1382,12 +1077,14 @@
 		F45BBC0F1B0CDB50002D064D /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = YES;
 			};
 			name = Debug;
 		};
 		F45BBC101B0CDB50002D064D /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = YES;
 			};
 			name = Release;
 		};
@@ -1403,24 +1100,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		8B6C2BB72682A55300026204 /* Build configuration list for PBXNativeTarget "UnitTestsElidedProperties" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				8B6C2BB82682A55300026204 /* Debug */,
-				8B6C2BB92682A55300026204 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		8B6C2BC52682A57600026204 /* Build configuration list for PBXLegacyTarget "Compile Elided Unittest Protos" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				8B6C2BC62682A57600026204 /* Debug */,
-				8B6C2BC72682A57600026204 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 		8BBEA4BA147C728600C4ADB7 /* Build configuration list for PBXNativeTarget "UnitTests" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
diff --git a/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme b/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme
index 8976518..1a02f7e 100644
--- a/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme
+++ b/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme
@@ -267,273 +267,6 @@
                   Identifier = "GPBUInt64UInt64DictionaryTests">
                </Test>
                <Test
-                  Identifier = "MessageClassNameTests">
-               </Test>
-               <Test
-                  Identifier = "MessageMergeTests">
-               </Test>
-               <Test
-                  Identifier = "MessageRuntimeTests">
-               </Test>
-               <Test
-                  Identifier = "MessageSerializationTests">
-               </Test>
-               <Test
-                  Identifier = "MessageTests">
-               </Test>
-               <Test
-                  Identifier = "UnknownFieldSetTest">
-               </Test>
-               <Test
-                  Identifier = "UtilitiesTests">
-               </Test>
-               <Test
-                  Identifier = "WellKnownTypesTest">
-               </Test>
-               <Test
-                  Identifier = "WireFormatTests">
-               </Test>
-            </SkippedTests>
-         </TestableReference>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "8B6C2B702682A55300026204"
-               BuildableName = "UnitTestsElidedProperties.xctest"
-               BlueprintName = "UnitTestsElidedProperties"
-               ReferencedContainer = "container:ProtocolBuffers_iOS.xcodeproj">
-            </BuildableReference>
-            <SkippedTests>
-               <Test
-                  Identifier = "CodedInputStreamTests">
-               </Test>
-               <Test
-                  Identifier = "CodedOutputStreamTests">
-               </Test>
-               <Test
-                  Identifier = "ConcurrencyTests">
-               </Test>
-               <Test
-                  Identifier = "DescriptorTests">
-               </Test>
-               <Test
-                  Identifier = "GPBAutocreatedArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBAutocreatedDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolBoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolDoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolFloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolUInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBoolUInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBBridgeTests">
-               </Test>
-               <Test
-                  Identifier = "GPBDoubleArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBEnumArrayCustomTests">
-               </Test>
-               <Test
-                  Identifier = "GPBEnumArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBExtensionRegistryTest">
-               </Test>
-               <Test
-                  Identifier = "GPBFloatArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt32UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBInt64UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBObjectiveCPlusPlusTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringBoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringDoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringEnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringEnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringFloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringUInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBStringUInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt32UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64ArrayTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64BoolDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64DoubleDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64EnumDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64EnumDictionaryUnknownEnumTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64FloatDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64Int32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64Int64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64ObjectDictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64UInt32DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "GPBUInt64UInt64DictionaryTests">
-               </Test>
-               <Test
-                  Identifier = "MessageClassNameTests">
-               </Test>
-               <Test
                   Identifier = "MessageMergeTests">
                </Test>
                <Test
@@ -560,6 +293,17 @@
             </SkippedTests>
          </TestableReference>
       </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "8B9A5EA41831993600A9D33B"
+            BuildableName = "iOSTestHarness.app"
+            BlueprintName = "iOSTestHarness"
+            ReferencedContainer = "container:ProtocolBuffers_iOS.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Release"
@@ -571,6 +315,8 @@
       debugDocumentVersioning = "YES"
       debugServiceExtension = "internal"
       allowLocationSimulation = "YES">
+      <AdditionalOptions>
+      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme b/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme
index fcff1c4..bacbcba 100644
--- a/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme
+++ b/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme
@@ -54,8 +54,8 @@
       buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      codeCoverageEnabled = "YES">
+      codeCoverageEnabled = "YES"
+      shouldUseLaunchSchemeArgsEnv = "YES">
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -72,22 +72,18 @@
                </Test>
             </SkippedTests>
          </TestableReference>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "8B6C2B702682A55300026204"
-               BuildableName = "UnitTestsElidedProperties.xctest"
-               BlueprintName = "UnitTestsElidedProperties"
-               ReferencedContainer = "container:ProtocolBuffers_iOS.xcodeproj">
-            </BuildableReference>
-            <SkippedTests>
-               <Test
-                  Identifier = "PerfTests">
-               </Test>
-            </SkippedTests>
-         </TestableReference>
       </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "8B9A5EA41831993600A9D33B"
+            BuildableName = "iOSTestHarness.app"
+            BlueprintName = "iOSTestHarness"
+            ReferencedContainer = "container:ProtocolBuffers_iOS.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Debug"
@@ -108,6 +104,8 @@
             ReferencedContainer = "container:ProtocolBuffers_iOS.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_generator.cc b/src/google/protobuf/compiler/objectivec/objectivec_generator.cc
index 8606674..d5a2b6b 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_generator.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_generator.cc
@@ -140,12 +140,6 @@
       // header search path since the generate #import will be more complete.
       generation_options.runtime_import_prefix =
           StripSuffixString(options[i].second, "/");
-    } else if (options[i].first == "elide_message_metadata") {
-      // Controls whether or not property metadata is generated for messages.
-      // Turning this on gives a significant size decrease for messages at the cost
-      // of not being able to iterate through the properties using the Objective-C
-      // runtime.
-      generation_options.elide_message_metadata = true;
     } else if (options[i].first == "use_package_as_prefix") {
       // Controls how the symbols should be prefixed to avoid symbols
       // collisions. The objc_class_prefix file option is always honored, this
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
index ef849c2..78491d2 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
@@ -178,7 +178,6 @@
     expected_prefixes_suppressions =
         Split(suppressions, ";", true);
   }
-  elide_message_metadata = false;
 }
 
 namespace {
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.h b/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
index 7e30c13..02615e0 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
@@ -67,7 +67,6 @@
   std::string generate_for_named_framework;
   std::string named_framework_to_proto_path_mappings_path;
   std::string runtime_import_prefix;
-  bool elide_message_metadata;
 };
 
 // Escape C++ trigraphs by escaping question marks to "\?".
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_message.cc b/src/google/protobuf/compiler/objectivec/objectivec_message.cc
index 04a9196..3a00113 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_message.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_message.cc
@@ -178,8 +178,7 @@
       field_generators_(descriptor, options),
       class_name_(ClassName(descriptor_)),
       deprecated_attribute_(GetOptionalDeprecatedAttribute(
-          descriptor, descriptor->file(), false, true)),
-      elide_message_metadata_(options.elide_message_metadata) {
+          descriptor, descriptor->file(), false, true)) {
   for (int i = 0; i < descriptor_->extension_count(); i++) {
     extension_generators_.emplace_back(
         new ExtensionGenerator(class_name_, descriptor_->extension(i)));
@@ -391,28 +390,26 @@
         "\n",
         "classname", class_name_);
 
-    if (!elide_message_metadata_) {
-      if (!deprecated_attribute_.empty()) {
-        // No warnings when compiling the impl of this deprecated class.
-        printer->Print(
-            "#pragma clang diagnostic push\n"
-            "#pragma clang diagnostic ignored \"-Wdeprecated-implementations\"\n"
-            "\n");
-      }
-
-      printer->Print("@implementation $classname$\n\n",
-                     "classname", class_name_);
-
-      for (const auto& generator : oneof_generators_) {
-        generator->GeneratePropertyImplementation(printer);
-      }
-
-      for (int i = 0; i < descriptor_->field_count(); i++) {
-        field_generators_.get(descriptor_->field(i))
-            .GeneratePropertyImplementation(printer);
-      }
-      printer->Print("\n");
+    if (!deprecated_attribute_.empty()) {
+      // No warnings when compiling the impl of this deprecated class.
+      printer->Print(
+          "#pragma clang diagnostic push\n"
+          "#pragma clang diagnostic ignored \"-Wdeprecated-implementations\"\n"
+          "\n");
     }
+
+    printer->Print("@implementation $classname$\n\n",
+                   "classname", class_name_);
+
+    for (const auto& generator : oneof_generators_) {
+      generator->GeneratePropertyImplementation(printer);
+    }
+
+    for (int i = 0; i < descriptor_->field_count(); i++) {
+      field_generators_.get(descriptor_->field(i))
+          .GeneratePropertyImplementation(printer);
+    }
+
     std::unique_ptr<const FieldDescriptor*[]> sorted_fields(
         SortFieldsByNumber(descriptor_));
     std::unique_ptr<const FieldDescriptor*[]> size_order_fields(
@@ -451,6 +448,7 @@
     sizeof_has_storage += oneof_generators_.size();
 
     printer->Print(
+        "\n"
         "typedef struct $classname$__storage_ {\n"
         "  uint32_t _has_storage_[$sizeof_has_storage$];\n",
         "classname", class_name_,
@@ -466,25 +464,13 @@
     printer->Print("} $classname$__storage_;\n\n", "classname", class_name_);
 
 
-    if (elide_message_metadata_) {
-      printer->Print(
-          "// This function is threadsafe because it is initially called by +initialize\n"
-          "// for each subclass.\n"
-          "// It is marked as `used` because the reference to it is made from inside the\n"
-          "// `__asm__` block generated by the `GPB_MESSAGE_CLASS_IMPL` macro.\n"
-          "__attribute__((used)) static GPBDescriptor *$classname$_descriptor(id self, SEL _cmd) {\n" 
-          "  #pragma unused(self, _cmd)\n"
-          "  static GPBDescriptor *descriptor = nil;\n"
-          "  if (!descriptor) {\n",
-          "classname", class_name_);
-    } else {
-      printer->Print(
-          "// This method is threadsafe because it is initially called\n"
-          "// in +initialize for each subclass.\n"
-          "+ (GPBDescriptor *)descriptor {\n"
-          "  static GPBDescriptor *descriptor = nil;\n"
-          "  if (!descriptor) {\n");
-    }
+    printer->Print(
+        "// This method is threadsafe because it is initially called\n"
+        "// in +initialize for each subclass.\n"
+        "+ (GPBDescriptor *)descriptor {\n"
+        "  static GPBDescriptor *descriptor = nil;\n"
+        "  if (!descriptor) {\n");
+
     TextFormatDecodeData text_format_decode_data;
     bool has_fields = descriptor_->field_count() > 0;
     bool need_defaults = field_generators_.DoesAnyFieldHaveNonZeroDefault();
@@ -611,25 +597,18 @@
     }
     printer->Print(
         "    #if defined(DEBUG) && DEBUG\n"
-        "      $assert$(descriptor == nil, @\"Startup recursed!\");\n"
+        "      NSAssert(descriptor == nil, @\"Startup recursed!\");\n"
         "    #endif  // DEBUG\n"
         "    descriptor = localDescriptor;\n"
         "  }\n"
         "  return descriptor;\n"
-        "}\n\n",
-        "assert", elide_message_metadata_ ? "NSCAssert" : "NSAssert");
+        "}\n\n"
+        "@end\n\n");
 
-    if (elide_message_metadata_) {
+    if (!deprecated_attribute_.empty()) {
       printer->Print(
-          "GPB_MESSAGE_SUBCLASS_IMPL($classname$, $classname$_descriptor);\n\n",
-          "classname", class_name_);
-    } else {
-      printer->Print("@end\n\n");
-      if (!deprecated_attribute_.empty()) {
-        printer->Print(
-            "#pragma clang diagnostic pop\n"
-            "\n");
-      }
+          "#pragma clang diagnostic pop\n"
+          "\n");
     }
 
     for (int i = 0; i < descriptor_->field_count(); i++) {
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_message.h b/src/google/protobuf/compiler/objectivec/objectivec_message.h
index 6ba25e0..01108d2 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_message.h
+++ b/src/google/protobuf/compiler/objectivec/objectivec_message.h
@@ -89,7 +89,6 @@
   std::vector<std::unique_ptr<EnumGenerator>> enum_generators_;
   std::vector<std::unique_ptr<MessageGenerator>> nested_message_generators_;
   std::vector<std::unique_ptr<OneofGenerator>> oneof_generators_;
-  bool elide_message_metadata_;
 };
 
 }  // namespace objectivec