[
  {
    "path": ".Package.test.swift",
    "content": "// swift-tools-version:4.2\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"SwinjectAutoregistration\",\n    products: [\n        .library(\n            name: \"SwinjectAutoregistration\",\n            targets: [\"SwinjectAutoregistration\"])\n    ],\n    dependencies: [\n        .package(url: \"https://github.com/Swinject/Swinject.git\", from: \"2.9.1\")\n    ],\n    targets: [\n        .target(\n            name: \"SwinjectAutoregistration\",\n            dependencies: [\n                \"Swinject\",\n            ],\n            path: \"Sources\"),\n        .testTarget(\n            name: \"SwinjectAutoregistrationTests\",\n            dependencies: [\n                \"Swinject\",\n                \"SwinjectAutoregistration\",\n            ])\n    ]\n)\n"
  },
  {
    "path": ".gitignore",
    "content": "#\n# https://github.com/github/gitignore/blob/master/Swift.gitignore\n#\n\n## Build generated\nbuild/\nDerivedData\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n\n## Other\n*.xccheckout\n*.moved-aside\n*.xcuserstate\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\nPackages/\n.build/\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# Pods/\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\nCarthage/Checkouts\n\nCarthage/Build\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the \n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md\n\nfastlane/report.xml\nfastlane/screenshots\n\n## Mac\n.DS_Store\n\n## SwinjectStoryboard\nSwinjectStoryboard.framework.zip\n\nPackage.resolved\n"
  },
  {
    "path": ".swift-version",
    "content": "5.0\n"
  },
  {
    "path": ".swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": ".swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: objective-c\nenv:\n  global:\n    - LC_CTYPE=en_US.UTF-8\n    - PROJECT=SwinjectAutoregistration.xcodeproj\ngit:\n  submodules: false\nmatrix:\n  include:\n    - env: JOB=\"LINUX_SPM\" SWIFT_VERSION=\"5.2.2\"\n      os: linux\n      language: generic\n      sudo: required\n      dist: bionic\n      before_install:\n        - eval \"$(curl -sL https://swiftenv.fuller.li/install.sh)\"\n      script:\n        - mv .Package.test.swift Package.swift\n        - swift build\n        - swift test\n    - env: JOB=\"POD_LINT\"\n      osx_image: xcode12.5\n      before_install:\n      script:\n        - pod lib lint\n    - env: JOB=\"XCODE\" DEST=\"OS=14.0.1,name=iPhone 8\" SCHEME=\"SwinjectAutoregistration-iOS\" SDK=\"iphonesimulator\" ACTION=\"test\" PLATFORM=\"iOS\"\n      osx_image: xcode12.5\n    - env: JOB=\"XCODE\" DEST=\"arch=x86_64\" SCHEME=\"SwinjectAutoregistration-OSX\" SDK=\"macosx\" ACTION=\"test\" PLATFORM=\"OSX\"\n      osx_image: xcode12.5\n    - env: JOB=\"XCODE\" DEST=\"OS=14.0,name=Apple TV 4K\" SCHEME=\"SwinjectAutoregistration-tvOS\" SDK=\"appletvsimulator\" ACTION=\"test\" PLATFORM=\"tvOS\"\n      osx_image: xcode12.5\n    - env: JOB=\"XCODE\" DEST=\"OS=7.4,name=Apple Watch Series 6 - 44mm\" SCHEME=\"SwinjectAutoregistration-watchOS\" SDK=\"watchsimulator\" ACTION=\"test\" PLATFORM=\"watchOS\"\n      osx_image: xcode12.5\n\nbefore_install:\n  - curl -L -O https://github.com/Carthage/Carthage/releases/download/0.37.0/Carthage.pkg\n  - sudo installer -pkg Carthage.pkg -target /\n  - rm Carthage.pkg\n  - xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX)\n  - trap 'rm -f \"$xcconfig\"' INT TERM HUP EXIT\n  - echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig\n  - echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig\n  - export XCODE_XCCONFIG_FILE=\"$xcconfig\"\n  - carthage bootstrap --platform $PLATFORM --new-resolver --use-xcframeworks\nscript:\n  - set -o pipefail\n  - xcodebuild \"$ACTION\" -project \"$PROJECT\" -scheme \"$SCHEME\" -sdk \"$SDK\" -destination \"$DEST\" -configuration Release ENABLE_TESTABILITY=YES | xcpretty\nnotifications:\n  email:\n    on_success: never\n"
  },
  {
    "path": "Cartfile",
    "content": "github \"Swinject/Swinject\" ~> 2.9.1\n"
  },
  {
    "path": "Cartfile.resolved",
    "content": "github \"Swinject/Swinject\" \"2.9.1\"\n"
  },
  {
    "path": "Configurations/Base/Common.xcconfig",
    "content": "// \n// This file defines common settings that should be enabled for every new\n// project. Typically, you want to use Debug, Release, or a similar variant\n// instead.\n//\n\n// Disable legacy-compatible header searching\nALWAYS_SEARCH_USER_PATHS = NO\n\n// Architectures to build\nARCHS = $(ARCHS_STANDARD)\n\n// Whether to warn when a floating-point value is used as a loop counter\nCLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES\n\n// Whether to warn about use of rand() and random() being used instead of arc4random()\nCLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES\n\n// Whether to warn about strcpy() and strcat()\nCLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES\n\n// Whether to enable module imports\nCLANG_ENABLE_MODULES = YES\n\n// Enable ARC\nCLANG_ENABLE_OBJC_ARC = YES\n\n// Warn about implicit conversions to boolean values that are suspicious.\n// For example, writing 'if (foo)' with 'foo' being the name a function will trigger a warning.\nCLANG_WARN_BOOL_CONVERSION = YES\n\n// Warn about implicit conversions of constant values that cause the constant value to change,\n// either through a loss of precision, or entirely in its meaning.\nCLANG_WARN_CONSTANT_CONVERSION = YES\n\n// Whether to warn when overriding deprecated methods\nCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES\n\n// Warn about direct accesses to the Objective-C 'isa' pointer instead of using a runtime API.\nCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR\n\n// Warn about declaring the same method more than once within the same @interface.\nCLANG_WARN__DUPLICATE_METHOD_MATCH = YES\n\n// Warn about loop bodies that are suspiciously empty.\nCLANG_WARN_EMPTY_BODY = YES\n\n// Warn about implicit conversions between different kinds of enum values.\n// For example, this can catch issues when using the wrong enum flag as an argument to a function or method.\nCLANG_WARN_ENUM_CONVERSION = YES\n\n// Whether to warn on implicit conversions between signed/unsigned types\nCLANG_WARN_IMPLICIT_SIGN_CONVERSION = NO\n\n// Warn about implicit conversions between pointers and integers.\n// For example, this can catch issues when one incorrectly intermixes using NSNumbers and raw integers.\nCLANG_WARN_INT_CONVERSION = YES\n\n// Warn about implicit capture of self (e.g. direct ivar access)\nCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES\n\n// Don't warn about repeatedly using a weak reference without assigning the weak reference to a strong reference. Too many false positives.\nCLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = NO\n\n// Warn about classes that unintentionally do not subclass a root class (such as NSObject).\nCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR\n\n// Whether to warn on suspicious implicit conversions\nCLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES\n\n// Warn about incorrect uses of nullable values\nCLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES\n\n// Warn for missing nullability attributes\nCLANG_ANALYZER_NONNULL = YES\n\n// Warn when a non-localized string is passed to a user-interface method expecting a localized string\nCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES\n\n// Warn about potentially unreachable code\nCLANG_WARN_UNREACHABLE_CODE = YES\n\n// The format of debugging symbols\nDEBUG_INFORMATION_FORMAT = dwarf-with-dsym\n\n// Whether to compile assertions in\nENABLE_NS_ASSERTIONS = YES\n\n// Whether to require objc_msgSend to be cast before invocation\nENABLE_STRICT_OBJC_MSGSEND = YES\n\n// Which C variant to use\nGCC_C_LANGUAGE_STANDARD = gnu99\n\n// Whether to enable exceptions for Objective-C\nGCC_ENABLE_OBJC_EXCEPTIONS = YES\n\n// Whether to generate debugging symbols\nGCC_GENERATE_DEBUGGING_SYMBOLS = YES\n\n// Whether to precompile the prefix header (if one is specified)\nGCC_PRECOMPILE_PREFIX_HEADER = YES\n\n// Whether to enable strict aliasing, meaning that two pointers of different\n// types (other than void * or any id type) cannot point to the same memory\n// location\nGCC_STRICT_ALIASING = YES\n\n// Whether symbols not explicitly exported are hidden by default (this primarily\n// only affects C++ code)\nGCC_SYMBOLS_PRIVATE_EXTERN = NO\n\n// Whether static variables are thread-safe by default\nGCC_THREADSAFE_STATICS = NO\n\n// Which compiler to use\nGCC_VERSION = com.apple.compilers.llvm.clang.1_0\n\n// Whether warnings are treated as errors\nGCC_TREAT_WARNINGS_AS_ERRORS = YES\nSWIFT_TREAT_WARNINGS_AS_ERRORS = YES\n\n// Whether to warn about 64-bit values being implicitly shortened to 32 bits\nGCC_WARN_64_TO_32_BIT_CONVERSION = YES\n\n// Whether to warn about fields missing from structure initializers (only if\n// designated initializers aren't used)\nGCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES\n\n// Whether to warn about missing function prototypes\nGCC_WARN_ABOUT_MISSING_PROTOTYPES = NO\n\n// Whether to warn about implicit conversions in the signedness of the type\n// a pointer is pointing to (e.g., 'int *' getting converted to 'unsigned int *')\nGCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES\n\n// Whether to warn when the value returned from a function/method/block does not\n// match its return type\nGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR\n\n// Whether to warn on a class not implementing all the required methods of\n// a protocol it declares conformance to\nGCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES\n\n// Whether to warn when switching on an enum value, and all possibilities are\n// not accounted for\nGCC_WARN_CHECK_SWITCH_STATEMENTS = YES\n\n// Whether to warn about the use of four-character constants\nGCC_WARN_FOUR_CHARACTER_CONSTANTS = YES\n\n// Whether to warn about an aggregate data type's initializer not being fully\n// bracketed (e.g., array initializer syntax)\nGCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES\n\n// Whether to warn about missing braces or parentheses that make the meaning of\n// the code ambiguous\nGCC_WARN_MISSING_PARENTHESES = YES\n\n// Whether to warn about unsafe comparisons between values of different\n// signedness\nGCC_WARN_SIGN_COMPARE = YES\n\n// Whether to warn about the arguments to printf-style functions not matching\n// the format specifiers\nGCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES\n\n// Warn if a \"@selector(...)\" expression referring to an undeclared selector is found\nGCC_WARN_UNDECLARED_SELECTOR = YES\n\n// Warn if a variable might be clobbered by a setjmp call or if an automatic variable is used without prior initialization.\nGCC_WARN_UNINITIALIZED_AUTOS = YES\n\n// Whether to warn about static functions that are unused\nGCC_WARN_UNUSED_FUNCTION = YES\n\n// Whether to warn about labels that are unused\nGCC_WARN_UNUSED_LABEL = YES\n\n// Whether to warn about variables that are never used\nGCC_WARN_UNUSED_VARIABLE = YES\n\n// Whether to run the static analyzer with every build\nRUN_CLANG_STATIC_ANALYZER = YES\n\n// Don't treat unknown warnings as errors, and disable GCC compatibility warnings and unused static const variable warnings\nWARNING_CFLAGS = -Wno-error=unknown-warning-option -Wno-gcc-compat -Wno-unused-const-variable\n\n// This setting is on for new projects as of Xcode ~6.3, though it is still not\n// the default. It warns if the same variable is declared in two binaries that\n// are linked together.\nGCC_NO_COMMON_BLOCKS = YES\n\n// This warnings detects when a function will recursively call itself on every\n// code path though that function. More information can be found here:\n// http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20131216/096004.html\nCLANG_WARN_INFINITE_RECURSION = YES\n\n// This warning detects suspicious uses of std::move.\nCLANG_WARN_SUSPICIOUS_MOVE = YES\n"
  },
  {
    "path": "Configurations/Base/Configurations/Debug.xcconfig",
    "content": "// \n// This file defines the base configuration for a Debug build of any project.\n// This should be set at the project level for the Debug configuration.\n//\n\n#include \"../Common.xcconfig\"\n\n// Whether to strip debugging symbols when copying resources (like included\n// binaries)\nCOPY_PHASE_STRIP = NO\n\n// The optimization level (0, 1, 2, 3, s) for the produced binary\nGCC_OPTIMIZATION_LEVEL = 0\n\n// Preproccessor definitions to apply to each file compiled\nGCC_PREPROCESSOR_DEFINITIONS = DEBUG=1\n\n// Allow @testable imports\nENABLE_TESTABILITY = YES\n\n// Whether to enable link-time optimizations (such as inlining across translation\n// units)\nLLVM_LTO = NO\n\n// Whether to only build the active architecture\nONLY_ACTIVE_ARCH = YES\n\n// Other compiler flags\n// \n// These settings catch some errors in integer arithmetic\nOTHER_CFLAGS = -ftrapv\n\n// Other flags to pass to the Swift compiler\n//\n// This enables conditional compilation with #if DEBUG\nOTHER_SWIFT_FLAGS = -D DEBUG\n\n// Xcode 8 introduced a new flag for conditional compilation\n//\n// This enables conditional compilation with #if DEBUG\nSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG\n\n// Whether to strip debugging symbols when copying the built product to its\n// final installation location\nSTRIP_INSTALLED_PRODUCT = NO\n\n// The optimization level (-Onone, -O, -Ofast) for the produced Swift binary\nSWIFT_OPTIMIZATION_LEVEL = -Onone\n\n// Disable Developer ID timestamping\nOTHER_CODE_SIGN_FLAGS = --timestamp=none\n"
  },
  {
    "path": "Configurations/Base/Configurations/Profile.xcconfig",
    "content": "// \n// This file defines the base configuration for an optional profiling-specific\n// build of any project. To use these settings, create a Profile configuration\n// in your project, and use this file at the project level for the new\n// configuration.\n//\n\n// based on the Release configuration, with some stuff related to debugging\n// symbols re-enabled\n#include \"Release.xcconfig\"\n\n// Whether to strip debugging symbols when copying resources (like included\n// binaries)\nCOPY_PHASE_STRIP = NO\n\n// Whether to only build the active architecture\nONLY_ACTIVE_ARCH = YES\n\n// Whether to strip debugging symbols when copying the built product to its\n// final installation location\nSTRIP_INSTALLED_PRODUCT = NO\n\n// Whether to perform App Store validation checks\nVALIDATE_PRODUCT = NO\n\n// Disable Developer ID timestamping\nOTHER_CODE_SIGN_FLAGS = --timestamp=none\n"
  },
  {
    "path": "Configurations/Base/Configurations/Release.xcconfig",
    "content": "// \n// This file defines the base configuration for a Release build of any project.\n// This should be set at the project level for the Release configuration.\n//\n\n#include \"../Common.xcconfig\"\n\n// Whether to strip debugging symbols when copying resources (like included\n// binaries)\nCOPY_PHASE_STRIP = YES\n\n// The optimization level (0, 1, 2, 3, s) for the produced binary\nGCC_OPTIMIZATION_LEVEL = s\n\n// Preproccessor definitions to apply to each file compiled\nGCC_PREPROCESSOR_DEFINITIONS = NDEBUG=1\n\n// Whether to enable link-time optimizations (such as inlining across translation\n// units)\nLLVM_LTO = NO\n\n// Whether to only build the active architecture\nONLY_ACTIVE_ARCH = NO\n\n// Whether to strip debugging symbols when copying the built product to its\n// final installation location\nSTRIP_INSTALLED_PRODUCT = YES\n\n// The optimization level (-Onone, -O, -Owholemodule) for the produced Swift binary\nSWIFT_OPTIMIZATION_LEVEL = -Owholemodule\n\n// Whether to perform App Store validation checks\nVALIDATE_PRODUCT = YES\n\n"
  },
  {
    "path": "Configurations/Base/Configurations/Test.xcconfig",
    "content": "// \n// This file defines the base configuration for a Test build of any project.\n// This should be set at the project level for the Test configuration.\n//\n\n#include \"Debug.xcconfig\"\n\n// Sandboxed apps can't be unit tested since they can't load some random \n// external bundle. So we disable sandboxing for testing.\nCODE_SIGN_ENTITLEMENTS = \n\n// Allow @testable imports\nENABLE_TESTABILITY = YES\n"
  },
  {
    "path": "Configurations/Base/Targets/Application.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for an application. Typically, you want to use a platform-specific variant\n// instead.\n//\n\n// Whether to strip out code that isn't called from anywhere\nDEAD_CODE_STRIPPING = NO\n\n// Sets the @rpath for the application such that it can include frameworks in\n// the application bundle (inside the \"Frameworks\" folder)\nLD_RUNPATH_SEARCH_PATHS = @executable_path/../Frameworks @loader_path/../Frameworks @executable_path/Frameworks\n"
  },
  {
    "path": "Configurations/Base/Targets/Framework.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a framework. Typically, you want to use a platform-specific variant\n// instead.\n//\n\n// Disable code signing for successful device builds with Xcode 8. Frameworks do\n// need to be signed, but they don't need to be signed at compile time because\n// they'll be re-signed when you include them in your app.\nCODE_SIGNING_REQUIRED = NO\nCODE_SIGN_IDENTITY = \n\n// Whether to strip out code that isn't called from anywhere\nDEAD_CODE_STRIPPING = NO\n\n// Whether this framework should define an LLVM module\nDEFINES_MODULE = YES\n\n// Whether function calls should be position-dependent (should always be\n// disabled for library code)\nGCC_DYNAMIC_NO_PIC = NO\n\n// Default frameworks to the name of the project, instead of any\n// platform-specific target\nPRODUCT_NAME = $(PROJECT_NAME)\n\n// Enables the framework to be included from any location as long as the\n// loader’s runpath search paths includes it. For example from an application\n// bundle (inside the \"Frameworks\" folder) or shared folder\nINSTALL_PATH = @rpath\nLD_DYLIB_INSTALL_NAME = @rpath/$(PRODUCT_NAME).$(WRAPPER_EXTENSION)/$(PRODUCT_NAME)\nSKIP_INSTALL = YES\n\n// Disallows use of APIs that are not available\n// to app extensions and linking to frameworks\n// that have not been built with this setting enabled.\nAPPLICATION_EXTENSION_API_ONLY = YES\n"
  },
  {
    "path": "Configurations/Base/Targets/StaticLibrary.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a static library. Typically, you want to use a platform-specific variant\n// instead.\n//\n\n// Whether to strip out code that isn't called from anywhere\nDEAD_CODE_STRIPPING = NO\n\n// Whether to strip debugging symbols when copying resources (like included\n// binaries).\n//\n// Overrides Release.xcconfig when used at the target level.\nCOPY_PHASE_STRIP = NO\n\n// Whether function calls should be position-dependent (should always be\n// disabled for library code)\nGCC_DYNAMIC_NO_PIC = NO\n\n// Copy headers to \"include/LibraryName\" in the build folder by default. This\n// lets consumers use #import <LibraryName/LibraryName.h> syntax even for static\n// libraries\nPUBLIC_HEADERS_FOLDER_PATH = include/$PRODUCT_NAME\n\n// Don't include in an xcarchive\nSKIP_INSTALL = YES\n\n// Disallows use of APIs that are not available\n// to app extensions and linking to frameworks\n// that have not been built with this setting enabled.\nAPPLICATION_EXTENSION_API_ONLY = YES\n\n"
  },
  {
    "path": "Configurations/Mac OS X/Mac-Application.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for an application on Mac OS X. This should be set at the target level for\n// each project configuration.\n//\n\n// Import base application settings\n#include \"../Base/Targets/Application.xcconfig\"\n\n// Apply common settings specific to Mac OS X\n#include \"Mac-Base.xcconfig\"\n\n// Whether function calls should be position-dependent (should always be\n// disabled for library code)\nGCC_DYNAMIC_NO_PIC = YES\n"
  },
  {
    "path": "Configurations/Mac OS X/Mac-Base.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for Mac OS X. This file is not standalone -- it is meant to be included into\n// a configuration file for a specific type of target.\n//\n\n// Whether to combine multiple image resolutions into a multirepresentational\n// TIFF\nCOMBINE_HIDPI_IMAGES = YES\n\n// Where to find embedded frameworks\nLD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\n\n// The base SDK to use (if no version is specified, the latest version is\n// assumed)\nSDKROOT = macosx\n\n// Supported build architectures\nVALID_ARCHS = $(ARCHS_STANDARD)\n"
  },
  {
    "path": "Configurations/Mac OS X/Mac-DynamicLibrary.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a dynamic library on Mac OS X. This should be set at the target level\n// for each project configuration.\n//\n\n// Import common settings specific to Mac OS X\n#include \"Mac-Base.xcconfig\"\n\n// Whether to strip out code that isn't called from anywhere\nDEAD_CODE_STRIPPING = NO\n\n// Whether function calls should be position-dependent (should always be\n// disabled for library code)\nGCC_DYNAMIC_NO_PIC = NO\n\n// Don't include in an xcarchive\nSKIP_INSTALL = YES\n"
  },
  {
    "path": "Configurations/Mac OS X/Mac-Framework.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a framework on OS X. This should be set at the target level for each\n// project configuration.\n//\n\n// Import base framework settings\n#include \"../Base/Targets/Framework.xcconfig\"\n\n// Import common settings specific to Mac OS X\n#include \"Mac-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/Mac OS X/Mac-StaticLibrary.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a static library on Mac OS X. This should be set at the target level for\n// each project configuration.\n//\n\n// Import base static library settings\n#include \"../Base/Targets/StaticLibrary.xcconfig\"\n\n// Apply common settings specific to Mac OS X\n#include \"Mac-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/iOS/iOS-Application.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for an application on iOS. This should be set at the target level for each\n// project configuration.\n//\n\n// Import base application settings\n#include \"../Base/Targets/Application.xcconfig\"\n\n// Apply common settings specific to iOS\n#include \"iOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/iOS/iOS-Base.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for iOS. This file is not standalone -- it is meant to be included into\n// a configuration file for a specific type of target.\n//\n\n// Xcode needs this to find archived headers if SKIP_INSTALL is set\nHEADER_SEARCH_PATHS = $(OBJROOT)/UninstalledProducts/include\n\n// Where to find embedded frameworks\nLD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks\n\n// The base SDK to use (if no version is specified, the latest version is\n// assumed)\nSDKROOT = iphoneos\n\n// Supported device families (1 is iPhone, 2 is iPad)\nTARGETED_DEVICE_FAMILY = 1,2\n"
  },
  {
    "path": "Configurations/iOS/iOS-Framework.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a framework on iOS. This should be set at the target level for each\n// project configuration.\n//\n\n// Import base framework settings\n#include \"../Base/Targets/Framework.xcconfig\"\n\n// Import common settings specific to iOS\n#include \"iOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/iOS/iOS-StaticLibrary.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a static library on iOS. This should be set at the target level for each\n// project configuration.\n//\n\n// Import base static library settings\n#include \"../Base/Targets/StaticLibrary.xcconfig\"\n\n// Apply common settings specific to iOS\n#include \"iOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/tvOS/tvOS-Application.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for an application on tvOS. This should be set at the target level for\n// each project configuration.\n//\n\n// Import base application settings\n#include \"../Base/Targets/Application.xcconfig\"\n\n// Apply common settings specific to tvOS\n#include \"tvOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/tvOS/tvOS-Base.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for tvOS. This file is not standalone -- it is meant to be included into\n// a configuration file for a specific type of target.\n//\n\n// Where to find embedded frameworks\nLD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks\n\n// The base SDK to use (if no version is specified, the latest version is\n// assumed)\nSDKROOT = appletvos\n\n// Supported device families\nTARGETED_DEVICE_FAMILY = 3\n"
  },
  {
    "path": "Configurations/tvOS/tvOS-Framework.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a framework on tvOS. This should be set at the target level for each\n// project configuration.\n//\n\n// Import base framework settings\n#include \"../Base/Targets/Framework.xcconfig\"\n\n// Import common settings specific to iOS\n#include \"tvOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/tvOS/tvOS-StaticLibrary.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a static library on tvOS. This should be set at the target level for\n// each project configuration.\n//\n\n// Import base static library settings\n#include \"../Base/Targets/StaticLibrary.xcconfig\"\n\n// Apply common settings specific to tvOS\n#include \"tvOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/watchOS/watchOS-Application.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for an application on watchOS. This should be set at the target level for\n// each project configuration.\n//\n\n// Import base application settings\n#include \"../Base/Targets/Application.xcconfig\"\n\n// Apply common settings specific to watchOS\n#include \"watchOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/watchOS/watchOS-Base.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for watchOS. This file is not standalone -- it is meant to be included into\n// a configuration file for a specific type of target.\n//\n\n// Where to find embedded frameworks\nLD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks\n\n// The base SDK to use (if no version is specified, the latest version is\n// assumed)\nSDKROOT = watchos\n\n// Supported device families\nTARGETED_DEVICE_FAMILY = 4\n"
  },
  {
    "path": "Configurations/watchOS/watchOS-Framework.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a framework on watchOS. This should be set at the target level for each\n// project configuration.\n//\n\n// Import base framework settings\n#include \"../Base/Targets/Framework.xcconfig\"\n\n// Import common settings specific to iOS\n#include \"watchOS-Base.xcconfig\"\n"
  },
  {
    "path": "Configurations/watchOS/watchOS-StaticLibrary.xcconfig",
    "content": "//\n// This file defines additional configuration options that are appropriate only\n// for a static library on watchOS. This should be set at the target level for\n// each project configuration.\n//\n\n// Import base static library settings\n#include \"../Base/Targets/StaticLibrary.xcconfig\"\n\n// Apply common settings specific to watchOS\n#include \"watchOS-Base.xcconfig\"\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2016 Swinject Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": "#\n# Run help command as the default.\n#\nall: help\n\n#\n# Shows help message.\n#\n.PHONY: help\nhelp:\n\t@echo 'To release a version of SwinjectAutoregistration, run the following commands in order on the branch where you make a release.'\n\t@echo '  $$ make VERSION=<version#> set-new-version (e.g. make VERSION=1.2.3 set-new-version)'\n\t@echo '  $$ make [UPSTREAM=<upstream>] push-to-upstream (e.g. make push-to-upstream)'\n\t@echo '  $$ make carthage-release'\n\t@echo '  $$ make cocoapods-release'\n\n#\n# Set a specified version in Info.plist and podspec files, and tag the version.\n#\n.PHONY: set-new-version\nset-new-version:\nifndef VERSION\n\t$(error Specify a new version. E.g. $$ make VERSION=1.2.3 set-new-version)\nendif\nifeq ($(wildcard ./SwinjectAutoregistration.podspec),)\n\t$(error Run the command in the directory containing SwinjectAutoregistration.podspec.)\nendif\nifeq ($(shell git diff --quiet; echo $$?), 1)\n\t$(error Your current git working tree is dirty. Stash all to run this command.)\nendif\n\tagvtool new-marketing-version $(VERSION)\n\tsed -i '' -e 's/\\(s\\.version.*=\\).*/\\1 \"$(VERSION)\"/' ./SwinjectAutoregistration.podspec\n\tgit commit -a -m \"Update the version to $(VERSION)\"\n\tgit tag $(VERSION)\n\n#\n# Push the commit and tag for the new version to upstream.\n#\nVERSION_TAG=$(shell git describe --tags --abbrev=0)\nifndef UPSTREAM\nUPSTREAM=upstream\nendif\n.PHONY: push-to-upstream\npush-to-upstream:\n\tgit push $(UPSTREAM) $(shell git rev-parse --abbrev-ref HEAD)\n\tgit push $(UPSTREAM) $(VERSION_TAG)\n\n#\n# Make a release for Carthage.\n#\nVERSION_TAG=$(shell git describe --tags --abbrev=0)\n.PHONY: carthage-release\ncarthage-release:\nifeq ($(shell which gh),)\n\t$(error gh command not found. Install gh command and run `gh auth login` beforehand.)\nendif\nifneq ($(VERSION_TAG),$(shell agvtool what-marketing-version -terse1))\n\t$(error The version tag $(VERSION_TAG) does not match the version in Info.plist)\nendif\n\tgh release create $(VERSION_TAG) --draft --title v$(VERSION_TAG) --notes \"\"\n\t@echo Open https://github.com/Swinject/SwinjectAutoregistration/releases/edit/$(VERSION_TAG) to describe the release and publish it.\n\n#\n# Make a release for Cocoapods.\n#\n.PHONY: cocoapods-release\ncocoapods-release:\n\tpod lib lint\n\tpod trunk push SwinjectAutoregistration.podspec"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:5.0\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"SwinjectAutoregistration\",\n    products: [\n        .library(\n            name: \"SwinjectAutoregistration\",\n            targets: [\"SwinjectAutoregistration\"]),\n        .library(\n            name: \"SwinjectAutoregistration-Dynamic\",\n            type: .dynamic,\n            targets: [\"SwinjectAutoregistration\"])\n\n    ],\n    dependencies: [\n        .package(url: \"https://github.com/Swinject/Swinject.git\", from: \"2.9.1\")\n    ],\n    targets: [\n        .target(\n            name: \"SwinjectAutoregistration\",\n            dependencies: [\n                \"Swinject\",\n            ],\n            path: \"Sources\"),\n    ]\n)\n"
  },
  {
    "path": "README.md",
    "content": "SwinjectAutoregistration\n========\n\n[![Build Status](https://travis-ci.org/Swinject/SwinjectAutoregistration.svg?branch=master)](https://travis-ci.org/Swinject/SwinjectAutoregistration)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![CocoaPods Version](https://img.shields.io/cocoapods/v/SwinjectAutoregistration.svg?style=flat)](http://cocoapods.org/pods/SwinjectAutoregistration)\n[![License](https://img.shields.io/cocoapods/l/SwinjectAutoregistration.svg?style=flat)](http://cocoapods.org/pods/SwinjectAutoregistration)\n[![Platform](https://img.shields.io/cocoapods/p/SwinjectAutoregistration.svg?style=flat)](http://cocoapods.org/pods/SwinjectAutoregistration)\n[![Swift Version](https://img.shields.io/badge/Swift-5-F16D39.svg?style=flat)](https://developer.apple.com/swift)\n\nSwinjectAutoregistration is an extension of Swinject that allows to automatically register your services and greatly reduce the amount of boilerplate code.\n\n## Requirements\n\n- iOS 11.0+ / Mac OS X 10.13+ / tvOS 11.0+\n- Xcode 14.3+\n\n## Installation\n\nSwinject is available through [Carthage](https://github.com/Carthage/Carthage), [CocoaPods](https://cocoapods.org) or [Swift Package Manager](https://swift.org/package-manager/).\n\n### Carthage\n\nTo install Swinject with Carthage, add the following line to your `Cartfile`.\n\n```\ngithub \"Swinject/Swinject\" \"2.9.1\"\ngithub \"Swinject/SwinjectAutoregistration\" \"2.9.1\"\n```\n\nThen run `carthage update --use-xcframeworks --no-use-binaries` command or just `carthage update --use-xcframeworks`. For details of the installation and usage of Carthage, visit [its project page](https://github.com/Carthage/Carthage).\n\n### CocoaPods\n\nTo install Swinject with CocoaPods, add the following lines to your `Podfile`.\n\n```ruby\nsource 'https://github.com/CocoaPods/Specs.git'\nplatform :ios, '11.0' # or platform :osx, '10.13' if your target is OS X.\nuse_frameworks!\n\npod 'Swinject', '2.9.1'\npod 'SwinjectAutoregistration', '2.9.1'\n```\n\nThen run `pod install` command. For details of the installation and usage of CocoaPods, visit [its official website](https://cocoapods.org).\n\n### Swift Package Manager\n\nin `Package.swift` add the following:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/Swinject/SwinjectAutoregistration.git\", from: \"2.9.1\")\n],\ntargets: [\n    .target(\n        name: \"MyProject\",\n        dependencies: [..., \"SwinjectAutoregistration\"]\n    )\n    ...\n]\n```\n\n### Registration\n\nHere is a simple example to auto-register a pet owner\n\n```swift\nlet container = Container()\ncontainer.register(Animal.self) { _ in Cat(name: \"Mimi\") } // Regular register method\ncontainer.autoregister(Person.self, initializer: PetOwner.init) // Autoregistration\n```\n\nwhere PetOwner looks like this:\n\n```swift\nclass PetOwner: Person {\n    let pet: Animal\n\n    init(pet: Animal) {\n        self.pet = pet\n    }\n}\n```\n\nThe `autoregister` function is given the `PetOwner` initializer `init(pet:Animal)`. From its signature Swinject knows that it needs a dependency `Animal` and resolves it from the container. Nothing else is needed.\n\nAutoregistration becomes especially useful when used to register services with many dependencies. Compare autoregistration code:\n\n```swift\ncontainer.autoregister(MyService.self, initializer: MyService.init)\n```\n\nwith equivalent code in pure Swinject:\n\n```swift\ncontainer.register(MyService.self) { r in\n    MyService(dependencyA: r.resolve(DependencyA.self)!, dependencyB: r.resolve(DependencyB.self)!, dependencyC: r.resolve(DependencyC.self)!, dependencyD: r.resolve(DependencyD.self)!)\n}\n```\n\nAnother advantage is that if you add more dependencies during the development the registration code doesn't have to be rewritten.\n\n\n#### Registration with name\nService can be also given name - same as with the regular register method.\n\n```swift\ncontainer.autoregister(Person.self, name: \"johnny\", initializer: PetOwner.init)\n\n```\n\n#### Arguments\nYou can also use auto-registration for services with dynamic arguments. Pet owner whose name needs to be passed as argument is defined like this:\n\n```swift\nclass PetOwner: Person {\n    let name: String\n    let pet: Animal\n\n    init(name: String, pet: Animal) {\n        self.name = name\n        self.pet = pet\n    }\n}\n```\n\nAnd registered like this\n\n```swift\ncontainer.autoregister(Person.self, argument: String.self, initializer: PetOwner.init)\n```\n\nSwinject will register `Person` with the argument of type `String`. When `container.resolve(Person.self, argument: \"Michael\")` is called Swinject won't try to resolve `String` as dependency but instead pass \"Michael\" as the name.\n\nTo also pass pet as argument you can call\n\n```swift\ncontainer.autoregister(Person.self, arguments: String.self, Animal.self, initializer: PetOwner.init)\n//or\ncontainer.autoregister(Person.self, arguments: Animal.self, String.self, initializer: PetOwner.init)\n```\n\n> The order of the arguments listed is interchangeable. The auto-registration can't be used with more arguments and/or dependencies of the same type.\n\n\n### What kind of sorcery is this?\n\nWondering how does that work? Generics are heavily leveraged for the auto-registration. For registering service with two dependencies something similar to a following function is used:\n\n```swift\npublic func autoregister<Service, A, B>(_ service: Service.Type, initializer: (A, B) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, factory: { r in\n       return initializer(r.resolve(A.self)!, r.resolve(B.self)!)\n   } as (ResolverType) -> Service)\n}\n```\n\nThe initializer is a function like any other. By passing it as a parameter its dependencies can be inferred as `(A, B)` and automatically resolved. These functions are generated for up to 20 dependencies. Checkout the [code](https://github.com/Swinject/SwinjectAutoregistration/blob/master/Sources/AutoRegistration.swift) for more info.\n\n### Operators ###\nThis extension also aims to reduce the amount of boilerplate while improving readability of the registration code. For that reason the operator `~>` is introduced.\n\n```swift\nPetowner(pet: r~>)\n\n// equivalent to\n\nPetowner(pet: r.resolve(Animal.self)!)\n```\n\nThe dependency is again inferred from the type in the initializer. To specify a concrete class you can use:\n\n```swift\nPetowner(pet: r ~> Cat.self)\n```\n\nTo use a named service:\n\n```swift\nPetowner(pet: r ~> (Cat.self, name: \"mimi\"))\n```\n\nor to pass argument/s:\n\n```swift\nPetowner(pet: r ~> (Cat.self, argument: \"Mimi\"))\nPetowner(pet: r ~> (Cat.self, arguments: (\"Mimi\", UIColor.black)))\n\n```\n\n### Limitations ###\nWhen a service has multiple initializers, swift compiler can't be sure which should be used and you will get a `ambigious use of init(x: y: z:)`. This can also happen if the service is extending another class that have initializer with the same number of arguments.\n\nThe solution is to specify the initializer like this:\n\n```\ncontainer.autoregister(Person.self, initializer: PetOwner.init(name:pet:))\n```\n\nAuto-registration **can't** be used with **named dependencies** in their initializers. There is no way to get a name of dependency from the initializer. For example, following code can't be auto-registered:\n\n```swift\ncontainer.register(Animal.self, name: \"mimi\") { _ in Cat(name: \"Mimi\") }\ncontainer.register(Animal.self, name: \"charles\") { _ in Cat(name: \"Charles\") }\ncontainer.register(Person.self) {\n    PetOwner(pet: r.resolve(Animal.self, name: \"mimi\")\n}\n```\n\n### Swift 5.3\nSince Swift 5.3 the compiler behaves differently when infering initializers in structs that have variables with a default value:\n\n```swift\nstruct Cat {\n    let height: Int = 50\n}\n```\n\nCompiler will generate two init functions:\n\n`Cat.init` and `Cat.init(height:)`\n\nSince the Swift 5.3 the following registration\n\n```swift\ncontainer.autoregister(Animal.self, initializer: Cat.init)\n```\n\nwill try to use the `Cat.init(height:)` which will then fail with `Unresolved service: Int Initializer: (Int) -> Animal`\n\nSolution is to make the compiler use the init without a parameter\n\n```swift\ncontainer.autoregister(Animal.self, initializer: Cat.init as () -> Cat)\n```\n\n## For Maintainers\n\n  ### Making a new release version\n\n  Our release procedure is described as [Makefile](https://github.com/Swinject/SwinjectAutoregistration/blob/master/Makefile). Run `make help` coomand for more info.\n\n## Credits\n\nSwinjectAutoregistration generics is inspired by:\n- [Curry](https://github.com/thoughtbot/Curry) - [Thoughtbot](https://thoughtbot.com/)\n\n## License\n\nMIT license. See the [LICENSE file](LICENSE) for details.\n"
  },
  {
    "path": "Sources/AutoRegistration.swift",
    "content": "//\n//  Sources/AutoRegistration.swift\n//  SwinjectAutoregistration\n//\n//  Generated by Swinject AutoRegistration generator.\n//  Copyright © 2017 Swinject Contributors. All rights reserved.\n//\n\n\nimport Swinject\n\n\nlet maxDependencies = 20\nlet maxArguments = 3\n\n\npublic extension Container {\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service>(_ service: Service.Type, name: String? = nil, initializer: @escaping (()) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n       initializer(())\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A>(_ service: Service.Type, name: String? = nil, initializer: @escaping (A) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve()\n           checkResolved(initializer: initializer, services: a)\n           return initializer(a!)\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping (Arg1) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let arg1: Arg1? = arg1\n           checkResolved(initializer: initializer, services: arg1)\n           return initializer(arg1!)\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b)\n           return initializer((a!, b!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b)\n           return initializer((a!, b!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b)\n           return initializer((a!, b!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c)\n           return initializer((a!, b!, c!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c)\n           return initializer((a!, b!, c!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c)\n           return initializer((a!, b!, c!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c)\n           return initializer((a!, b!, c!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d)\n           return initializer((a!, b!, c!, d!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d)\n           return initializer((a!, b!, c!, d!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d)\n           return initializer((a!, b!, c!, d!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d)\n           return initializer((a!, b!, c!, d!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e)\n           return initializer((a!, b!, c!, d!, e!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e)\n           return initializer((a!, b!, c!, d!, e!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e)\n           return initializer((a!, b!, c!, d!, e!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e)\n           return initializer((a!, b!, c!, d!, e!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f)\n           return initializer((a!, b!, c!, d!, e!, f!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f)\n           return initializer((a!, b!, c!, d!, e!, f!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f)\n           return initializer((a!, b!, c!, d!, e!, f!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f)\n           return initializer((a!, b!, c!, d!, e!, f!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)\n           return initializer((a!, b!, c!, d!, e!, f!, g!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)\n           return initializer((a!, b!, c!, d!, e!, f!, g!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)\n           return initializer((a!, b!, c!, d!, e!, f!, g!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g)\n           return initializer((a!, b!, c!, d!, e!, f!, g!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve(); let r: R? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1); let r: R? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2); let r: R? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3); let r: R? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve(); let r: R? = res.resolve(); let s: S? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1); let r: R? = res.resolve(argument: arg1); let s: S? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2); let r: R? = res.resolve(arguments: arg1, arg2); let s: S? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3); let r: R? = res.resolve(arguments: arg1, arg2, arg3); let s: S? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry \n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(_ service: Service.Type, name: String? = nil, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res in \n           let a: A? = res.resolve(); let b: B? = res.resolve(); let c: C? = res.resolve(); let d: D? = res.resolve(); let e: E? = res.resolve(); let f: F? = res.resolve(); let g: G? = res.resolve(); let h: H? = res.resolve(); let i: I? = res.resolve(); let j: J? = res.resolve(); let k: K? = res.resolve(); let l: L? = res.resolve(); let m: M? = res.resolve(); let n: N? = res.resolve(); let o: O? = res.resolve(); let p: P? = res.resolve(); let q: Q? = res.resolve(); let r: R? = res.resolve(); let s: S? = res.resolve(); let t: T? = res.resolve()\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))\n\n   } as (Resolver) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, argument: Arg1.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - argument: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 1 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Arg1>(_ service: Service.Type, name: String? = nil, argument  arg1: Arg1.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {\n   return self.register(service.self, name: name, factory: { res, arg1 in \n           let a: A? = res.resolve(argument: arg1); let b: B? = res.resolve(argument: arg1); let c: C? = res.resolve(argument: arg1); let d: D? = res.resolve(argument: arg1); let e: E? = res.resolve(argument: arg1); let f: F? = res.resolve(argument: arg1); let g: G? = res.resolve(argument: arg1); let h: H? = res.resolve(argument: arg1); let i: I? = res.resolve(argument: arg1); let j: J? = res.resolve(argument: arg1); let k: K? = res.resolve(argument: arg1); let l: L? = res.resolve(argument: arg1); let m: M? = res.resolve(argument: arg1); let n: N? = res.resolve(argument: arg1); let o: O? = res.resolve(argument: arg1); let p: P? = res.resolve(argument: arg1); let q: Q? = res.resolve(argument: arg1); let r: R? = res.resolve(argument: arg1); let s: S? = res.resolve(argument: arg1); let t: T? = res.resolve(argument: arg1)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))\n\n   } as (Resolver, Arg1) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 2 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Arg1, Arg2>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2 in \n           let a: A? = res.resolve(arguments: arg1, arg2); let b: B? = res.resolve(arguments: arg1, arg2); let c: C? = res.resolve(arguments: arg1, arg2); let d: D? = res.resolve(arguments: arg1, arg2); let e: E? = res.resolve(arguments: arg1, arg2); let f: F? = res.resolve(arguments: arg1, arg2); let g: G? = res.resolve(arguments: arg1, arg2); let h: H? = res.resolve(arguments: arg1, arg2); let i: I? = res.resolve(arguments: arg1, arg2); let j: J? = res.resolve(arguments: arg1, arg2); let k: K? = res.resolve(arguments: arg1, arg2); let l: L? = res.resolve(arguments: arg1, arg2); let m: M? = res.resolve(arguments: arg1, arg2); let n: N? = res.resolve(arguments: arg1, arg2); let o: O? = res.resolve(arguments: arg1, arg2); let p: P? = res.resolve(arguments: arg1, arg2); let q: Q? = res.resolve(arguments: arg1, arg2); let r: R? = res.resolve(arguments: arg1, arg2); let s: S? = res.resolve(arguments: arg1, arg2); let t: T? = res.resolve(arguments: arg1, arg2)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))\n\n   } as (Resolver, Arg1, Arg2) -> Service)\n}\n\n/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\n \n Usage: `autoregister(MyService.self, arguments: Arg1.self, Arg2.self, Arg3.self), initializer: MyService.init`\n - Parameters:\n    - service: Registered service type\n    - name: Optional name of the service\n    - arguments: Argument type(s) that will be resolved dynamically instead of resolving dependency\n    - initializer: Initializer of the registered service\n - Returns: The registered service entry with 3 arguments\n - Important: Might fail if one of the dependencies is unresolvable.\n */\n@discardableResult\nfunc autoregister<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Arg1, Arg2, Arg3>(_ service: Service.Type, name: String? = nil, arguments  arg1: Arg1.Type, _ arg2: Arg2.Type, _ arg3: Arg3.Type, initializer: @escaping ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service) -> ServiceEntry<Service> {\n   precondition(hasUnique(arguments: [arg1, arg2, arg3]), \"Autoregistration of service with dynamic arguments of the same type (\\(arg1), \\(arg2), \\(arg3)) is not supported\")\n   return self.register(service.self, name: name, factory: { res, arg1, arg2, arg3 in \n           let a: A? = res.resolve(arguments: arg1, arg2, arg3); let b: B? = res.resolve(arguments: arg1, arg2, arg3); let c: C? = res.resolve(arguments: arg1, arg2, arg3); let d: D? = res.resolve(arguments: arg1, arg2, arg3); let e: E? = res.resolve(arguments: arg1, arg2, arg3); let f: F? = res.resolve(arguments: arg1, arg2, arg3); let g: G? = res.resolve(arguments: arg1, arg2, arg3); let h: H? = res.resolve(arguments: arg1, arg2, arg3); let i: I? = res.resolve(arguments: arg1, arg2, arg3); let j: J? = res.resolve(arguments: arg1, arg2, arg3); let k: K? = res.resolve(arguments: arg1, arg2, arg3); let l: L? = res.resolve(arguments: arg1, arg2, arg3); let m: M? = res.resolve(arguments: arg1, arg2, arg3); let n: N? = res.resolve(arguments: arg1, arg2, arg3); let o: O? = res.resolve(arguments: arg1, arg2, arg3); let p: P? = res.resolve(arguments: arg1, arg2, arg3); let q: Q? = res.resolve(arguments: arg1, arg2, arg3); let r: R? = res.resolve(arguments: arg1, arg2, arg3); let s: S? = res.resolve(arguments: arg1, arg2, arg3); let t: T? = res.resolve(arguments: arg1, arg2, arg3)\n           checkResolved(initializer: initializer, services: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)\n           return initializer((a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!))\n\n   } as (Resolver, Arg1, Arg2, Arg3) -> Service)\n}\n\n\n}"
  },
  {
    "path": "Sources/CheckResolved.swift",
    "content": "//\n//  Sources/CheckResolved.swift\n//  SwinjectAutoregistration\n//\n//  Generated by Swinject AutoRegistration generator.\n//  Copyright © 2017 Swinject Contributors. All rights reserved.\n//\n\n\nimport Swinject\n\n\nfunc unresolvedService<A>(_ a: A?) -> String? {\n   return ( a == nil ? \"\\(A.self)\" : nil )\n}\n\nfunc checkResolved<Service, A>(initializer: (A) -> Service, services a: A?){\n   let unresolved = ( [a] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a)!)\\nInitializer: (\\(A.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B>(_ a: A?, _ b: B?) -> String? {\n   return unresolvedService(a) ?? ( b == nil ? \"\\(B.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B>(initializer: ((A, B)) -> Service, services a: A?, _ b: B?){\n   let unresolved = ( [a, b] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b)!)\\nInitializer: (\\(A.self), \\(B.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C>(_ a: A?, _ b: B?, _ c: C?) -> String? {\n   return unresolvedService(a, b) ?? ( c == nil ? \"\\(C.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C>(initializer: ((A, B, C)) -> Service, services a: A?, _ b: B?, _ c: C?){\n   let unresolved = ( [a, b, c] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D>(_ a: A?, _ b: B?, _ c: C?, _ d: D?) -> String? {\n   return unresolvedService(a, b, c) ?? ( d == nil ? \"\\(D.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D>(initializer: ((A, B, C, D)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?){\n   let unresolved = ( [a, b, c, d] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?) -> String? {\n   return unresolvedService(a, b, c, d) ?? ( e == nil ? \"\\(E.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E>(initializer: ((A, B, C, D, E)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?){\n   let unresolved = ( [a, b, c, d, e] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?) -> String? {\n   return unresolvedService(a, b, c, d, e) ?? ( f == nil ? \"\\(F.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F>(initializer: ((A, B, C, D, E, F)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?){\n   let unresolved = ( [a, b, c, d, e, f] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?) -> String? {\n   return unresolvedService(a, b, c, d, e, f) ?? ( g == nil ? \"\\(G.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G>(initializer: ((A, B, C, D, E, F, G)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?){\n   let unresolved = ( [a, b, c, d, e, f, g] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g) ?? ( h == nil ? \"\\(H.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H>(initializer: ((A, B, C, D, E, F, G, H)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?){\n   let unresolved = ( [a, b, c, d, e, f, g, h] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h) ?? ( i == nil ? \"\\(I.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I>(initializer: ((A, B, C, D, E, F, G, H, I)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i) ?? ( j == nil ? \"\\(J.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J>(initializer: ((A, B, C, D, E, F, G, H, I, J)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j) ?? ( k == nil ? \"\\(K.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K>(initializer: ((A, B, C, D, E, F, G, H, I, J, K)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k) ?? ( l == nil ? \"\\(L.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l) ?? ( m == nil ? \"\\(M.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m) ?? ( n == nil ? \"\\(N.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n) ?? ( o == nil ? \"\\(O.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n, o] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self), \\(O.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) ?? ( p == nil ? \"\\(P.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n, o, p] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self), \\(O.self), \\(P.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) ?? ( q == nil ? \"\\(Q.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n, o, p, q] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self), \\(O.self), \\(P.self), \\(Q.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?, _ r: R?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) ?? ( r == nil ? \"\\(R.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?, _ r: R?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n, o, p, q, r] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self), \\(O.self), \\(P.self), \\(Q.self), \\(R.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?, _ r: R?, _ s: S?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) ?? ( s == nil ? \"\\(S.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?, _ r: R?, _ s: S?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n, o, p, q, r, s] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self), \\(O.self), \\(P.self), \\(Q.self), \\(R.self), \\(S.self)) -> \\(Service.self)\")\n   }\n}\n\nfunc unresolvedService<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(_ a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?, _ r: R?, _ s: S?, _ t: T?) -> String? {\n   return unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) ?? ( t == nil ? \"\\(T.self)\" : nil )\n}\n\nfunc checkResolved<Service, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(initializer: ((A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)) -> Service, services a: A?, _ b: B?, _ c: C?, _ d: D?, _ e: E?, _ f: F?, _ g: G?, _ h: H?, _ i: I?, _ j: J?, _ k: K?, _ l: L?, _ m: M?, _ n: N?, _ o: O?, _ p: P?, _ q: Q?, _ r: R?, _ s: S?, _ t: T?){\n   let unresolved = ( [a, b, c, d, e, f, g, h, i, j] as [Any?] + [k, l, m, n, o, p, q, r, s, t] as [Any?] ).filter { $0 == nil }\n   if unresolved.count > 0 {\n       let errorMessage = resolutionErrors(forInitializer: initializer).map { \"\\($0.message)\\n\" }.joined()\n       fatalError(\"SwinjectAutoregistration: Resolution failed.\\n\\(errorMessage)Unresolved service: \\(unresolvedService(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)!)\\nInitializer: (\\(A.self), \\(B.self), \\(C.self), \\(D.self), \\(E.self), \\(F.self), \\(G.self), \\(H.self), \\(I.self), \\(J.self), \\(K.self), \\(L.self), \\(M.self), \\(N.self), \\(O.self), \\(P.self), \\(Q.self), \\(R.self), \\(S.self), \\(T.self)) -> \\(Service.self)\")\n   }\n}"
  },
  {
    "path": "Sources/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.9.1</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2016 Swinject Contributors. All rights reserved.</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Sources/Operators.swift",
    "content": "//\n//  Swinject+Operators.swift\n//  Pods\n//\n//  Created by Tomas Kohout on 8/30/16.\n//  Copyright © 2016 Swinject Contributors. All rights reserved.\n//\n\nimport Swinject\nimport Foundation\n\n//Already declared in Swift\n//infix operator ~> { associativity left precedence 160 }\npostfix operator ~>\n\n/** Unary operator which automatically resolves the return type\n Usage: `SomeClass(dependencyA: r~>, dependencyB: r~>)`\n - Parameters:\n - r: Resolver\n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic postfix func ~> <Service>(r: Resolver) -> Service {\n    return r.resolve(Service.self)!\n}\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type)!`\n \n Usage: `SomeClass(dependencyA: r ~> DependencyA.self)`\n - Parameters:\n - r: Resolver\n - service: Type of service to resolve.\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service>(r: Resolver, service: Service.Type) -> Service {\n    return r.resolve(service)!\n}\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, name: \"ServiceName\")!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, name: \"ServiceName\"))`\n - Parameters:\n - r: Resolver\n - service: Type of service to resolve.\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service>(r: Resolver, o: (service: Service.Type, name: String)) -> Service {\n    return r.resolve(o.service, name: o.name)!\n}\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, argument: Arg1)!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, argument: arg))`\n - Parameters:\n - r: Resolver\n - o.service: Type of service to resolve.\n - o.argument: Argument to pass\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service, Arg1>(r: Resolver, o: (service: Service.Type, argument: Arg1) ) -> Service {\n    return r.resolve(o.service, argument: o.argument)!\n}\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, name: String, argument: Arg1)!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, name: \"ServiceName\", argument: arg))`\n - Parameters:\n - r: Resolver\n - o.service: Type of service to resolve.\n - o.argument: Argument to pass\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service, Arg1>(r: Resolver, o: (service: Service.Type, name: String, argument: Arg1) ) -> Service {\n    return r.resolve(o.service, name: o.name, argument: o.argument)!\n}\n\n//@available(*, deprecated, message: \"Arguments passed in sequence have been deprecated, pass arguments in tuple instead. e.g: ~> (Service.self, arguments: (arg1, arg2))\")\n//public func ~> <Service, Arg1: Any, Arg2: Any>(r: Resolver, o: (Service.Type, arguments: Arg1, Arg2) ) -> Service {\n//    return r.resolve(o.0, arguments: o.1, o.2)!\n//}\n\n@available(*, deprecated, message: \"Comma-separated arguments have been deprecated, pass arguments in tuple instead. e.g: ~> (Service.self, name: \\\"Service\\\", arguments: (arg1, arg2))\")\npublic func ~> <Service, Arg1, Arg2>(r: Resolver, o: (Service.Type, name: String, arguments: Arg1, Arg2) ) -> Service {\n    return r.resolve(o.0, name: o.1, arguments: o.2, o.3)!\n}\n\n@available(*, deprecated, message: \"Comma-separated arguments have been deprecated, pass arguments in tuple instead. e.g: ~> (Service.self, arguments: (arg1, arg2, arg3))\")\npublic func ~> <Service, Arg1, Arg2, Arg3>(r: Resolver, o: (Service.Type, arguments: Arg1, Arg2, Arg3) ) -> Service {\n    return r.resolve(o.0, arguments: o.1, o.2, o.3)!\n}\n\n@available(*, deprecated, message: \"Comma-separated arguments have been deprecated, pass arguments in tuple instead. e.g: ~> (Service.self, name: \\\"Service\\\", arguments: (arg1, arg2, arg3))\")\npublic func ~> <Service, Arg1, Arg2, Arg3>(r: Resolver, o: (Service.Type, name: String, arguments: Arg1, Arg2, Arg3) ) -> Service {\n    return r.resolve(o.0, name: o.1, arguments: o.2, o.3, o.4)!\n}\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, arguments: (Arg1, Arg2))!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, arguments: (arg1, arg2)))`\n - Parameters:\n - r: Resolver\n - o.service: Type of service to resolve.\n - o.arguments: Arguments to pass\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service, Arg1, Arg2>(r: Resolver, o: (Service.Type, arguments: (Arg1, Arg2)) ) -> Service {\n    return r.resolve(o.0, arguments: o.arguments.0, o.arguments.1)!\n}\n\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, name: \"ServiceName\", arguments: (Arg1, Arg2))!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, name: \"ServiceName\", arguments: (arg1, arg2)))`\n - Parameters:\n - r: Resolver\n - o.service: Type of service to resolve.\n - o.arguments: Arguments to pass\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service, Arg1, Arg2>(r: Resolver, o: (Service.Type, name: String, arguments: (Arg1, Arg2)) ) -> Service {\n    return r.resolve(o.0, name: o.1, arguments: o.arguments.0, o.arguments.1)!\n}\n\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, arguments: (Arg1, Arg2, Arg3))!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, arguments: (arg1, arg2, arg3)))`\n - Parameters:\n - r: Resolver\n - o.service: Type of service to resolve.\n - o.arguments: Arguments to pass\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service, Arg1, Arg2, Arg3>(r: Resolver, o: (Service.Type, arguments: (Arg1, Arg2, Arg3)) ) -> Service {\n    return r.resolve(o.0, arguments: o.arguments.0, o.arguments.1, o.arguments.2)!\n}\n\n/** Binary operator ~> equivalent to `r.resolve(Service.Type, name: \"ServiceName\", arguments: (Arg1, Arg2, Arg3))!`\n \n Usage: `SomeClass(dependencyA: r ~> (DependencyA.self, name: \"ServiceName\", arguments: (arg1, arg2, arg3)))`\n - Parameters:\n - r: Resolver\n - o.service: Type of service to resolve.\n - o.arguments: Arguments to pass\n \n - Returns: The resolved service type instance.\n - Important: Fails on unresolvable service.\n */\npublic func ~> <Service, Arg1, Arg2, Arg3>(r: Resolver, o: (Service.Type, name: String, arguments: (Arg1, Arg2, Arg3)) ) -> Service {\n    return r.resolve(o.0, name: o.1, arguments: o.arguments.0, o.arguments.1, o.arguments.2)!\n}\n"
  },
  {
    "path": "Sources/ResolutionError.swift",
    "content": "//\n//  Warnings.swift\n//  SwinjectAutoregistration\n//\n//  Created by Tomas Kohout on 18/01/2017.\n//  Copyright © 2017 Swinject Contributors. All rights reserved.\n//\n\nimport Foundation\n\nenum ResolutionError {\n    case tooManyDependencies(Int)\n    var message: String {\n        switch self {\n        case .tooManyDependencies(let dependencyCount):\n            return \"⚠ Autoregistration is limited to maximum of \\(maxDependencies) dependencies, tried to resolve \\(dependencyCount). Use regular `register` method instead. \"\n        }\n    }\n}\n\n/// Shows warnings based on information parsed from initializers description\n\nfunc resolutionErrors<Service, Parameters>(forInitializer initializer: (Parameters) -> Service) -> [ResolutionError] {\n    #if os(Linux) || os(Android)\n        //Warnings are not supported on Linux\n        return []\n    #else\n    let parser = TypeParser(string: String(describing: Parameters.self))\n    guard let type = parser.parseType() else { return [] }\n    \n    let dependencies: [Type]\n    \n    //Multiple arguments\n    if case .tuple(let types) = type {\n        dependencies = types\n    //Single argument\n    } else if case .identifier(_) = type {\n        dependencies = [type]\n    } else {\n        return []\n    }\n    \n    var warnings: [ResolutionError]  = []\n    \n    if dependencies.count > maxDependencies {\n        warnings.append(.tooManyDependencies(dependencies.count))\n    }\n    \n    return warnings\n    #endif\n}\n\nfunc hasUnique(arguments: [Any.Type]) -> Bool {\n    for (index, arg) in arguments.enumerated() {\n        if (arguments.enumerated().filter { index != $0 && arg == $1 }).count > 0 {\n            return false\n        }\n    }\n    return true\n}\n"
  },
  {
    "path": "Sources/Resolver.swift",
    "content": "//\n//  Sources/Resolver.swift\n//  SwinjectAutoregistration\n//\n//  Generated by Swinject AutoRegistration generator.\n//  Copyright © 2017 Swinject Contributors. All rights reserved.\n//\n\n\nimport Swinject\n\n\nextension Resolver {\n\n\n    func resolve<Service>() -> Service? {\n       return self.resolve(Service.self)\n    }\n\n    func resolve<Service, Arg1>(argument  arg1: Arg1) -> Service? {\n       return (arg1 as? Service) ?? self.resolve(Service.self)\n    }\n\n    func resolve<Service, Arg1, Arg2>(arguments  arg1: Arg1, _ arg2: Arg2) -> Service? {\n       return (arg1 as? Service) ?? (arg2 as? Service) ?? self.resolve(Service.self)\n    }\n\n    func resolve<Service, Arg1, Arg2, Arg3>(arguments  arg1: Arg1, _ arg2: Arg2, _ arg3: Arg3) -> Service? {\n       return (arg1 as? Service) ?? (arg2 as? Service) ?? (arg3 as? Service) ?? self.resolve(Service.self)\n    }\n}\n\n"
  },
  {
    "path": "Sources/SwinjectAutoregistration.h",
    "content": "//\n//  SwinjectAutoregistration-iOS.h\n//  SwinjectAutoregistration-iOS\n//\n//  Created by Jakub Vaňo on 09/09/16.\n//  Copyright © 2016 Swinject Contributors. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n//! Project version number for SwinjectAutoregistration-iOS.\nFOUNDATION_EXPORT double SwinjectAutoregistration_iOSVersionNumber;\n\n//! Project version string for SwinjectAutoregistration-iOS.\nFOUNDATION_EXPORT const unsigned char SwinjectAutoregistration_iOSVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <SwinjectAutoregistration_iOS/PublicHeader.h>\n\n\n"
  },
  {
    "path": "Sources/Type.swift",
    "content": "//\n//  Type.swift\n//  SwinjectAutoregistration\n//\n//  Created by Tomas Kohout on 21/01/2017.\n//  Copyright © 2017 Swinject Contributors. All rights reserved.\n//\n\nimport Foundation\n\nclass TypeIdentifier: CustomStringConvertible {\n    var name: String\n    var genericTypes: [Type]\n    var subTypeIdentifier: TypeIdentifier?\n    \n    init(name: String, genericTypes: [Type] = [], subTypeIdentifier: TypeIdentifier? = nil){\n        self.name = name\n        self.genericTypes = genericTypes\n        self.subTypeIdentifier = subTypeIdentifier\n    }\n    \n    var description: String {\n        let generics = genericTypes.count > 0 ? \"<\\(genericTypes.map { \"\\($0)\" }.joined(separator: \", \"))>\" : \"\"\n        let subType = subTypeIdentifier.flatMap { \".\\($0)\" } ?? \"\"\n        return \"\\(name)\" + generics + subType\n    }\n}\n\nextension TypeIdentifier: Equatable {\n    static func ==(lhs: TypeIdentifier, rhs: TypeIdentifier) -> Bool {\n        return lhs.name == rhs.name && lhs.genericTypes == rhs.genericTypes && lhs.subTypeIdentifier == rhs.subTypeIdentifier\n    }\n}\n\nindirect enum Type: CustomStringConvertible {\n    case closure(parameters:[Type], returnType: Type, throws: Bool)\n    case identifier(TypeIdentifier)\n    case tuple([Type])\n    case protocolComposition([TypeIdentifier])\n    \n    var description: String {\n        switch self {\n        case .closure(let parameters, let returnType, let `throws`):\n            return \"(\\(parameters.map { \"\\($0)\" }.joined(separator: \", \"))) \\(`throws` ? \"throws \" : \"\")-> \\(returnType)\"\n        case .identifier(let identifier):\n            return \"\\(identifier)\"\n        case .tuple(let types):\n            return \"(\\(types.map { \"\\($0)\" }.joined(separator: \", \")))\"\n        case .protocolComposition(let types):\n            return types.map { \"\\($0)\" }.joined(separator: \" & \")\n        }\n    }\n}\n\nextension Type: Equatable {\n    static func ==(lhs: Type, rhs: Type) -> Bool {\n        switch (lhs, rhs) {\n        case (.closure(let lparams, let lreturn, let lthrows), .closure(let rparams, let rreturn, let rthrows)):\n            return lparams == rparams && lreturn == rreturn && lthrows == rthrows\n        case (.identifier(let lidentifier), .identifier(let ridentifier)):\n            return lidentifier == ridentifier\n        case (.tuple(let ltuple), .tuple(let rtuple)):\n            return ltuple == rtuple\n        case (.protocolComposition(let lprotocols), .protocolComposition(let rprotocols)):\n            return lprotocols == rprotocols\n        default:\n            return false\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/TypeParser.swift",
    "content": "//\n//  Parser.swift\n//  SwinjectAutoregistration\n//\n//  Created by Tomas Kohout on 21/01/2017.\n//  Copyright © 2017 Swinject Contributors. All rights reserved.\n//\n\nimport Foundation\n#if !os(Linux) && !os(Android)\n\nextension Scanner {\n    func scan(string: String) -> String? {\n        if #available(iOS 13, macOS 10.15, tvOS 13, watchOS 6, *) {\n            return self.scanString(string)\n        } else {\n            var value: NSString?\n            if self.scanString(string, into: &value), let value = value {\n                return value as String\n            }\n            return nil\n        }\n    }\n    \n    func scan(charactersFromSet set: CharacterSet) -> String? {\n        if #available(iOS 13, macOS 10.15, tvOS 13, watchOS 6, *) {\n            return self.scanCharacters(from: set)\n        } else {\n            var value: NSString?\n            if self.scanCharacters(from: set, into: &value), let value = value {\n                return value as String\n            }\n            return nil\n        }\n    }\n}\n    \nextension NSMutableCharacterSet {\n    func insert(charactersIn range: Range<UnicodeScalar>) {\n        let nsRange = NSRange(location: Int(range.lowerBound.value), length: Int(range.upperBound.value - range.lowerBound.value))\n        self.addCharacters(in: nsRange)\n    }\n    \n    func insert(charactersIn string: String) {\n        self.addCharacters(in: string)\n    }\n    \n    func formUnion(_ set: CharacterSet) {\n        self.formUnion(with: set)\n    }\n}\n\nprivate func ..<(start: Int, end: Int) -> Range<UnicodeScalar> {\n    return UnicodeScalar(start)! ..< UnicodeScalar(end)!\n}\n\n/// Simple top-down parser for type description based on swift grammatic:\n/// See https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html\n///\n/// type →\n///  [-] array-type­ - Printed as Array<...>\n///  [-] dictionary-type­ - Printed as Dictionary<...>\n///  [x] function-type­ `tuple-type throws? -> type`\n///  [x] type-identifier­ `identifier ­generic-argument-clause? .­ type-identifier?­`\n///  [x] tuple-type­ `type,? type ...`\n///  [-] optional-type­ - Printed as Optional<...>\n///  [-] implicitly-unwrapped-optional-type­ - Printed as ImplicitlyUnwrappedOptional<...>\n///  [x] protocol-composition-type­ `identifier & identifier ...`\n///  [-] metatype-type­ - recognized by type identifier\n///  [-] Any, Self - recognized by type identifier\n///\n///  [x] identifier → identifier-head ­identifier-characters?­\n///  [-] identifier → `­identifier-head­identifier-characters­?`­ - backticks are not printed\n///  [-] identifier → implicit-parameter-name­ - e.g. $0, $1 - not needed in type\n///  [x] identifier-list → identifier­ | identifier­,­identifier-list\n\nclass TypeParser {\n    \n    let scanner: Scanner\n    \n    init(string: String){\n        scanner = Scanner(string: string)\n        scanner.charactersToBeSkipped = CharacterSet.whitespacesAndNewlines\n    }\n    \n    func parseType() -> Type? {\n        if let function = parseFunctionType() {\n            return Type.closure(parameters: function.parameters, returnType: function.returnType, throws: function.throws)\n        } else if let protocolComposition = parseProtocolCompositionClause() {\n            return Type.protocolComposition(protocolComposition)\n        } else if let typeIdentifier = parseTypeIdentifier() {\n            return Type.identifier(typeIdentifier)\n        } else if let tupleType = parseTupleType() {\n            return Type.tuple(tupleType)\n        }\n        \n        return nil\n    }\n    \n    func parseTypeAnnotation() -> Type? {\n        let originalLocation = scanner.scanLocation\n        \n        //Scan param name\n        _ = parseIdentifier()\n        \n        //Return if param name is not specified\n        if scanner.scan(string: \":\") == nil {\n            scanner.scanLocation = originalLocation\n        }\n        \n        return parseType()\n    }\n    \n    func parseTypeIdentifier() -> TypeIdentifier? {\n        guard let typeName = parseIdentifier() else { return nil }\n        \n        let genericTypes = parseGenericArgumentClause() ?? []\n        var subTypeIdentifier: TypeIdentifier? = nil\n        \n        if scanner.scan(string: \".\") != nil, let typeIdentifier = parseTypeIdentifier() {\n            subTypeIdentifier = typeIdentifier\n        }\n        \n        return TypeIdentifier(name: typeName, genericTypes: genericTypes, subTypeIdentifier: subTypeIdentifier)\n        \n    }\n    \n    func parseGenericArgumentClause() -> [Type]? {\n        guard scanner.scan(string: \"<\") != nil else { return nil }\n        guard let type = parseType() else { return nil }\n        \n        var types: [Type] = [type]\n        \n        while scanner.scan(string: \",\") != nil, let type = parseType(){\n            types.append(type)\n        }\n        \n        guard scanner.scan(string: \">\") != nil else { return nil }\n        return types\n    }\n    \n    func parseProtocolCompositionClause() -> [TypeIdentifier]? {\n        let originalLocation = scanner.scanLocation\n        \n        guard let protocolType = parseTypeIdentifier() else { return nil }\n        \n        var protocolTypes: [TypeIdentifier] = [protocolType]\n        \n        while scanner.scan(string: \"&\") != nil, let protocolType = parseTypeIdentifier() {\n            protocolTypes.append(protocolType)\n        }\n        \n        guard protocolTypes.count > 1 else { scanner.scanLocation = originalLocation; return nil; }\n        \n        return protocolTypes\n    }\n    \n    func parseTupleType() -> [Type]? {\n        guard scanner.scan(string: \"(\") != nil else { return nil }\n        \n        var types: [Type] = []\n        \n        if let type = parseTypeAnnotation() { types.append(type) }\n        \n        \n        \n        while scanner.scan(string: \",\") != nil, let type = parseTypeAnnotation() {\n            types.append(type)\n        }\n        \n        guard scanner.scan(string: \")\") != nil else { return nil }\n        \n        return types\n    }\n    \n    func parseFunctionType() -> (parameters: [Type], returnType: Type, throws: Bool)? {\n        let originalLocation = scanner.scanLocation\n        \n        guard let parameters = parseTupleType() else { return nil }\n        \n        let `throws` = scanner.scan(string: \"throws\") != nil\n        // - rethrows is not allowed for closures\n        \n        guard scanner.scan(string: \"->\") != nil else { scanner.scanLocation = originalLocation; return nil }\n        \n        guard let returnType = parseType() else { scanner.scanLocation = originalLocation; return nil }\n        \n        return (parameters: parameters, returnType: returnType, throws: `throws`)\n        \n    }\n    \n    func parseIdentifier() -> String? {\n        // See https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/identifier-head\n        \n        //Identifier head\n        #if os(Linux) || os(Android)\n            var head = CharacterSet()\n        #else\n            let head = NSMutableCharacterSet()\n        #endif\n        head.formUnion(CharacterSet.letters)\n        head.insert(charactersIn: \"_\")\n        \n        let ranges = [\n            0x00A8 ..< 0x00A8, 0x00AA ..< 0x00AA,  0x00AD ..< 0x00AD, 0x00AF ..< 0x00AF, 0x00B2..<0x00B5, 0x00B7..<0x00BA,\n            0x00BC..<0x00BE, 0x00C0..<0x00D6, 0x00D8..<0x00F6, 0x00F8..<0x00FF,\n            0x0100..<0x02FF, 0x0370..<0x167F, 0x1681..<0x180D, 0x180F..<0x1DBF,\n            0x1E00..<0x1FFF,\n            0x200B..<0x200D, 0x202A..<0x202E, 0x203F..<0x2040, 0x2054..<0x2054, 0x2060..<0x206F,\n            0x2070..<0x20CF, 0x2100..<0x218F, 0x2460..<0x24FF, 0x2776..<0x2793,\n            0x2C00..<0x2DFF, 0x2E80..<0x2FFF,\n            0x3004..<0x3007, 0x3021..<0x302F, 0x3031..<0x303F, 0x3040..<0xD7FF,\n            0xF900..<0xFD3D, 0xFD40..<0xFDCF, 0xFDF0..<0xFE1F, 0xFE30..<0xFE44,\n            0xFE47..<0xFFFD,\n            //Emoticons\n            0x10000..<0x1FFFD, 0x20000..<0x2FFFD, 0x30000..<0x3FFFD, 0x40000..<0x4FFFD,\n            0x50000..<0x5FFFD, 0x60000..<0x6FFFD, 0x70000..<0x7FFFD, 0x80000..<0x8FFFD,\n            0x90000..<0x9FFFD, 0xA0000..<0xAFFFD, 0xB0000..<0xBFFFD, 0xC0000..<0xCFFFD,\n            0xD0000..<0xDFFFD, 0xE0000..<0xEFFFD]\n        \n        ranges.forEach { head.insert(charactersIn: $0) }\n        \n        //Identifier characters\n        #if os(Linux) || os(Android)\n            var characters = head\n        #else\n            let characters = head.copy() as! NSMutableCharacterSet\n        #endif\n        characters.insert(charactersIn: \"0123456789\")\n        \n        \n        let charactersRanges =  [0x0300..<0x036F, 0x1DC0..<0x1DFF, 0x20D0..<0x20FF, 0xFE20..<0xFE2F]\n        charactersRanges.forEach { characters.insert(charactersIn: $0) }\n        \n        guard let headString = scanner.scan(charactersFromSet: head as CharacterSet) else { return nil }\n        \n        let charactersString = scanner.scan(charactersFromSet: characters as CharacterSet)\n        return \"\\(headString)\\(charactersString ?? \"\")\"\n    }\n    \n}\n\n#endif\n"
  },
  {
    "path": "SwinjectAutoregistration.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name             = 'SwinjectAutoregistration'\n  s.version          = \"2.9.1\"\n  s.summary          = 'Autoregistration for Swinject'\n  s.description      = <<-DESC\nSwinjectAutoregistration is an extension of Swinject that allows to automatically inject dependencies into registered services.\n                       DESC\n\n  s.homepage         = 'https://github.com/Swinject/SwinjectAutoregistration'\n  s.license          = { :type => 'MIT', :file => 'LICENSE' }\n  s.author           = 'Swinject Contributors'\n  s.source           = { :git => 'https://github.com/Swinject/SwinjectAutoregistration.git', :tag => s.version.to_s }\n\n  s.ios.deployment_target = '11.0'\n  s.osx.deployment_target = '10.13'\n  s.watchos.deployment_target = '4.0'\n  s.tvos.deployment_target = '11.0'\n  s.requires_arc = true\n  s.swift_version = '5.0'\n  s.source_files = 'Sources/**/*.{swift,h}'\n  s.dependency 'Swinject', '~> 2.9.1'\nend\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 52;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t0A47832F25CCA1E600BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47833425CCA1F400BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47834125CCA20000BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47834625CCA20A00BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47834D25CCA21400BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47835225CCA21E00BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47835925CCA22700BE64FF /* Swinject.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; };\n\t\t0A47837625CCA28500BE64FF /* Swinject.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t0A47838125CCA33E00BE64FF /* Swinject.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t0A47838825CCA3B400BE64FF /* Swinject.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0A47832E25CCA1E600BE64FF /* Swinject.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t986C0CCC26906C6F001BFBFC /* AutoregistrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCB26906C6F001BFBFC /* AutoregistrationTests.swift */; };\n\t\t986C0CCD26906C6F001BFBFC /* AutoregistrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCB26906C6F001BFBFC /* AutoregistrationTests.swift */; };\n\t\t986C0CCE26906C6F001BFBFC /* AutoregistrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCB26906C6F001BFBFC /* AutoregistrationTests.swift */; };\n\t\t986C0CD0269076F6001BFBFC /* TypeParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCF269076F6001BFBFC /* TypeParserTests.swift */; };\n\t\t986C0CD1269076F6001BFBFC /* TypeParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCF269076F6001BFBFC /* TypeParserTests.swift */; };\n\t\t986C0CD2269076F6001BFBFC /* TypeParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCF269076F6001BFBFC /* TypeParserTests.swift */; };\n\t\tAC11910A1E301CD200B112D9 /* ResolutionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191091E301CD200B112D9 /* ResolutionError.swift */; };\n\t\tAC1191191E301E3A00B112D9 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191171E301E3A00B112D9 /* Resolver.swift */; };\n\t\tAC11911A1E301E3A00B112D9 /* CheckResolved.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191181E301E3A00B112D9 /* CheckResolved.swift */; };\n\t\tAC11911B1E30210200B112D9 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191171E301E3A00B112D9 /* Resolver.swift */; };\n\t\tAC11911C1E30210500B112D9 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191171E301E3A00B112D9 /* Resolver.swift */; };\n\t\tAC11911D1E30210500B112D9 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191171E301E3A00B112D9 /* Resolver.swift */; };\n\t\tAC11911E1E30210A00B112D9 /* CheckResolved.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191181E301E3A00B112D9 /* CheckResolved.swift */; };\n\t\tAC11911F1E30210B00B112D9 /* CheckResolved.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191181E301E3A00B112D9 /* CheckResolved.swift */; };\n\t\tAC1191201E30210C00B112D9 /* CheckResolved.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191181E301E3A00B112D9 /* CheckResolved.swift */; };\n\t\tAC1191211E30211300B112D9 /* ResolutionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191091E301CD200B112D9 /* ResolutionError.swift */; };\n\t\tAC1191221E30211400B112D9 /* ResolutionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191091E301CD200B112D9 /* ResolutionError.swift */; };\n\t\tAC1191231E30211500B112D9 /* ResolutionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1191091E301CD200B112D9 /* ResolutionError.swift */; };\n\t\tAC4AC9491E33C71D00E6355A /* TypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC9481E33C71D00E6355A /* TypeParser.swift */; };\n\t\tAC4AC94B1E33C75200E6355A /* Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC94A1E33C75200E6355A /* Type.swift */; };\n\t\tAC4AC94C1E33CB9100E6355A /* TypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC9481E33C71D00E6355A /* TypeParser.swift */; };\n\t\tAC4AC94D1E33CB9100E6355A /* TypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC9481E33C71D00E6355A /* TypeParser.swift */; };\n\t\tAC4AC94E1E33CB9200E6355A /* TypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC9481E33C71D00E6355A /* TypeParser.swift */; };\n\t\tAC4AC94F1E33CB9600E6355A /* Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC94A1E33C75200E6355A /* Type.swift */; };\n\t\tAC4AC9501E33CB9700E6355A /* Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC94A1E33C75200E6355A /* Type.swift */; };\n\t\tAC4AC9511E33CB9700E6355A /* Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4AC94A1E33C75200E6355A /* Type.swift */; };\n\t\tAC5A8FAB1ED1DAA00027334A /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5A8FAA1ED1DAA00027334A /* OperatorsTests.swift */; };\n\t\tAC5A8FBB1ED1DC2B0027334A /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5A8FAA1ED1DAA00027334A /* OperatorsTests.swift */; };\n\t\tAC5A8FBC1ED1DC2B0027334A /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5A8FAA1ED1DAA00027334A /* OperatorsTests.swift */; };\n\t\tACA1032F1E3E3397004B8CD4 /* ResolutionErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACA103271E3E3386004B8CD4 /* ResolutionErrorTests.swift */; };\n\t\tACA103301E3E3398004B8CD4 /* ResolutionErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACA103271E3E3386004B8CD4 /* ResolutionErrorTests.swift */; };\n\t\tACA103311E3E339A004B8CD4 /* ResolutionErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACA103271E3E3386004B8CD4 /* ResolutionErrorTests.swift */; };\n\t\tACA2557F2709E653007AA055 /* SwinjectAutoregistration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD5B9EF01D83323F007ED05F /* SwinjectAutoregistration.framework */; };\n\t\tACA255852709E679007AA055 /* AutoregistrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCB26906C6F001BFBFC /* AutoregistrationTests.swift */; };\n\t\tACA255862709E67D007AA055 /* TypeParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C0CCF269076F6001BFBFC /* TypeParserTests.swift */; };\n\t\tACA255872709E680007AA055 /* ResolutionErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACA103271E3E3386004B8CD4 /* ResolutionErrorTests.swift */; };\n\t\tACA255882709E683007AA055 /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5A8FAA1ED1DAA00027334A /* OperatorsTests.swift */; };\n\t\tCD5B9ECB1D832D5A007ED05F /* SwinjectAutoregistration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD5B9EC01D832D5A007ED05F /* SwinjectAutoregistration.framework */; };\n\t\tCD5B9EDF1D832E32007ED05F /* SwinjectAutoregistration.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5B9ED91D832E18007ED05F /* SwinjectAutoregistration.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tCD5B9EE01D833088007ED05F /* AutoRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8C1D832BF9007ED05F /* AutoRegistration.swift */; };\n\t\tCD5B9EE11D833088007ED05F /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8D1D832BF9007ED05F /* Operators.swift */; };\n\t\tCD5B9EF81D8333A9007ED05F /* AutoRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8C1D832BF9007ED05F /* AutoRegistration.swift */; };\n\t\tCD5B9EF91D8333A9007ED05F /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8D1D832BF9007ED05F /* Operators.swift */; };\n\t\tCD5B9EFA1D8333A9007ED05F /* SwinjectAutoregistration.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5B9ED91D832E18007ED05F /* SwinjectAutoregistration.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tCD5B9F0A1D8334BA007ED05F /* SwinjectAutoregistration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD5B9F001D8334BA007ED05F /* SwinjectAutoregistration.framework */; };\n\t\tCD5B9F1F1D83368E007ED05F /* SwinjectAutoregistration.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5B9ED91D832E18007ED05F /* SwinjectAutoregistration.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tCD5B9F201D833697007ED05F /* AutoRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8C1D832BF9007ED05F /* AutoRegistration.swift */; };\n\t\tCD5B9F211D833697007ED05F /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8D1D832BF9007ED05F /* Operators.swift */; };\n\t\tCD5B9F701D8338FC007ED05F /* AutoRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8C1D832BF9007ED05F /* AutoRegistration.swift */; };\n\t\tCD5B9F711D8338FC007ED05F /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5B9E8D1D832BF9007ED05F /* Operators.swift */; };\n\t\tCD5B9F721D833900007ED05F /* SwinjectAutoregistration.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5B9ED91D832E18007ED05F /* SwinjectAutoregistration.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tCD5B9F761D833A15007ED05F /* SwinjectAutoregistration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD5B9F281D833711007ED05F /* SwinjectAutoregistration.framework */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tACA255802709E653007AA055 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = CD5B9E161D832813007ED05F /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = CD5B9EEF1D83323F007ED05F;\n\t\t\tremoteInfo = \"SwinjectAutoregistration-watchOS\";\n\t\t};\n\t\tCD5B9ECC1D832D5A007ED05F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = CD5B9E161D832813007ED05F /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = CD5B9EBF1D832D5A007ED05F;\n\t\t\tremoteInfo = \"SwinjectAutoregistration-iOS\";\n\t\t};\n\t\tCD5B9F0B1D8334BA007ED05F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = CD5B9E161D832813007ED05F /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = CD5B9EFF1D8334BA007ED05F;\n\t\t\tremoteInfo = \"SwinjectAutoregistration-tvOS\";\n\t\t};\n\t\tCD5B9F331D833711007ED05F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = CD5B9E161D832813007ED05F /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = CD5B9F271D833711007ED05F;\n\t\t\tremoteInfo = \"SwinjectAutoregistration-OSX\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tC3124A1C2174D53E00AF0983 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t0A47837625CCA28500BE64FF /* Swinject.xcframework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC3124A202174D58100AF0983 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t0A47838825CCA3B400BE64FF /* Swinject.xcframework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC3124A242174D5B400AF0983 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t0A47838125CCA33E00BE64FF /* Swinject.xcframework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t0A47832E25CCA1E600BE64FF /* Swinject.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Swinject.xcframework; path = Carthage/Build/Swinject.xcframework; sourceTree = \"<group>\"; };\n\t\t986C0CCB26906C6F001BFBFC /* AutoregistrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoregistrationTests.swift; sourceTree = \"<group>\"; };\n\t\t986C0CCF269076F6001BFBFC /* TypeParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeParserTests.swift; sourceTree = \"<group>\"; };\n\t\tAC1191091E301CD200B112D9 /* ResolutionError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResolutionError.swift; sourceTree = \"<group>\"; };\n\t\tAC1191171E301E3A00B112D9 /* Resolver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Resolver.swift; sourceTree = \"<group>\"; };\n\t\tAC1191181E301E3A00B112D9 /* CheckResolved.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckResolved.swift; sourceTree = \"<group>\"; };\n\t\tAC4AC9481E33C71D00E6355A /* TypeParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TypeParser.swift; sourceTree = \"<group>\"; };\n\t\tAC4AC94A1E33C75200E6355A /* Type.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Type.swift; sourceTree = \"<group>\"; };\n\t\tAC5A8FAA1ED1DAA00027334A /* OperatorsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperatorsTests.swift; sourceTree = \"<group>\"; };\n\t\tACA103271E3E3386004B8CD4 /* ResolutionErrorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResolutionErrorTests.swift; sourceTree = \"<group>\"; };\n\t\tACA2557B2709E653007AA055 /* SwinjectAutoregistration-watchOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"SwinjectAutoregistration-watchOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9E231D832A4F007ED05F /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E251D832A4F007ED05F /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E261D832A4F007ED05F /* Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Profile.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E271D832A4F007ED05F /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E281D832A4F007ED05F /* Test.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Test.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E2A1D832A4F007ED05F /* Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Application.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E2B1D832A4F007ED05F /* Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Framework.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E2C1D832A4F007ED05F /* StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = StaticLibrary.xcconfig; sourceTree = \"<group>\"; };\n\t\tCD5B9E2E1D832A4F007ED05F /* iOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"iOS-Application.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E2F1D832A4F007ED05F /* iOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"iOS-Base.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E301D832A4F007ED05F /* iOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"iOS-Framework.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E311D832A4F007ED05F /* iOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"iOS-StaticLibrary.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E331D832A4F007ED05F /* Mac-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"Mac-Application.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E341D832A4F007ED05F /* Mac-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"Mac-Base.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E351D832A4F007ED05F /* Mac-DynamicLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"Mac-DynamicLibrary.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E361D832A4F007ED05F /* Mac-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"Mac-Framework.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E371D832A4F007ED05F /* Mac-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"Mac-StaticLibrary.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E391D832A4F007ED05F /* tvOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"tvOS-Application.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E3A1D832A4F007ED05F /* tvOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"tvOS-Base.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E3B1D832A4F007ED05F /* tvOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"tvOS-Framework.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E3C1D832A4F007ED05F /* tvOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"tvOS-StaticLibrary.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9E8C1D832BF9007ED05F /* AutoRegistration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoRegistration.swift; sourceTree = \"<group>\"; };\n\t\tCD5B9E8D1D832BF9007ED05F /* Operators.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Operators.swift; sourceTree = \"<group>\"; };\n\t\tCD5B9EB21D832C81007ED05F /* watchOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"watchOS-Application.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9EB31D832C81007ED05F /* watchOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"watchOS-Base.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9EB41D832C81007ED05F /* watchOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"watchOS-Framework.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9EB51D832C81007ED05F /* watchOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = \"watchOS-StaticLibrary.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tCD5B9EC01D832D5A007ED05F /* SwinjectAutoregistration.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwinjectAutoregistration.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9ECA1D832D5A007ED05F /* SwinjectAutoregistration-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"SwinjectAutoregistration-iOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9ED81D832E18007ED05F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tCD5B9ED91D832E18007ED05F /* SwinjectAutoregistration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SwinjectAutoregistration.h; sourceTree = \"<group>\"; };\n\t\tCD5B9EDD1D832E2E007ED05F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tCD5B9EF01D83323F007ED05F /* SwinjectAutoregistration.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwinjectAutoregistration.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9F001D8334BA007ED05F /* SwinjectAutoregistration.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwinjectAutoregistration.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9F091D8334BA007ED05F /* SwinjectAutoregistration-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"SwinjectAutoregistration-tvOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9F281D833711007ED05F /* SwinjectAutoregistration.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwinjectAutoregistration.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCD5B9F311D833711007ED05F /* SwinjectAutoregistration-OSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"SwinjectAutoregistration-OSXTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tFF3CD0EF26DC25D3007090D2 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tACA255782709E653007AA055 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tACA2557F2709E653007AA055 /* SwinjectAutoregistration.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EBC1D832D5A007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0A47832F25CCA1E600BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EC71D832D5A007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9ECB1D832D5A007ED05F /* SwinjectAutoregistration.framework in Frameworks */,\n\t\t\t\t0A47833425CCA1F400BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EEC1D83323F007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0A47834125CCA20000BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EFC1D8334BA007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0A47834625CCA20A00BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F061D8334BA007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9F0A1D8334BA007ED05F /* SwinjectAutoregistration.framework in Frameworks */,\n\t\t\t\t0A47834D25CCA21400BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F241D833711007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0A47835225CCA21E00BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F2E1D833711007ED05F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9F761D833A15007ED05F /* SwinjectAutoregistration.framework in Frameworks */,\n\t\t\t\t0A47835925CCA22700BE64FF /* Swinject.xcframework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tAC4AC9471E33C70900E6355A /* Parser */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAC4AC9481E33C71D00E6355A /* TypeParser.swift */,\n\t\t\t\tAC4AC94A1E33C75200E6355A /* Type.swift */,\n\t\t\t);\n\t\t\tname = Parser;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tACA103241E3E3386004B8CD4 /* SwinjectAutoregistrationTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t986C0CCB26906C6F001BFBFC /* AutoregistrationTests.swift */,\n\t\t\t\t986C0CCF269076F6001BFBFC /* TypeParserTests.swift */,\n\t\t\t\tACA103271E3E3386004B8CD4 /* ResolutionErrorTests.swift */,\n\t\t\t\tAC5A8FAA1ED1DAA00027334A /* OperatorsTests.swift */,\n\t\t\t);\n\t\t\tpath = SwinjectAutoregistrationTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC3124A002174D30200AF0983 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0A47832E25CCA1E600BE64FF /* Swinject.xcframework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E151D832813007ED05F = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tFF3CD0EF26DC25D3007090D2 /* README.md */,\n\t\t\t\tCD5B9E8B1D832BF9007ED05F /* Sources */,\n\t\t\t\tCD5B9E8E1D832BF9007ED05F /* Tests */,\n\t\t\t\tCD5B9EC11D832D5A007ED05F /* Products */,\n\t\t\t\tCD5B9E211D832A20007ED05F /* Configurations */,\n\t\t\t\tC3124A002174D30200AF0983 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E211D832A20007ED05F /* Configurations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9EB11D832C81007ED05F /* watchOS */,\n\t\t\t\tCD5B9E221D832A4F007ED05F /* Base */,\n\t\t\t\tCD5B9E2D1D832A4F007ED05F /* iOS */,\n\t\t\t\tCD5B9E321D832A4F007ED05F /* Mac OS X */,\n\t\t\t\tCD5B9E381D832A4F007ED05F /* tvOS */,\n\t\t\t);\n\t\t\tpath = Configurations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E221D832A4F007ED05F /* Base */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9E231D832A4F007ED05F /* Common.xcconfig */,\n\t\t\t\tCD5B9E241D832A4F007ED05F /* Configurations */,\n\t\t\t\tCD5B9E291D832A4F007ED05F /* Targets */,\n\t\t\t);\n\t\t\tpath = Base;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E241D832A4F007ED05F /* Configurations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9E251D832A4F007ED05F /* Debug.xcconfig */,\n\t\t\t\tCD5B9E261D832A4F007ED05F /* Profile.xcconfig */,\n\t\t\t\tCD5B9E271D832A4F007ED05F /* Release.xcconfig */,\n\t\t\t\tCD5B9E281D832A4F007ED05F /* Test.xcconfig */,\n\t\t\t);\n\t\t\tpath = Configurations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E291D832A4F007ED05F /* Targets */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9E2A1D832A4F007ED05F /* Application.xcconfig */,\n\t\t\t\tCD5B9E2B1D832A4F007ED05F /* Framework.xcconfig */,\n\t\t\t\tCD5B9E2C1D832A4F007ED05F /* StaticLibrary.xcconfig */,\n\t\t\t);\n\t\t\tpath = Targets;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E2D1D832A4F007ED05F /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9E2E1D832A4F007ED05F /* iOS-Application.xcconfig */,\n\t\t\t\tCD5B9E2F1D832A4F007ED05F /* iOS-Base.xcconfig */,\n\t\t\t\tCD5B9E301D832A4F007ED05F /* iOS-Framework.xcconfig */,\n\t\t\t\tCD5B9E311D832A4F007ED05F /* iOS-StaticLibrary.xcconfig */,\n\t\t\t);\n\t\t\tpath = iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E321D832A4F007ED05F /* Mac OS X */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9E331D832A4F007ED05F /* Mac-Application.xcconfig */,\n\t\t\t\tCD5B9E341D832A4F007ED05F /* Mac-Base.xcconfig */,\n\t\t\t\tCD5B9E351D832A4F007ED05F /* Mac-DynamicLibrary.xcconfig */,\n\t\t\t\tCD5B9E361D832A4F007ED05F /* Mac-Framework.xcconfig */,\n\t\t\t\tCD5B9E371D832A4F007ED05F /* Mac-StaticLibrary.xcconfig */,\n\t\t\t);\n\t\t\tpath = \"Mac OS X\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E381D832A4F007ED05F /* tvOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9E391D832A4F007ED05F /* tvOS-Application.xcconfig */,\n\t\t\t\tCD5B9E3A1D832A4F007ED05F /* tvOS-Base.xcconfig */,\n\t\t\t\tCD5B9E3B1D832A4F007ED05F /* tvOS-Framework.xcconfig */,\n\t\t\t\tCD5B9E3C1D832A4F007ED05F /* tvOS-StaticLibrary.xcconfig */,\n\t\t\t);\n\t\t\tpath = tvOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E8B1D832BF9007ED05F /* Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAC4AC9471E33C70900E6355A /* Parser */,\n\t\t\t\tAC1191171E301E3A00B112D9 /* Resolver.swift */,\n\t\t\t\tAC1191181E301E3A00B112D9 /* CheckResolved.swift */,\n\t\t\t\tCD5B9E8C1D832BF9007ED05F /* AutoRegistration.swift */,\n\t\t\t\tCD5B9E8D1D832BF9007ED05F /* Operators.swift */,\n\t\t\t\tAC1191091E301CD200B112D9 /* ResolutionError.swift */,\n\t\t\t\tCD5B9ED81D832E18007ED05F /* Info.plist */,\n\t\t\t\tCD5B9ED91D832E18007ED05F /* SwinjectAutoregistration.h */,\n\t\t\t);\n\t\t\tpath = Sources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9E8E1D832BF9007ED05F /* Tests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tACA103241E3E3386004B8CD4 /* SwinjectAutoregistrationTests */,\n\t\t\t\tCD5B9EDD1D832E2E007ED05F /* Info.plist */,\n\t\t\t);\n\t\t\tpath = Tests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9EB11D832C81007ED05F /* watchOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9EB21D832C81007ED05F /* watchOS-Application.xcconfig */,\n\t\t\t\tCD5B9EB31D832C81007ED05F /* watchOS-Base.xcconfig */,\n\t\t\t\tCD5B9EB41D832C81007ED05F /* watchOS-Framework.xcconfig */,\n\t\t\t\tCD5B9EB51D832C81007ED05F /* watchOS-StaticLibrary.xcconfig */,\n\t\t\t);\n\t\t\tpath = watchOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCD5B9EC11D832D5A007ED05F /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCD5B9EC01D832D5A007ED05F /* SwinjectAutoregistration.framework */,\n\t\t\t\tCD5B9ECA1D832D5A007ED05F /* SwinjectAutoregistration-iOSTests.xctest */,\n\t\t\t\tCD5B9EF01D83323F007ED05F /* SwinjectAutoregistration.framework */,\n\t\t\t\tCD5B9F001D8334BA007ED05F /* SwinjectAutoregistration.framework */,\n\t\t\t\tCD5B9F091D8334BA007ED05F /* SwinjectAutoregistration-tvOSTests.xctest */,\n\t\t\t\tCD5B9F281D833711007ED05F /* SwinjectAutoregistration.framework */,\n\t\t\t\tCD5B9F311D833711007ED05F /* SwinjectAutoregistration-OSXTests.xctest */,\n\t\t\t\tACA2557B2709E653007AA055 /* SwinjectAutoregistration-watchOSTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tCD5B9EBD1D832D5A007ED05F /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9EDF1D832E32007ED05F /* SwinjectAutoregistration.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EED1D83323F007ED05F /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9EFA1D8333A9007ED05F /* SwinjectAutoregistration.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EFD1D8334BA007ED05F /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9F1F1D83368E007ED05F /* SwinjectAutoregistration.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F251D833711007ED05F /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9F721D833900007ED05F /* SwinjectAutoregistration.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\tACA2557A2709E653007AA055 /* SwinjectAutoregistration-watchOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = ACA255842709E653007AA055 /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-watchOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tACA255772709E653007AA055 /* Sources */,\n\t\t\t\tACA255782709E653007AA055 /* Frameworks */,\n\t\t\t\tACA255792709E653007AA055 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tACA255812709E653007AA055 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-watchOSTests\";\n\t\t\tproductName = \"SwinjectAutoregistration-watchOSTests\";\n\t\t\tproductReference = ACA2557B2709E653007AA055 /* SwinjectAutoregistration-watchOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tCD5B9EBF1D832D5A007ED05F /* SwinjectAutoregistration-iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9ED21D832D5A007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9EBB1D832D5A007ED05F /* Sources */,\n\t\t\t\tCD5B9EBC1D832D5A007ED05F /* Frameworks */,\n\t\t\t\tCD5B9EBD1D832D5A007ED05F /* Headers */,\n\t\t\t\tCD5B9EBE1D832D5A007ED05F /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-iOS\";\n\t\t\tproductName = \"SwinjectAutoregistration-iOS\";\n\t\t\tproductReference = CD5B9EC01D832D5A007ED05F /* SwinjectAutoregistration.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tCD5B9EC91D832D5A007ED05F /* SwinjectAutoregistration-iOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9ED51D832D5A007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-iOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9EC61D832D5A007ED05F /* Sources */,\n\t\t\t\tCD5B9EC71D832D5A007ED05F /* Frameworks */,\n\t\t\t\tCD5B9EC81D832D5A007ED05F /* Resources */,\n\t\t\t\tC3124A1C2174D53E00AF0983 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tCD5B9ECD1D832D5A007ED05F /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-iOSTests\";\n\t\t\tproductName = \"SwinjectAutoregistration-iOSTests\";\n\t\t\tproductReference = CD5B9ECA1D832D5A007ED05F /* SwinjectAutoregistration-iOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tCD5B9EEF1D83323F007ED05F /* SwinjectAutoregistration-watchOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9EF51D83323F007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-watchOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9EEB1D83323F007ED05F /* Sources */,\n\t\t\t\tCD5B9EEC1D83323F007ED05F /* Frameworks */,\n\t\t\t\tCD5B9EED1D83323F007ED05F /* Headers */,\n\t\t\t\tCD5B9EEE1D83323F007ED05F /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-watchOS\";\n\t\t\tproductName = \"SwinjectAutoregistration-watchOS\";\n\t\t\tproductReference = CD5B9EF01D83323F007ED05F /* SwinjectAutoregistration.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tCD5B9EFF1D8334BA007ED05F /* SwinjectAutoregistration-tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9F111D8334BA007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9EFB1D8334BA007ED05F /* Sources */,\n\t\t\t\tCD5B9EFC1D8334BA007ED05F /* Frameworks */,\n\t\t\t\tCD5B9EFD1D8334BA007ED05F /* Headers */,\n\t\t\t\tCD5B9EFE1D8334BA007ED05F /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-tvOS\";\n\t\t\tproductName = \"SwinjectAutoregistration-tvOS\";\n\t\t\tproductReference = CD5B9F001D8334BA007ED05F /* SwinjectAutoregistration.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tCD5B9F081D8334BA007ED05F /* SwinjectAutoregistration-tvOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9F141D8334BA007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-tvOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9F051D8334BA007ED05F /* Sources */,\n\t\t\t\tCD5B9F061D8334BA007ED05F /* Frameworks */,\n\t\t\t\tCD5B9F071D8334BA007ED05F /* Resources */,\n\t\t\t\tC3124A202174D58100AF0983 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tCD5B9F0C1D8334BA007ED05F /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-tvOSTests\";\n\t\t\tproductName = \"SwinjectAutoregistration-tvOSTests\";\n\t\t\tproductReference = CD5B9F091D8334BA007ED05F /* SwinjectAutoregistration-tvOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tCD5B9F271D833711007ED05F /* SwinjectAutoregistration-OSX */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9F391D833711007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-OSX\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9F231D833711007ED05F /* Sources */,\n\t\t\t\tCD5B9F241D833711007ED05F /* Frameworks */,\n\t\t\t\tCD5B9F251D833711007ED05F /* Headers */,\n\t\t\t\tCD5B9F261D833711007ED05F /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-OSX\";\n\t\t\tproductName = \"SwinjectAutoregistration-OSX\";\n\t\t\tproductReference = CD5B9F281D833711007ED05F /* SwinjectAutoregistration.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tCD5B9F301D833711007ED05F /* SwinjectAutoregistration-OSXTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = CD5B9F3C1D833711007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-OSXTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tCD5B9F2D1D833711007ED05F /* Sources */,\n\t\t\t\tCD5B9F2E1D833711007ED05F /* Frameworks */,\n\t\t\t\tCD5B9F2F1D833711007ED05F /* Resources */,\n\t\t\t\tC3124A242174D5B400AF0983 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tCD5B9F341D833711007ED05F /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"SwinjectAutoregistration-OSXTests\";\n\t\t\tproductName = \"SwinjectAutoregistration-OSXTests\";\n\t\t\tproductReference = CD5B9F311D833711007ED05F /* SwinjectAutoregistration-OSXTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tCD5B9E161D832813007ED05F /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 1300;\n\t\t\t\tLastUpgradeCheck = 1240;\n\t\t\t\tORGANIZATIONNAME = \"Swinject Contributors\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tACA2557A2709E653007AA055 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 13.0;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9EBF1D832D5A007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9EC91D832D5A007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9EEF1D83323F007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9EFF1D8334BA007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9F081D8334BA007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9F271D833711007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tCD5B9F301D833711007ED05F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = CD5B9E191D832813007ED05F /* Build configuration list for PBXProject \"SwinjectAutoregistration\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = CD5B9E151D832813007ED05F;\n\t\t\tproductRefGroup = CD5B9EC11D832D5A007ED05F /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tCD5B9EBF1D832D5A007ED05F /* SwinjectAutoregistration-iOS */,\n\t\t\t\tCD5B9EC91D832D5A007ED05F /* SwinjectAutoregistration-iOSTests */,\n\t\t\t\tCD5B9EEF1D83323F007ED05F /* SwinjectAutoregistration-watchOS */,\n\t\t\t\tACA2557A2709E653007AA055 /* SwinjectAutoregistration-watchOSTests */,\n\t\t\t\tCD5B9EFF1D8334BA007ED05F /* SwinjectAutoregistration-tvOS */,\n\t\t\t\tCD5B9F081D8334BA007ED05F /* SwinjectAutoregistration-tvOSTests */,\n\t\t\t\tCD5B9F271D833711007ED05F /* SwinjectAutoregistration-OSX */,\n\t\t\t\tCD5B9F301D833711007ED05F /* SwinjectAutoregistration-OSXTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tACA255792709E653007AA055 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EBE1D832D5A007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EC81D832D5A007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EEE1D83323F007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EFE1D8334BA007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F071D8334BA007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F261D833711007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F2F1D833711007ED05F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tACA255772709E653007AA055 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tACA255852709E679007AA055 /* AutoregistrationTests.swift in Sources */,\n\t\t\t\tACA255872709E680007AA055 /* ResolutionErrorTests.swift in Sources */,\n\t\t\t\tACA255882709E683007AA055 /* OperatorsTests.swift in Sources */,\n\t\t\t\tACA255862709E67D007AA055 /* TypeParserTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EBB1D832D5A007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tCD5B9EE01D833088007ED05F /* AutoRegistration.swift in Sources */,\n\t\t\t\tAC11910A1E301CD200B112D9 /* ResolutionError.swift in Sources */,\n\t\t\t\tAC11911A1E301E3A00B112D9 /* CheckResolved.swift in Sources */,\n\t\t\t\tCD5B9EE11D833088007ED05F /* Operators.swift in Sources */,\n\t\t\t\tAC1191191E301E3A00B112D9 /* Resolver.swift in Sources */,\n\t\t\t\tAC4AC9491E33C71D00E6355A /* TypeParser.swift in Sources */,\n\t\t\t\tAC4AC94B1E33C75200E6355A /* Type.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EC61D832D5A007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAC5A8FAB1ED1DAA00027334A /* OperatorsTests.swift in Sources */,\n\t\t\t\t986C0CD0269076F6001BFBFC /* TypeParserTests.swift in Sources */,\n\t\t\t\t986C0CCC26906C6F001BFBFC /* AutoregistrationTests.swift in Sources */,\n\t\t\t\tACA1032F1E3E3397004B8CD4 /* ResolutionErrorTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EEB1D83323F007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAC11911E1E30210A00B112D9 /* CheckResolved.swift in Sources */,\n\t\t\t\tAC11911C1E30210500B112D9 /* Resolver.swift in Sources */,\n\t\t\t\tAC4AC94C1E33CB9100E6355A /* TypeParser.swift in Sources */,\n\t\t\t\tCD5B9EF81D8333A9007ED05F /* AutoRegistration.swift in Sources */,\n\t\t\t\tAC4AC94F1E33CB9600E6355A /* Type.swift in Sources */,\n\t\t\t\tAC1191211E30211300B112D9 /* ResolutionError.swift in Sources */,\n\t\t\t\tCD5B9EF91D8333A9007ED05F /* Operators.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9EFB1D8334BA007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAC11911F1E30210B00B112D9 /* CheckResolved.swift in Sources */,\n\t\t\t\tAC11911D1E30210500B112D9 /* Resolver.swift in Sources */,\n\t\t\t\tAC4AC94D1E33CB9100E6355A /* TypeParser.swift in Sources */,\n\t\t\t\tCD5B9F201D833697007ED05F /* AutoRegistration.swift in Sources */,\n\t\t\t\tAC4AC9501E33CB9700E6355A /* Type.swift in Sources */,\n\t\t\t\tAC1191221E30211400B112D9 /* ResolutionError.swift in Sources */,\n\t\t\t\tCD5B9F211D833697007ED05F /* Operators.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F051D8334BA007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAC5A8FBB1ED1DC2B0027334A /* OperatorsTests.swift in Sources */,\n\t\t\t\t986C0CD1269076F6001BFBFC /* TypeParserTests.swift in Sources */,\n\t\t\t\t986C0CCD26906C6F001BFBFC /* AutoregistrationTests.swift in Sources */,\n\t\t\t\tACA103301E3E3398004B8CD4 /* ResolutionErrorTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F231D833711007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAC1191201E30210C00B112D9 /* CheckResolved.swift in Sources */,\n\t\t\t\tAC11911B1E30210200B112D9 /* Resolver.swift in Sources */,\n\t\t\t\tAC4AC94E1E33CB9200E6355A /* TypeParser.swift in Sources */,\n\t\t\t\tCD5B9F701D8338FC007ED05F /* AutoRegistration.swift in Sources */,\n\t\t\t\tAC4AC9511E33CB9700E6355A /* Type.swift in Sources */,\n\t\t\t\tAC1191231E30211500B112D9 /* ResolutionError.swift in Sources */,\n\t\t\t\tCD5B9F711D8338FC007ED05F /* Operators.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tCD5B9F2D1D833711007ED05F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAC5A8FBC1ED1DC2B0027334A /* OperatorsTests.swift in Sources */,\n\t\t\t\t986C0CD2269076F6001BFBFC /* TypeParserTests.swift in Sources */,\n\t\t\t\t986C0CCE26906C6F001BFBFC /* AutoregistrationTests.swift in Sources */,\n\t\t\t\tACA103311E3E339A004B8CD4 /* ResolutionErrorTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tACA255812709E653007AA055 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = CD5B9EEF1D83323F007ED05F /* SwinjectAutoregistration-watchOS */;\n\t\t\ttargetProxy = ACA255802709E653007AA055 /* PBXContainerItemProxy */;\n\t\t};\n\t\tCD5B9ECD1D832D5A007ED05F /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = CD5B9EBF1D832D5A007ED05F /* SwinjectAutoregistration-iOS */;\n\t\t\ttargetProxy = CD5B9ECC1D832D5A007ED05F /* PBXContainerItemProxy */;\n\t\t};\n\t\tCD5B9F0C1D8334BA007ED05F /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = CD5B9EFF1D8334BA007ED05F /* SwinjectAutoregistration-tvOS */;\n\t\t\ttargetProxy = CD5B9F0B1D8334BA007ED05F /* PBXContainerItemProxy */;\n\t\t};\n\t\tCD5B9F341D833711007ED05F /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = CD5B9F271D833711007ED05F /* SwinjectAutoregistration-OSX */;\n\t\t\ttargetProxy = CD5B9F331D833711007ED05F /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\tACA255822709E653007AA055 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9EB21D832C81007ED05F /* watchOS-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++17\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = 56QMJ73J7W;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-watchOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = watchos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 4;\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 4.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tACA255832709E653007AA055 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9EB21D832C81007ED05F /* watchOS-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++17\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = 56QMJ73J7W;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-watchOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = watchos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 4;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 4.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9E1A1D832813007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E251D832A4F007ED05F /* Debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D DEBUG -Xfrontend -debug-time-function-bodies\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9E1B1D832813007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E271D832A4F007ED05F /* Release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9ED31D832D5A007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E301D832A4F007ED05F /* iOS-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/iOS\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.swinject.SwinjectAutoregistration-iOS\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9ED41D832D5A007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E301D832A4F007ED05F /* iOS-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/iOS\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.swinject.SwinjectAutoregistration-iOS\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9ED61D832D5A007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E2E1D832A4F007ED05F /* iOS-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-iOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9ED71D832D5A007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E2E1D832A4F007ED05F /* iOS-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-iOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9EF61D83323F007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9EB41D832C81007ED05F /* watchOS-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-watchOS\";\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 4.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9EF71D83323F007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9EB41D832C81007ED05F /* watchOS-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-watchOS\";\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 4.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9F121D8334BA007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E3B1D832A4F007ED05F /* tvOS-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9F131D8334BA007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E3B1D832A4F007ED05F /* tvOS-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9F151D8334BA007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E391D832A4F007ED05F /* tvOS-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/tvOS\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9F161D8334BA007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E391D832A4F007ED05F /* tvOS-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/tvOS\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9F3A1D833711007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E361D832A4F007ED05F /* Mac-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-OSX\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9F3B1D833711007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E361D832A4F007ED05F /* Mac-Framework.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Sources/Info.plist;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-OSX\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tCD5B9F3D1D833711007ED05F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E331D832A4F007ED05F /* Mac-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/Mac\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-OSXTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tCD5B9F3E1D833711007ED05F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CD5B9E331D832A4F007ED05F /* Mac-Application.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Carthage/Build/Mac\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.swinject.SwinjectAutoregistration-OSXTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tACA255842709E653007AA055 /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-watchOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tACA255822709E653007AA055 /* Debug */,\n\t\t\t\tACA255832709E653007AA055 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9E191D832813007ED05F /* Build configuration list for PBXProject \"SwinjectAutoregistration\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9E1A1D832813007ED05F /* Debug */,\n\t\t\t\tCD5B9E1B1D832813007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9ED21D832D5A007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9ED31D832D5A007ED05F /* Debug */,\n\t\t\t\tCD5B9ED41D832D5A007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9ED51D832D5A007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-iOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9ED61D832D5A007ED05F /* Debug */,\n\t\t\t\tCD5B9ED71D832D5A007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9EF51D83323F007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-watchOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9EF61D83323F007ED05F /* Debug */,\n\t\t\t\tCD5B9EF71D83323F007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9F111D8334BA007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9F121D8334BA007ED05F /* Debug */,\n\t\t\t\tCD5B9F131D8334BA007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9F141D8334BA007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-tvOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9F151D8334BA007ED05F /* Debug */,\n\t\t\t\tCD5B9F161D8334BA007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9F391D833711007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-OSX\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9F3A1D833711007ED05F /* Debug */,\n\t\t\t\tCD5B9F3B1D833711007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tCD5B9F3C1D833711007ED05F /* Build configuration list for PBXNativeTarget \"SwinjectAutoregistration-OSXTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tCD5B9F3D1D833711007ED05F /* Debug */,\n\t\t\t\tCD5B9F3E1D833711007ED05F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = CD5B9E161D832813007ED05F /* Project object */;\n}\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:SwinjectAutoregistration_.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/xcshareddata/xcschemes/SwinjectAutoregistration-OSX.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1240\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9F271D833711007ED05F\"\n               BuildableName = \"SwinjectAutoregistration.framework\"\n               BlueprintName = \"SwinjectAutoregistration-OSX\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9F271D833711007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-OSX\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9F301D833711007ED05F\"\n               BuildableName = \"SwinjectAutoregistration-OSXTests.xctest\"\n               BlueprintName = \"SwinjectAutoregistration-OSXTests\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9F271D833711007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-OSX\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9F271D833711007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-OSX\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/xcshareddata/xcschemes/SwinjectAutoregistration-iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1240\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9EBF1D832D5A007ED05F\"\n               BuildableName = \"SwinjectAutoregistration.framework\"\n               BlueprintName = \"SwinjectAutoregistration-iOS\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EBF1D832D5A007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-iOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9EC91D832D5A007ED05F\"\n               BuildableName = \"SwinjectAutoregistration-iOSTests.xctest\"\n               BlueprintName = \"SwinjectAutoregistration-iOSTests\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EBF1D832D5A007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-iOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EBF1D832D5A007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-iOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/xcshareddata/xcschemes/SwinjectAutoregistration-tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1240\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9EFF1D8334BA007ED05F\"\n               BuildableName = \"SwinjectAutoregistration.framework\"\n               BlueprintName = \"SwinjectAutoregistration-tvOS\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"\"\n      selectedLauncherIdentifier = \"Xcode.IDEFoundation.Launcher.PosixSpawn\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EFF1D8334BA007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-tvOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9F081D8334BA007ED05F\"\n               BuildableName = \"SwinjectAutoregistration-tvOSTests.xctest\"\n               BlueprintName = \"SwinjectAutoregistration-tvOSTests\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EFF1D8334BA007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-tvOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EFF1D8334BA007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-tvOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "SwinjectAutoregistration.xcodeproj/xcshareddata/xcschemes/SwinjectAutoregistration-watchOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1240\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"CD5B9EEF1D83323F007ED05F\"\n               BuildableName = \"SwinjectAutoregistration.framework\"\n               BlueprintName = \"SwinjectAutoregistration-watchOS\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"ACA2557A2709E653007AA055\"\n               BuildableName = \"SwinjectAutoregistration-watchOSTests.xctest\"\n               BlueprintName = \"SwinjectAutoregistration-watchOSTests\"\n               ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EEF1D83323F007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-watchOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"CD5B9EEF1D83323F007ED05F\"\n            BuildableName = \"SwinjectAutoregistration.framework\"\n            BlueprintName = \"SwinjectAutoregistration-watchOS\"\n            ReferencedContainer = \"container:SwinjectAutoregistration.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Tests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.9.1</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/LinuxMain.swift",
    "content": "import XCTest\n\nimport SwinjectAutoregistrationTests\n\nvar tests = [XCTestCaseEntry]()\ntests += SwinjectAutoregistrationTests.__allTests()\n\nXCTMain(tests)\n"
  },
  {
    "path": "Tests/SwinjectAutoregistrationTests/AutoregistrationTests.swift",
    "content": "//\n//  AutoregistrationTests.swift\n//  SwinjectAutoregistration\n//\n//  Created by Yoichi Tagaya on 2021/07/03.\n//  Copyright © 2021 Swinject Contributors. All rights reserved.\n//\n\nimport XCTest\nimport SwinjectAutoregistration\nimport Swinject\n\nclass AutoregistrationTests: XCTestCase {\n    class DependencyA {}\n    class DependencyB {}\n    class DependencyC {}\n    class DependencyD {}\n    class DependencyE {}\n    class DependencyF {}\n    class DependencyG {}\n    class DependencyH {}\n    class DependencyI {}\n    class DependencyJ {}\n\n    class Service0 {\n        init(){}\n    }\n    \n    class Service1 {\n        init(a: DependencyA){}\n    }\n    \n    class Service2 {\n        init(a: DependencyA, b: DependencyB){}\n    }\n    \n    class Service3 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC){}\n    }\n    \n    class Service4 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD){}\n    }\n    \n    class Service5 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE){}\n    }\n    \n    class Service6 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF){}\n    }\n    \n    class Service7 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG){}\n    }\n    \n    class Service8 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH){}\n    }\n    \n    class Service9 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH, i: DependencyI){}\n    }\n    \n    class Service10 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH, i: DependencyI, j: DependencyJ){}\n    }\n    \n    class Service20 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH, i: DependencyI, j: DependencyJ, k: DependencyA, l: DependencyB, m: DependencyC, n: DependencyD, o: DependencyE, p: DependencyF, q: DependencyG, r: DependencyH, s: DependencyI, t: DependencyJ){}\n    }\n    \n    class Service21 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH, i: DependencyI, j: DependencyJ, k: DependencyA, l: DependencyB, m: DependencyC, n: DependencyD, o: DependencyE, p: DependencyF, q: DependencyG, r: DependencyH, s: DependencyI, t: DependencyJ, u: DependencyA){}\n    }\n    \n    class OptionalService {\n        init(a: DependencyA?){}\n    }\n    \n    class UnwrappedService {\n        init(a: DependencyA!){}\n    }\n    \n    class SameArgumentsService {\n        let nameA: String; let nameB: String\n        init(a: DependencyA, nameA: String, age: Int, nameB: String){\n            self.nameA = nameA; self.nameB = nameB\n        }\n    }\n    \n    var container: Container!\n    \n    override func setUpWithError() throws {\n        container = Container()\n        \n        container.autoregister(DependencyA.self, initializer: DependencyA.init)\n        container.autoregister(DependencyB.self, initializer: DependencyB.init)\n        container.autoregister(DependencyC.self, initializer: DependencyC.init)\n        container.autoregister(DependencyD.self, initializer: DependencyD.init)\n        container.autoregister(DependencyE.self, initializer: DependencyE.init)\n        container.autoregister(DependencyF.self, initializer: DependencyF.init)\n        container.autoregister(DependencyG.self, initializer: DependencyG.init)\n        container.autoregister(DependencyH.self, initializer: DependencyH.init)\n        container.autoregister(DependencyI.self, initializer: DependencyI.init)\n        container.autoregister(DependencyJ.self, initializer: DependencyJ.init)\n    }\n\n    func testServiceIsRegisteredWithZeroDependencies() {\n        container.autoregister(Service0.self, initializer: Service0.init)\n        let service = container.resolve(Service0.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithOneDependency() {\n        container.autoregister(Service1.self, initializer: Service1.init)\n        let service = container.resolve(Service1.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithTwoDependencies() {\n        container.autoregister(Service2.self, initializer: Service2.init)\n        let service = container.resolve(Service2.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithThreeDependencies() {\n        container.autoregister(Service3.self, initializer: Service3.init)\n        let service = container.resolve(Service3.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithFourDependencies() {\n        container.autoregister(Service4.self, initializer: Service4.init)\n        let service = container.resolve(Service4.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithFiveDependencies() {\n        container.autoregister(Service5.self, initializer: Service5.init)\n        let service = container.resolve(Service5.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithSixDependencies() {\n        container.autoregister(Service6.self, initializer: Service6.init)\n        let service = container.resolve(Service6.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithSevenDependencies() {\n        container.autoregister(Service7.self, initializer: Service7.init)\n        let service = container.resolve(Service7.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithEightDependencies() {\n        container.autoregister(Service8.self, initializer: Service8.init)\n        let service = container.resolve(Service8.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithNineDependencies() {\n        container.autoregister(Service9.self, initializer: Service9.init)\n        let service = container.resolve(Service9.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithTwentyDependencies() {\n        container.autoregister(Service20.self, initializer: Service20.init)\n        let service = container.resolve(Service20.self)\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithOneDynamicArgument() {\n        container.autoregister(Service2.self, argument: DependencyB.self, initializer: Service2.init)\n        let service = container.resolve(Service2.self, argument: DependencyB())\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithTwoDynamicArguments() {\n        container.autoregister(Service3.self, arguments: DependencyB.self, DependencyC.self, initializer: Service3.init)\n        let service = container.resolve(Service3.self, arguments: DependencyB(), DependencyC())\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithThreeDynamicArguments() {\n        container.autoregister(Service4.self, arguments: DependencyB.self, DependencyC.self, DependencyD.self, initializer: Service4.init)\n        let service = container.resolve(Service4.self, arguments: DependencyB(), DependencyC(), DependencyD())\n        XCTAssertNotNil(service)\n    }\n    \n    func testServiceIsRegisteredWithFourDynamicArguments() {\n        container.autoregister(Service4.self, arguments: DependencyC.self, DependencyD.self, DependencyB.self, initializer: Service4.init)\n        let service = container.resolve(Service4.self, arguments: DependencyC(), DependencyD(), DependencyB())\n        XCTAssertNotNil(service)\n    }\n\n    func testServiceIsRegisteredWithOptionalDependencies() {\n        container.autoregister(OptionalService.self, initializer: OptionalService.init)\n        let service = container.resolve(OptionalService.self)\n        XCTAssertNotNil(service)\n    }\n\n    func testServiceIsRegisteredWithUnwrrappedDependencies() {\n        container.autoregister(UnwrappedService.self, initializer: UnwrappedService.init)\n        let service = container.resolve(UnwrappedService.self)\n        XCTAssertNotNil(service)\n    }\n\n    #if !SWIFT_PACKAGE && arch(x86_64)\n    func testAssertionIsThrownWhenSameTypeArgumentsArePassed() {\n        // For now we just comment out the test for `precondition()` because we cannot do it without depending on Nimble or CwlPreconditionTesting.\n        \n        // container.autoregister(SameArgumentsService.self, arguments: String.self, Int.self, String.self, initializer: SameArgumentsService.init)\n    }\n\n    func testAssertionIsThrownWhenTryingToResolveServiceWithTooManyDependencies() {\n        // For now we just comment out the test for `precondition()` because we cannot do it without depending on Nimble or CwlPreconditionTesting.\n\n        // container.autoregister(Service21.self, initializer: Service21.init)\n        // _ = container.resolve(Service21.self)\n    }\n    #endif\n    \n    func testLoggingFunctionIsNotErased() {\n        var logs: [String] = []\n        Container.loggingFunction = { logs.append($0) }\n        \n        container.autoregister(Service1.self, initializer: Service1.init)\n        let service = container.resolve(Service1.self)\n        \n        XCTAssertNotNil(service)\n        XCTAssertEqual(logs.count, 0)\n        \n        let unresolvableService = container.resolve(String.self)\n        XCTAssertNil(unresolvableService)\n        XCTAssertEqual(logs.count, 1)\n    }\n\n    #if !SWIFT_PACKAGE\n    func testAnyLogsAreNotLostWhileMultithreading() {\n        var logs: [String] = []\n        Container.loggingFunction = { logs.append($0) }\n        \n        container.autoregister(Service1.self, initializer: Service1.init)\n        \n        let resolutionsCount = 1000\n        \n        let queue = DispatchQueue(label: \"queue\", attributes: .concurrent)\n        \n        let container = self.container!\n        queue.async {\n            (0..<resolutionsCount).forEach { _ in\n                _ = container.synchronize().resolve(Service1.self)\n            }\n        }\n        \n        queue.async {\n            (0..<resolutionsCount).forEach { _ in\n                //Fails every time\n                _ = container.synchronize().resolve(String.self)\n            }\n        }\n\n        assertEventually {\n            logs.count == resolutionsCount\n        }\n    }\n    #endif\n}\n\n// Similar to toEventually of Nimble.\n private func assertEventually(expression: @escaping () -> Bool) {\n     let expectation = XCTestExpectation()\n     DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {\n         XCTAssert(expression())\n         expectation.fulfill()\n     }\n     XCTWaiter().wait(for: [expectation], timeout: 1.0)\n }\n"
  },
  {
    "path": "Tests/SwinjectAutoregistrationTests/OperatorsTests.swift",
    "content": "import XCTest\n\nimport Swinject\nimport SwinjectAutoregistration\n\n\nclass OperatorsTests: XCTestCase {\n\t\n    class DependencyA {}\n    class DependencyB {}\n    class DependencyC {}\n    class DependencyD {}\n    \n    class Service0 {}\n    \n    class Service1 {\n        init(a: String){}\n    }\n    \n    class Service2 {\n        init(a: String, b: Int){}\n    }\n    \n    class Service3 {\n        init(a: String, b: Int, c: Double){}\n    }\n\n    \n    var container: Container!\n    \n    override func setUpWithError() throws {\n        container = Container()\n        container.register(Service0.self) { r in Service0() }\n        container.register(Service0.self, name: \"MyService\") { r in Service0() }\n        container.register(Service1.self) { r, a in Service1(a: a) }\n        container.register(Service1.self, name: \"MyService1\") { r, a in Service1(a: a) }\n        container.register(Service2.self) { r, a, b in Service2(a: a, b: b) }\n        container.register(Service2.self, name: \"MyService2\") { r, a, b in Service2(a: a, b: b) }\n        container.register(Service3.self) { r, a, b, c in Service3(a: a, b: b, c: c) }\n        container.register(Service3.self, name: \"MyService3\") { r, a, b, c in Service3(a: a, b: b, c: c) }\n    }\n    \n    func testResolvingServiceUsingPostfixOperator() {\n        let service: Service0 = container~>\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperator() {\n        let service = container ~> Service0.self\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperatorWithName() {\n        let service = container ~> (Service0.self, name: \"MyService\")\n        XCTAssertNotNil(service)\n    }\n\n    #if !SWIFT_PACKAGE && arch(x86_64)\n    func testFailingWithMessageOnUnresolvableService() {\n        // For now we just comment out the test for `precondition()` because we cannot do it without depending on Nimble or CwlPreconditionTesting.\n\n        // var logs = [String]()\n        // Container.loggingFunction = { logs.append($0) }\n        //\n        // let expectation: Expectation<Void> = expect {\n        //    _ = container ~> (Service0.self, name: \"NonExistentService\")\n        // }\n        //\n        // XCTAssertEqual(logs.count, 1)\n    }\n    #endif\n    \n    func testResolvingServiceUsingInfixOperatorWith1DynamicArgument() {\n        let service = container ~> (Service1.self, argument: \"Arg1\")\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperatorWithNameAnd1DynamicArgument() {\n        let service = container ~> (Service1.self, name: \"MyService1\", argument: \"Arg1\")\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperatorWith2DynamicArguments() {\n        let service = container ~> (Service2.self, arguments: (\"Arg1\", 5))\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperatorWithNameAnd2DynamicArguments() {\n        let service: Service2 = container ~> (Service2.self, name: \"MyService2\", arguments: (\"Arg1\", 5))\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperatorWith3DynamicArguments() {\n        let service = container ~> (Service3.self, arguments: (\"Arg1\", 5, 0.2))\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingInfixOperatorWithNameAnd3DynamicArguments() {\n        let service = container ~> (Service3.self, name: \"MyService3\", arguments: (\"Arg1\", 5, 0.2))\n        XCTAssertNotNil(service)\n    }\n    \n    func testResolvingServiceUsingDeprecatedInfixOperators() {\n        //This call has been removed\n        //let service2 = container ~> (Service2.self, arguments: \"Arg1\", 5)\n        \n        //This never worked\n        //let service2_name: Service2 = container ~> (Service2.self, name: \"MyService2\", arguments: \"Arg1\", 5)\n        \n        //This is deprecated\n        let service3 = container ~> (Service3.self, arguments: \"Arg1\", 5, 0.2)\n        let service3_name = container ~> (Service3.self, name: \"MyService3\", arguments: \"Arg1\", 5, 0.2)\n        \n        \n        XCTAssertNotNil(service3)\n        XCTAssertNotNil(service3_name)\n    }\n\n    func testResolvingOptionalServiceWithPostfixOperator() {\n        let service: Service0? = container~>\n        XCTAssertNotNil(service)\n    }\n\n    func testResolvingOptionalServiceUsingInfixOperator() {\n        let service = container ~> Service0?.self\n        XCTAssertNotNil(service)\n    }\n\t\n}\n"
  },
  {
    "path": "Tests/SwinjectAutoregistrationTests/ResolutionErrorTests.swift",
    "content": "#if !SWIFT_PACKAGE\n\nimport XCTest\n@testable import SwinjectAutoregistration\n\nextension ResolutionError: Equatable {}\n\npublic func ==(lhs: ResolutionError, rhs: ResolutionError) -> Bool {\n    switch (lhs, rhs){\n    case (.tooManyDependencies(let ldependencyCount), .tooManyDependencies(let rdependencyCount)):\n        return ldependencyCount == rdependencyCount\n    }\n}\n\nclass ResolutionErrorTests: XCTestCase {\n\t\n    class DependencyA {}\n    class DependencyB {}\n    class DependencyC {}\n    class DependencyD {}\n    class DependencyE {}\n    class DependencyF {}\n    class DependencyG {}\n    class DependencyH {}\n    class DependencyI {}\n    class DependencyJ {}\n    \n    class Service1 {\n        init(a: DependencyA){}\n    }\n    \n    class Service2 {\n        init(a: DependencyA, b: DependencyB){}\n    }\n    \n    class Service3 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC){}\n    }\n    \n    class Service9 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH, i: DependencyI){}\n    }\n    \n    class Service21 {\n        init(a: DependencyA, b: DependencyB, c: DependencyC, d: DependencyD, e: DependencyE, f: DependencyF, g: DependencyG, h: DependencyH, i: DependencyI, j: DependencyJ, k: DependencyA, l: DependencyB, m: DependencyC, n: DependencyD, o: DependencyE, p: DependencyF, q: DependencyG, r: DependencyH, s: DependencyI, t: DependencyJ, u: DependencyA){}\n    }\n    \n    class OptionalService {\n        init(a: DependencyB?){}\n    }\n\n    class UnwrappedService {\n        init(a: DependencyA!, b: DependencyB){}\n    }\n    \n    class BadService {\n        init(a: DependencyA, b: DependencyB, c: DependencyC!, d: DependencyD?, e: DependencyE!, f: DependencyF, g: DependencyG, h: DependencyH?, i: DependencyI, j: DependencyJ, k: DependencyA, l: DependencyB, m: DependencyC, n: DependencyD, o: DependencyE, p: DependencyF, q: DependencyG, r: DependencyH, s: DependencyI, t: DependencyJ, u: DependencyA){}\n    }\n    \n    class OptionalSingleTupleService {\n        init(tuple: (a: DependencyA?, b: DependencyB?, c: DependencyC?)){}\n    }\n    \n    class OptionalMutipleTupleService {\n        init(tupleA: (a: DependencyA?, b: DependencyB?, c: DependencyC?), tupleB: (a: DependencyA?, b: DependencyB?)){}\n    }\n    \n    class NestedClosureService {\n        init(closure: (((String) -> String)?) -> String){}\n    }\n    \n    class OptionalNestedClosureService {\n        init(closure: ((((String) -> String)?) -> String)?){}\n    }\n\n    \n    func testShowingWarningForServiceWithTooManyDependencies() {\n        let w = resolutionErrors(forInitializer: Service21.init)\n        XCTAssertEqual(w.first, ResolutionError.tooManyDependencies(21))\n    }\n    \n    func testNotShowingWarningForSingleDependency() {\n        let w = resolutionErrors(forInitializer: Service1.init)\n        XCTAssertEqual(w.count, 0)\n    }\n\n    func testShowingWarningForServiceWith9Dependencies() {\n        let w = resolutionErrors(forInitializer: Service9.init)\n        XCTAssertEqual(w.count, 0)\n    }\n    \n    func testShowingWarningForServiceWithOptionalDependency() {\n        let w = resolutionErrors(forInitializer: OptionalService.init)\n        XCTAssertEqual(w.count, 0)\n    }\n\n    func testNotShowingWarningForServiceWithUnwrappedDependency() {\n        let w = resolutionErrors(forInitializer: UnwrappedService.init)\n        XCTAssertEqual(w.count, 0)\n    }\n\n    // This might fail\n    // Single argument tuple looks exactly the same as multiple arguments when printed\n    func testNotShowingWarningForSingleArgumentTupleOfOptonals() {\n        let w = resolutionErrors(forInitializer: OptionalSingleTupleService.init)\n        XCTAssertEqual(w.count, 0)\n    }\n    \n    func testNotShowingWarningForMultiipleArgumentTuplesOfOptionals() {\n        let w = resolutionErrors(forInitializer: OptionalMutipleTupleService.init)\n        XCTAssertEqual(w.count, 0)\n    }\n    \n    func testNotShowingWarningForNestedClosures() {\n        let w = resolutionErrors(forInitializer: NestedClosureService.init)\n        XCTAssertEqual(w.count, 0)\n    }\n    \n    func testNotShowingWarningForOptionalClosure() {\n        let w = resolutionErrors(forInitializer: OptionalNestedClosureService.init)\n        XCTAssertEqual(w.count, 0)\n    }\n\n}\n#endif\n"
  },
  {
    "path": "Tests/SwinjectAutoregistrationTests/TypeParserTests.swift",
    "content": "//\n//  TypeParserTests.swift\n//  SwinjectAutoregistration\n//\n//  Created by Yoichi Tagaya on 2021/07/03.\n//  Copyright © 2021 Swinject Contributors. All rights reserved.\n//\n#if !os(Linux) && !os(Android)\nimport XCTest\n\nprotocol ProtocolA{}\nprotocol ProtocolB{}\n\nclass ClassA{\n    class Nested{}\n}\n\nclass _x0name²y {}\n\nclass `protocol` {}\n\n@testable import SwinjectAutoregistration\n\nclass TypeParserTests: XCTestCase {\n    \n    //Helpers\n    func identifier(_ name: String, generics: [Type] = []) -> Type {\n        return Type.identifier(TypeIdentifier(name: name, genericTypes: generics))\n    }\n    \n    func generic_identifier(_ name: String, generics: [String]) -> Type {\n        return Type.identifier(TypeIdentifier(name: name, genericTypes: generics.map { identifier($0) }))\n    }\n    \n    func testParserScansTypeIdentifier() {\n        let string = \"\\(_x0name²y.self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, self.identifier(string))\n    }\n    \n    func testParserDoesNotScanNonTypeIdentifier() {\n        let string = \"1Array\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, nil)\n    }\n    \n    func testParserScansSubtypeIdentifier() {\n        let string = \"\\(ClassA.Nested.self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, self.identifier(\"Nested\"))\n    }\n    \n    func testParserScansArrayType() {\n        let string = \"\\([String].self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, self.generic_identifier(\"Array\", generics: [\"String\"]))\n    }\n    \n    func testParserScansGenericTypeWithMultipleArguments() {\n        let string = \"\\([Int: String].self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, self.generic_identifier(\"Dictionary\", generics: [\"Int\", \"String\"]))\n    }\n    \n    func testParserScansTupleType() {\n        let string = \"\\((name: String, count: Int).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, Type.tuple([self.identifier(\"String\"), self.identifier(\"Int\")]))\n    }\n    \n    func testParserScansTupleOfTuples() {\n        let string = \"\\(((String, Int, Double), [String]).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, Type.tuple([Type.tuple([self.identifier(\"String\"), self.identifier(\"Int\"), self.identifier(\"Double\")]), self.generic_identifier(\"Array\", generics: [\"String\"])]))\n    }\n    \n    func testParserScansClosureType() {\n        let string = \"\\(((String, Int) -> String).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, Type.closure(parameters: [self.identifier(\"String\"), self.identifier(\"Int\")], returnType: self.identifier(\"String\"), throws: false))\n    }\n    \n    func testParserScansNestedFunctionType() {\n        let string = \"\\((((String) -> String, Int) -> String).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, Type.closure(parameters: [Type.closure(parameters: [self.identifier(\"String\")], returnType: self.identifier(\"String\"), throws: false), self.identifier(\"Int\")], returnType: self.identifier(\"String\"), throws: false))\n    }\n    \n    func testParserScansNoParameterFunctionType() {\n        let string = \"\\((() -> Void).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        let void = Type.tuple([]) // Void is empty tuple\n        XCTAssertEqual(type, Type.closure(parameters: [], returnType: void, throws: false))\n    }\n    \n    func testParserScansThrowingFunctionType() {\n        let string = \"\\((() throws -> Void).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        let void = Type.tuple([]) // Void is empty tuple\n        XCTAssertEqual(type, Type.closure(parameters: [], returnType: void, throws: true))\n    }\n    \n    func testParserScansOptional() {\n        let string = \"\\((Int?).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, self.generic_identifier(\"Optional\", generics: [\"Int\"]))\n    }\n    \n    func testParserScansProtocolCompositionType() {\n        let string = \"\\((ProtocolA & ProtocolB).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, Type.protocolComposition([TypeIdentifier(name: \"ProtocolA\"), TypeIdentifier(name: \"ProtocolB\")]))\n    }\n    \n    func testParserScansMetatypes() {\n        let string = \"\\((ProtocolA.Type.Type).self)\" // Very meta\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, Type.identifier(TypeIdentifier(name: \"ProtocolA\", subTypeIdentifier: TypeIdentifier(name: \"Type\", subTypeIdentifier: TypeIdentifier(name: \"Type\")))))\n    }\n    \n    func testParserScansBacktickedType() {\n        let string = \"\\((`protocol`).self)\"\n        let parser = TypeParser(string: string)\n        let type = parser.parseType()\n        \n        XCTAssertEqual(type, self.identifier(string))\n    }\n    \n}\n#endif\n"
  },
  {
    "path": "Tests/SwinjectAutoregistrationTests/XCTestManifests.swift",
    "content": "#if !canImport(ObjectiveC)\nimport XCTest\n\nextension AutoregistrationTests {\n    // DO NOT MODIFY: This is autogenerated, use:\n    //   `swift test --generate-linuxmain`\n    // to regenerate.\n    static let __allTests__AutoregistrationTests = [\n        (\"testLoggingFunctionIsNotErased\", testLoggingFunctionIsNotErased),\n        (\"testServiceIsRegisteredWithEightDependencies\", testServiceIsRegisteredWithEightDependencies),\n        (\"testServiceIsRegisteredWithFiveDependencies\", testServiceIsRegisteredWithFiveDependencies),\n        (\"testServiceIsRegisteredWithFourDependencies\", testServiceIsRegisteredWithFourDependencies),\n        (\"testServiceIsRegisteredWithFourDynamicArguments\", testServiceIsRegisteredWithFourDynamicArguments),\n        (\"testServiceIsRegisteredWithNineDependencies\", testServiceIsRegisteredWithNineDependencies),\n        (\"testServiceIsRegisteredWithOneDependency\", testServiceIsRegisteredWithOneDependency),\n        (\"testServiceIsRegisteredWithOneDynamicArgument\", testServiceIsRegisteredWithOneDynamicArgument),\n        (\"testServiceIsRegisteredWithOptionalDependencies\", testServiceIsRegisteredWithOptionalDependencies),\n        (\"testServiceIsRegisteredWithSevenDependencies\", testServiceIsRegisteredWithSevenDependencies),\n        (\"testServiceIsRegisteredWithSixDependencies\", testServiceIsRegisteredWithSixDependencies),\n        (\"testServiceIsRegisteredWithThreeDependencies\", testServiceIsRegisteredWithThreeDependencies),\n        (\"testServiceIsRegisteredWithThreeDynamicArguments\", testServiceIsRegisteredWithThreeDynamicArguments),\n        (\"testServiceIsRegisteredWithTwentyDependencies\", testServiceIsRegisteredWithTwentyDependencies),\n        (\"testServiceIsRegisteredWithTwoDependencies\", testServiceIsRegisteredWithTwoDependencies),\n        (\"testServiceIsRegisteredWithTwoDynamicArguments\", testServiceIsRegisteredWithTwoDynamicArguments),\n        (\"testServiceIsRegisteredWithUnwrrappedDependencies\", testServiceIsRegisteredWithUnwrrappedDependencies),\n        (\"testServiceIsRegisteredWithZeroDependencies\", testServiceIsRegisteredWithZeroDependencies),\n    ]\n}\n\nextension OperatorsTests {\n    // DO NOT MODIFY: This is autogenerated, use:\n    //   `swift test --generate-linuxmain`\n    // to regenerate.\n    static let __allTests__OperatorsTests = [\n        (\"testResolvingOptionalServiceUsingInfixOperator\", testResolvingOptionalServiceUsingInfixOperator),\n        (\"testResolvingOptionalServiceWithPostfixOperator\", testResolvingOptionalServiceWithPostfixOperator),\n        (\"testResolvingServiceUsingDeprecatedInfixOperators\", testResolvingServiceUsingDeprecatedInfixOperators),\n        (\"testResolvingServiceUsingInfixOperator\", testResolvingServiceUsingInfixOperator),\n        (\"testResolvingServiceUsingInfixOperatorWith1DynamicArgument\", testResolvingServiceUsingInfixOperatorWith1DynamicArgument),\n        (\"testResolvingServiceUsingInfixOperatorWith2DynamicArguments\", testResolvingServiceUsingInfixOperatorWith2DynamicArguments),\n        (\"testResolvingServiceUsingInfixOperatorWith3DynamicArguments\", testResolvingServiceUsingInfixOperatorWith3DynamicArguments),\n        (\"testResolvingServiceUsingInfixOperatorWithName\", testResolvingServiceUsingInfixOperatorWithName),\n        (\"testResolvingServiceUsingInfixOperatorWithNameAnd1DynamicArgument\", testResolvingServiceUsingInfixOperatorWithNameAnd1DynamicArgument),\n        (\"testResolvingServiceUsingInfixOperatorWithNameAnd2DynamicArguments\", testResolvingServiceUsingInfixOperatorWithNameAnd2DynamicArguments),\n        (\"testResolvingServiceUsingInfixOperatorWithNameAnd3DynamicArguments\", testResolvingServiceUsingInfixOperatorWithNameAnd3DynamicArguments),\n        (\"testResolvingServiceUsingPostfixOperator\", testResolvingServiceUsingPostfixOperator),\n    ]\n}\n\npublic func __allTests() -> [XCTestCaseEntry] {\n    return [\n        testCase(AutoregistrationTests.__allTests__AutoregistrationTests),\n        testCase(OperatorsTests.__allTests__OperatorsTests)\n    ]\n}\n#endif\n"
  },
  {
    "path": "bin/generate",
    "content": "#!/usr/bin/env xcrun swift\n\n// Generates a Swift file with registration fuctions and other helper methods\n\nimport Foundation\n\nlet genericServices = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"]\n\nlet genericArgumentPrefix = \"Arg\"\n\nlet autoregistrationPath = \"Sources/AutoRegistration.swift\"\nlet checksPath = \"Sources/CheckResolved.swift\"\nlet resolverPath = \"Sources/Resolver.swift\"\n\nfunc headers(_ fileName: String) -> String {\n    return [\"//\",\n    \"//  \\(fileName)\",\n    \"//  SwinjectAutoregistration\",\n    \"//\",\n    \"//  Generated by Swinject AutoRegistration generator.\",\n    \"//  Copyright © 2017 Swinject Contributors. All rights reserved.\",\n    \"//\"].joined(separator: \"\\n\")\n}\n\nfunc registerComment(_ dependencies: Int, arguments: Int) -> String {\n    let genericArguments = (1..<(arguments+1)).map{ \"\\(genericArgumentPrefix)\\($0)\" } // [\"Arg1\", \"Arg2\", \"Arg3\"]\n    return [\n        \"/** Registers a factory that resolves the Service based on dependencies inferred from the Service initializer.\",\n        \" \",\n        \" Usage: `autoregister(MyService.self\\((arguments > 0) ? \", \\(arguments == 1 ? \"argument\" : \"arguments\"): \\(commaConcat(genericArguments.map{\"\\($0).self\"}))\" : \"\")), initializer: MyService.init`\",\n        \" - Parameters:\",\n        \"    - service: Registered service type\",\n        \"    - name: Optional name of the service\",\n        (arguments > 0) ? \"    - \\(arguments == 1 ? \"argument\" : \"arguments\"): Argument type(s) that will be resolved dynamically instead of resolving dependency\" : \"\",\n        \"    - initializer: Initializer of the registered service\",\n        \" - Returns: The registered service entry \\(arguments > 0 ? \"with \\(arguments) arguments\" : \"\")\",\n        \" - Important: Might fail if one of the dependencies is unresolvable.\",\n        \" */\"\n    ].joined(separator: \"\\n\")\n}\n\nextension Array {\n    subscript(safe index: Int) -> Element? {\n        return indices ~= index ? self[index] : nil\n    }\n}\n\nfunc genericType(for position: Int) -> String {\n    let max = genericServices.count\n    var generic: String\n    switch position {\n    case _ where position < max: generic = genericServices[position % max]\n    default: generic = genericServices[position / max - 1] + genericServices[position % max]\n    }\n    \n    let toEscape = [\"as\", \"in\"]\n    \n    if toEscape.contains(generic.lowercased()) {\n        generic = \"`\\(generic)`\"\n    }\n    \n    return generic\n}\n\n\nfunc commaConcat(_ xs: [String]) -> String {\n    return xs.joined(separator: \", \")\n}\n\nfunc extraParentheses(_ string: String, when condition: Bool) -> String {\n    return condition ? \"(\\(string))\" : string\n}\n\nfunc registerGenerator(_ dependenciesCount: Int, argumentsCount: Int, breakIntoVariables: Bool = false) -> String {\n    // If there is only one argument and one dependency, it can be checked by compiler\n    let isArgumentInjection = dependenciesCount == 1 && argumentsCount == 1\n    \n    let argParameterName = argumentsCount == 1 ? \"argument\" : \"arguments\"\n    \n    var genericParameters = (0..<dependenciesCount).map(genericType) // [\"A\", \"B\", \"C\"]\n    let genericArguments = (1..<(argumentsCount+1)).map{ \"\\(genericArgumentPrefix)\\($0)\" } // [\"Arg1\", \"Arg2\", \"Arg3\"]\n    let genericArgumentsVars = genericArguments.map { $0.lowercased() } // [\"arg1\", \"arg2\", \"arg3\"]\n    \n    var resolvers = genericParameters.map { _ in \"res.resolve(\\( argumentsCount > 0 ? \"\\(argParameterName): \\(commaConcat(genericArgumentsVars))\" : \"\"))\" }\n    \n    var genericsDefinition = commaConcat([\"Service\"] + genericParameters + genericArguments)\n    \n    if isArgumentInjection {\n        genericParameters = [\"\\(genericArgumentPrefix)1\"]\n        genericsDefinition = commaConcat([\"Service\"] + genericParameters)\n        resolvers = [\"\\(genericArgumentPrefix.lowercased())1\"]\n    }\n    \n    let concatenatedParameters = commaConcat(genericParameters)\n    \n    let argumentsDefinition = argumentsCount == 0 ? \"\" : \", \\(argParameterName) \\(commaConcat(genericArguments.enumerated().map{ \"\\($0 >= 1 ? \"_\" : \"\") \\($1.lowercased()): \\($1).Type\" }))\"\n    \n    let initializer: String\n    \n    if breakIntoVariables {\n        let services = genericParameters.enumerated().map { \"let \\($1.lowercased()): \\($1)? = \\(resolvers[$0])\" }\n        initializer =\n            \"           \" + services.joined(separator: \"; \") + \"\\n\" +\n            \"           checkResolved(initializer: initializer, services: \\(commaConcat(genericParameters.map{$0.lowercased()})))\\n\" +\n        \"           return initializer(\\(extraParentheses(commaConcat(genericParameters.map{ \"\\($0.lowercased())!\" }), when: dependenciesCount != 1)))\\n\"\n    } else {\n        initializer = \"       initializer(\\(extraParentheses(commaConcat(resolvers.map{\"\\($0)\\(isArgumentInjection ? \"\" : \"!\")\"}), when: dependenciesCount != 1)))\"\n    }\n    \n    let closureParameters = commaConcat([\"res\"] + genericArgumentsVars)\n    \n    var register = [\n        registerComment(dependenciesCount, arguments: argumentsCount),\n        \"@discardableResult\",\n        \"func autoregister<\\(genericsDefinition)>(_ service: Service.Type, name: String? = nil\\(argumentsDefinition), initializer: @escaping (\\(extraParentheses(concatenatedParameters, when: dependenciesCount != 1))) -> Service) -> ServiceEntry<Service> {\",\n    ]\n    \n    if argumentsCount > 1 {\n        register += [\"   precondition(hasUnique(arguments: [\\(commaConcat(genericArgumentsVars))]), \\\"Autoregistration of service with dynamic arguments of the same type (\\(commaConcat(genericArgumentsVars.map{ \"\\\\(\\($0))\" }))) is not supported\\\")\"]\n    }\n    \n    register += [\n        \"   return self.register(service.self, name: name, factory: { \\(closureParameters) in \",\n        initializer,\n        \"   } as (\\(commaConcat([\"Resolver\"] + genericArguments))) -> Service)\",\n        \"}\"\n    ]\n\n    return register.joined(separator: \"\\n\")\n}\n\n\nfunc resolverGenerator(_ arguments: Int) -> String {\n    \n    let argParameterName = arguments == 1 ? \"argument\" : \"arguments\"\n    \n    let genericArguments = (1..<(arguments+1)).map{ \"\\(genericArgumentPrefix)\\($0)\" } // [\"Arg1\", \"Arg2\", \"Arg3\"]\n    \n    let genericsDefinition = commaConcat([\"Service\"] + genericArguments)\n    \n    let paramArgs = (1..<(arguments+1)).map { \"\\(genericArgumentPrefix.lowercased())\\($0)\" }\n    \n    let argumentsTests = paramArgs.map { \"(\\($0) as? Service) ?? \" }.joined(separator: \"\")\n\n    let argumentsDefinition = arguments == 0 ? \"\" : \"\\(argParameterName) \\(commaConcat(genericArguments.enumerated().map{ \"\\($0 >= 1 ? \"_\" : \"\") \\($1.lowercased()): \\($1)\" }))\"\n\n\n    let implementation = \"return \\(argumentsTests)self.resolve(Service.self)\"\n    \n    let resolver = [\n    \"    func resolve<\\(genericsDefinition)>(\\(argumentsDefinition)) -> Service? {\",\n    \"       \\(implementation)\",\n    \"    }\"\n    ]\n    return resolver.joined(separator: \"\\n\")\n}\n\nfunc checkGenerator(_ dependencies: Int) -> String {\n    \n    let genericParameters = (0..<dependencies).map(genericType) // [\"A\", \"B\", \"C\"]\n    let generics = commaConcat(genericParameters)\n    \n    let servicesDefinition = dependencies == 0 ? \"\" : \"\\(commaConcat(genericParameters.enumerated().map{ \"\\($0 >= 1 ? \"_\" : \"\") \\($1.lowercased()): \\($1)?\" }))\"\n    let recursiveUnresolvedCall = dependencies > 1 ? \"unresolvedService(\\(commaConcat(genericParameters.dropLast().map { $0.lowercased() }))) ?? \" : \"\"\n    let lowercasedServicesString = commaConcat(genericParameters.map{ $0.lowercased() })\n    let maxGroupSize: Int = 10\n    let serviceGroups: [[String]] = genericParameters.map{ $0.lowercased() }.enumerated().reduce([]){ accum, s in\n        var accum = accum\n        let (index, service) = s\n        let groupIndex = Int(index/maxGroupSize)\n        if groupIndex >= accum.count { accum.append([]) }\n        accum[groupIndex].append(service)\n        return accum\n    }\n    \n    let serviceArrayString = serviceGroups.map { \"[\\(commaConcat($0))] as [Any?]\"}.joined(separator: \" + \")\n    \n    let check = [\n    \"func unresolvedService<\\(generics)>(_\\(servicesDefinition)) -> String? {\",\n    \"   return \\(recursiveUnresolvedCall)( \\(genericParameters.last!.lowercased()) == nil ? \\\"\\\\(\\(genericParameters.last!).self)\\\" : nil )\",\n    \"}\",\n    \"\",\n    \"func checkResolved<Service, \\(generics)>(initializer: (\\(extraParentheses(generics, when: dependencies != 1))) -> Service, services\\(servicesDefinition)){\",\n    \"   let unresolved = ( \\(serviceArrayString) ).filter { $0 == nil }\",\n    \"   if unresolved.count > 0 {\",\n    \"       let errorMessage = resolutionErrors(forInitializer: initializer).map { \\\"\\\\($0.message)\\\\n\\\" }.joined()\",\n    \"       fatalError(\\\"SwinjectAutoregistration: Resolution failed.\\\\n\\\\(errorMessage)Unresolved service: \\\\(unresolvedService(\\(lowercasedServicesString))!)\\\\nInitializer: (\\(commaConcat(genericParameters.map{ \"\\\\(\\($0).self)\" }))) -> \\\\(Service.self)\\\")\",\n    \"   }\",\n    \"}\"\n    ]\n    \n    return check.joined(separator: \"\\n\")\n}\n\n\nfunc write(to outputPath: String, lines: [String]) throws{\n    let output = ([\n        headers(outputPath),\n        \"\\n\\nimport Swinject\\n\\n\",\n        ]\n        + lines)\n        .joined(separator: \"\\n\")\n    \n    let currentPath = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)\n    let swinjectPath = currentPath.appendingPathComponent(outputPath)\n    \n    try output.write(to: swinjectPath, atomically: true, encoding: String.Encoding.utf8)\n}\n\nprint(\"Generating 💬\")\n\n\nlet dependenciesCount = Int(CommandLine.arguments[safe: 1] ?? \"20\")!\nlet argumentsCount = Int(CommandLine.arguments[safe: 2] ?? \"3\")!\nlet breakCount = Int(CommandLine.arguments[safe: 3] ?? \"0\")!\n\n\nlet registerLines = (0...dependenciesCount).map { dep in\n    (0...argumentsCount).filter{ dep >= $0 }.map { arg -> String in\n        registerGenerator(dep, argumentsCount: arg, breakIntoVariables: dep + arg > breakCount)\n    }\n    }\n\nlet registers = registerLines.reduce([]){ $0 + $1}\n\nvar autoregistrationOutput = [\n    \"let maxDependencies = \\(dependenciesCount)\",\n    \"let maxArguments = \\(argumentsCount)\",\n    \"\\n\",\n    \"public extension Container {\\n\",\n        registers.joined(separator: \"\\n\\n\"),\n    \"\\n\\n}\",\n]\n\nlet resolvers = (0...argumentsCount).map { arg in\n    resolverGenerator(arg)\n}\n\nlet resolverOutput = [\n    \"extension Resolver {\\n\\n\",\n    resolvers.joined(separator: \"\\n\\n\"),\n    \"}\\n\\n\"\n]\n\nlet checks = (1...dependenciesCount).map { dep in\n    checkGenerator(dep)\n}\n\nlet checksOutput = [checks.joined(separator: \"\\n\\n\")]\n\n\ndo {\n    try write(to: autoregistrationPath, lines: autoregistrationOutput)\n    try write(to: resolverPath, lines: resolverOutput)\n    try write(to: checksPath, lines: checksOutput)\n    \n    print(\"Done, swinject functions files written at \\(autoregistrationPath), \\(resolverPath), \\(checksPath) 👍\")\n} catch let e as NSError {\n    print(\"An error occurred while saving the generated functions. Error: \\(e)\")\n}\n"
  }
]