master 55233686ef4a cached
244 files
883.7 KB
233.5k tokens
35 symbols
1 requests
Download .txt
Showing preview only (966K chars total). Download the full file or copy to clipboard to get everything.
Repository: IvanRublev/PersistentStorageSerializable
Branch: master
Commit: 55233686ef4a
Files: 244
Total size: 883.7 KB

Directory structure:
gitextract_z6r8nz93/

├── .gitignore
├── .swift-version
├── .travis.yml
├── Cartfile
├── Cartfile.private
├── Cartfile.resolved
├── Example/
│   ├── ExamplesOfUsage.playground/
│   │   ├── Contents.swift
│   │   ├── contents.xcplayground
│   │   └── timeline.xctimeline
│   ├── PersistentStorageSerializable/
│   │   ├── AppDelegate.swift
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.xib
│   │   │   └── Main.storyboard
│   │   ├── Images.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Info.plist
│   │   ├── Settings.swift
│   │   └── ViewController.swift
│   ├── PersistentStorageSerializable.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   └── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── PersistentStorageSerializable-MacExample.xcscheme
│   │           ├── PersistentStorageSerializable-Tests.xcscheme
│   │           └── PersistentStorageSerializable-iOSExample.xcscheme
│   ├── PersistentStorageSerializable.xcworkspace/
│   │   └── contents.xcworkspacedata
│   ├── PersistentStorageSerializable_MacExample/
│   │   ├── AppDelegate.swift
│   │   ├── AppSettings.swift
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   ├── Podfile
│   ├── Pods/
│   │   ├── Local Podspecs/
│   │   │   └── PersistentStorageSerializable.podspec.json
│   │   ├── Manifest.lock
│   │   ├── Nimble/
│   │   │   ├── LICENSE.md
│   │   │   ├── README.md
│   │   │   └── Sources/
│   │   │       ├── Lib/
│   │   │       │   └── CwlPreconditionTesting/
│   │   │       │       ├── CwlCatchException/
│   │   │       │       │   └── CwlCatchException/
│   │   │       │       │       ├── CwlCatchException.h
│   │   │       │       │       ├── CwlCatchException.m
│   │   │       │       │       └── CwlCatchException.swift
│   │   │       │       └── CwlPreconditionTesting/
│   │   │       │           ├── CwlBadInstructionException.swift
│   │   │       │           ├── CwlCatchBadInstruction.h
│   │   │       │           ├── CwlCatchBadInstruction.m
│   │   │       │           ├── CwlCatchBadInstruction.swift
│   │   │       │           ├── CwlDarwinDefinitions.swift
│   │   │       │           ├── mach_excServer.c
│   │   │       │           └── mach_excServer.h
│   │   │       ├── Nimble/
│   │   │       │   ├── Adapters/
│   │   │       │   │   ├── AdapterProtocols.swift
│   │   │       │   │   ├── AssertionDispatcher.swift
│   │   │       │   │   ├── AssertionRecorder.swift
│   │   │       │   │   ├── NMBExpectation.swift
│   │   │       │   │   ├── NMBObjCMatcher.swift
│   │   │       │   │   ├── NimbleEnvironment.swift
│   │   │       │   │   └── NimbleXCTestHandler.swift
│   │   │       │   ├── DSL+Wait.swift
│   │   │       │   ├── DSL.swift
│   │   │       │   ├── Expectation.swift
│   │   │       │   ├── Expression.swift
│   │   │       │   ├── FailureMessage.swift
│   │   │       │   ├── Matchers/
│   │   │       │   │   ├── AllPass.swift
│   │   │       │   │   ├── AsyncMatcherWrapper.swift
│   │   │       │   │   ├── BeAKindOf.swift
│   │   │       │   │   ├── BeAnInstanceOf.swift
│   │   │       │   │   ├── BeCloseTo.swift
│   │   │       │   │   ├── BeEmpty.swift
│   │   │       │   │   ├── BeGreaterThan.swift
│   │   │       │   │   ├── BeGreaterThanOrEqualTo.swift
│   │   │       │   │   ├── BeIdenticalTo.swift
│   │   │       │   │   ├── BeLessThan.swift
│   │   │       │   │   ├── BeLessThanOrEqual.swift
│   │   │       │   │   ├── BeLogical.swift
│   │   │       │   │   ├── BeNil.swift
│   │   │       │   │   ├── BeVoid.swift
│   │   │       │   │   ├── BeginWith.swift
│   │   │       │   │   ├── Contain.swift
│   │   │       │   │   ├── EndWith.swift
│   │   │       │   │   ├── Equal.swift
│   │   │       │   │   ├── HaveCount.swift
│   │   │       │   │   ├── Match.swift
│   │   │       │   │   ├── MatchError.swift
│   │   │       │   │   ├── MatcherFunc.swift
│   │   │       │   │   ├── MatcherProtocols.swift
│   │   │       │   │   ├── PostNotification.swift
│   │   │       │   │   ├── RaisesException.swift
│   │   │       │   │   ├── SatisfyAnyOf.swift
│   │   │       │   │   ├── ThrowAssertion.swift
│   │   │       │   │   └── ThrowError.swift
│   │   │       │   ├── Nimble.h
│   │   │       │   └── Utils/
│   │   │       │       ├── Async.swift
│   │   │       │       ├── Errors.swift
│   │   │       │       ├── Functional.swift
│   │   │       │       ├── SourceLocation.swift
│   │   │       │       └── Stringers.swift
│   │   │       └── NimbleObjectiveC/
│   │   │           ├── CurrentTestCaseTracker.h
│   │   │           ├── DSL.h
│   │   │           ├── DSL.m
│   │   │           ├── NMBExceptionCapture.h
│   │   │           ├── NMBExceptionCapture.m
│   │   │           ├── NMBStringify.h
│   │   │           ├── NMBStringify.m
│   │   │           └── XCTestObservationCenter+Register.m
│   │   ├── Pods.xcodeproj/
│   │   │   ├── project.pbxproj
│   │   │   ├── project.xcworkspace/
│   │   │   │   └── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── xcschemes/
│   │   │           ├── PersistentStorageSerializable-OSX.xcscheme
│   │   │           ├── PersistentStorageSerializable-iOS.xcscheme
│   │   │           ├── Reflection-OSX.xcscheme
│   │   │           └── Reflection-iOS.xcscheme
│   │   ├── Quick/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   └── Sources/
│   │   │       ├── Quick/
│   │   │       │   ├── Callsite.swift
│   │   │       │   ├── Configuration/
│   │   │       │   │   └── Configuration.swift
│   │   │       │   ├── DSL/
│   │   │       │   │   ├── DSL.swift
│   │   │       │   │   └── World+DSL.swift
│   │   │       │   ├── ErrorUtility.swift
│   │   │       │   ├── Example.swift
│   │   │       │   ├── ExampleGroup.swift
│   │   │       │   ├── ExampleMetadata.swift
│   │   │       │   ├── Filter.swift
│   │   │       │   ├── Hooks/
│   │   │       │   │   ├── Closures.swift
│   │   │       │   │   ├── ExampleHooks.swift
│   │   │       │   │   ├── HooksPhase.swift
│   │   │       │   │   └── SuiteHooks.swift
│   │   │       │   ├── NSBundle+CurrentTestBundle.swift
│   │   │       │   ├── QuickSelectedTestSuiteBuilder.swift
│   │   │       │   ├── QuickTestSuite.swift
│   │   │       │   ├── URL+FileName.swift
│   │   │       │   └── World.swift
│   │   │       └── QuickObjectiveC/
│   │   │           ├── Configuration/
│   │   │           │   ├── QuickConfiguration.h
│   │   │           │   └── QuickConfiguration.m
│   │   │           ├── DSL/
│   │   │           │   ├── QCKDSL.h
│   │   │           │   ├── QCKDSL.m
│   │   │           │   └── World+DSL.h
│   │   │           ├── NSString+QCKSelectorName.h
│   │   │           ├── NSString+QCKSelectorName.m
│   │   │           ├── Quick.h
│   │   │           ├── QuickSpec.h
│   │   │           ├── QuickSpec.m
│   │   │           ├── World.h
│   │   │           └── XCTestSuite+QuickTestSuiteBuilder.m
│   │   ├── Reflection/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   └── Sources/
│   │   │       └── Reflection/
│   │   │           ├── Advance.swift
│   │   │           ├── Any+Extensions.swift
│   │   │           ├── Array+Extensions.swift
│   │   │           ├── Construct.swift
│   │   │           ├── Get.swift
│   │   │           ├── Identity.swift
│   │   │           ├── MemoryProperties.swift
│   │   │           ├── Metadata+Class.swift
│   │   │           ├── Metadata+Kind.swift
│   │   │           ├── Metadata+Struct.swift
│   │   │           ├── Metadata+Tuple.swift
│   │   │           ├── Metadata.swift
│   │   │           ├── MetadataType.swift
│   │   │           ├── NominalType.swift
│   │   │           ├── NominalTypeDescriptor.swift
│   │   │           ├── PointerType.swift
│   │   │           ├── Properties.swift
│   │   │           ├── ReflectionError.swift
│   │   │           ├── RelativePointer.swift
│   │   │           ├── Set.swift
│   │   │           ├── Storage.swift
│   │   │           ├── UnsafePointer+Extensions.swift
│   │   │           └── ValueWitnessTable.swift
│   │   └── Target Support Files/
│   │       ├── Nimble/
│   │       │   ├── Info.plist
│   │       │   ├── Nimble-dummy.m
│   │       │   ├── Nimble-prefix.pch
│   │       │   ├── Nimble-umbrella.h
│   │       │   ├── Nimble.modulemap
│   │       │   └── Nimble.xcconfig
│   │       ├── PersistentStorageSerializable-OSX/
│   │       │   ├── Info.plist
│   │       │   ├── PersistentStorageSerializable-OSX-dummy.m
│   │       │   ├── PersistentStorageSerializable-OSX-prefix.pch
│   │       │   ├── PersistentStorageSerializable-OSX-umbrella.h
│   │       │   ├── PersistentStorageSerializable-OSX.modulemap
│   │       │   └── PersistentStorageSerializable-OSX.xcconfig
│   │       ├── PersistentStorageSerializable-iOS/
│   │       │   ├── Info.plist
│   │       │   ├── PersistentStorageSerializable-iOS-dummy.m
│   │       │   ├── PersistentStorageSerializable-iOS-prefix.pch
│   │       │   ├── PersistentStorageSerializable-iOS-umbrella.h
│   │       │   ├── PersistentStorageSerializable-iOS.modulemap
│   │       │   └── PersistentStorageSerializable-iOS.xcconfig
│   │       ├── Pods-PersistentStorageSerializable_MacExample/
│   │       │   ├── Info.plist
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-acknowledgements.markdown
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-acknowledgements.plist
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-dummy.m
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-frameworks.sh
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-resources.sh
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-umbrella.h
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample.debug.xcconfig
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample.modulemap
│   │       │   └── Pods-PersistentStorageSerializable_MacExample.release.xcconfig
│   │       ├── Pods-PersistentStorageSerializable_Tests/
│   │       │   ├── Info.plist
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-acknowledgements.markdown
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-acknowledgements.plist
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-dummy.m
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-frameworks.sh
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-resources.sh
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-umbrella.h
│   │       │   ├── Pods-PersistentStorageSerializable_Tests.debug.xcconfig
│   │       │   ├── Pods-PersistentStorageSerializable_Tests.modulemap
│   │       │   └── Pods-PersistentStorageSerializable_Tests.release.xcconfig
│   │       ├── Pods-PersistentStorageSerializable_iOSExample/
│   │       │   ├── Info.plist
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-acknowledgements.markdown
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-acknowledgements.plist
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-dummy.m
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-frameworks.sh
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-resources.sh
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-umbrella.h
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample.modulemap
│   │       │   └── Pods-PersistentStorageSerializable_iOSExample.release.xcconfig
│   │       ├── Quick/
│   │       │   ├── Info.plist
│   │       │   ├── Quick-dummy.m
│   │       │   ├── Quick-prefix.pch
│   │       │   ├── Quick-umbrella.h
│   │       │   ├── Quick.modulemap
│   │       │   └── Quick.xcconfig
│   │       ├── Reflection-OSX/
│   │       │   ├── Info.plist
│   │       │   ├── Reflection-OSX-dummy.m
│   │       │   ├── Reflection-OSX-prefix.pch
│   │       │   ├── Reflection-OSX-umbrella.h
│   │       │   ├── Reflection-OSX.modulemap
│   │       │   └── Reflection-OSX.xcconfig
│   │       └── Reflection-iOS/
│   │           ├── Info.plist
│   │           ├── Reflection-iOS-dummy.m
│   │           ├── Reflection-iOS-prefix.pch
│   │           ├── Reflection-iOS-umbrella.h
│   │           ├── Reflection-iOS.modulemap
│   │           └── Reflection-iOS.xcconfig
│   └── Tests/
│       ├── Car.plist
│       ├── Info.plist
│       ├── PersistentStorageMock.swift
│       ├── PersistentStorageSerializableTests.swift
│       └── SupportedSerializableTypeTests.swift
├── LICENSE
├── PersistentStorageSerializable/
│   ├── Assets/
│   │   └── .gitkeep
│   └── Classes/
│       ├── .gitkeep
│       ├── PersistentStorage.swift
│       ├── PersistentStorageSerializable.swift
│       ├── PlistStorage.swift
│       ├── PropertiesIteration.swift
│       ├── SupportedSerializableType.swift
│       ├── SwiftTryCatch.h
│       ├── SwiftTryCatch.m
│       └── UserDefaultsStorage.swift
├── PersistentStorageSerializable.podspec
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# OS X
.DS_Store

# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
*.xccheckout
profile
*.moved-aside
DerivedData
*.hmap
*.ipa

# Bundler
.bundle

Carthage
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
# 
# Note: if you ignore the Pods directory, make sure to uncomment
# `pod install` in .travis.yml
#
!Pods/
Pods/*
!Pods/Pods.xcodeproj/
Podfile.lock


================================================
FILE: .swift-version
================================================
3.1


================================================
FILE: .travis.yml
================================================
# references:
# * http://www.objc.io/issue-6/travis-ci.html
# * https://github.com/supermarin/xcpretty#usage

osx_image: xcode8.3
language: objective-c
# cache: cocoapods
# podfile: Example/Podfile
# before_install:
# - gem install cocoapods # Since Travis is not always on latest version
# - pod install --project-directory=Example
before_install: cd Example && pod install && cd -
install:
- gem install xcpretty --no-rdoc --no-ri --no-document --quiet
script:
- set -o pipefail && xcodebuild test -workspace Example/PersistentStorageSerializable.xcworkspace -scheme PersistentStorageSerializable-Tests -sdk iphonesimulator10.0 -destination 'platform=iOS Simulator,name=iPhone SE,OS=10.0' ONLY_ACTIVE_ARCH=NO | xcpretty
- pod lib lint


================================================
FILE: Cartfile
================================================
github "Zewo/Reflection" ~> 0.14


================================================
FILE: Cartfile.private
================================================
github "jspahrsummers/xcconfigs" "2055f18"


================================================
FILE: Cartfile.resolved
================================================
github "Zewo/Reflection" "0.14.3"
github "jspahrsummers/xcconfigs" "2055f18efbe18e77408f7f43947f7ad92b2d4ff0"


================================================
FILE: Example/ExamplesOfUsage.playground/Contents.swift
================================================
//: # PersistentStorageSerializable library. 
import UIKit
import PersistentStorageSerializable

/*:
 ## Custom persistent storage
 
 Usually, we use `UserDefaultsStorage` class provided by the library to serialize type values with the system user defaults.
 
 We can define a custom persistent storage by adopting `PersistentStorage` protocol. Let's define a memory storage and use it instead `UserDefaultsStorage` for demonstration purposes.
 */
final class MemoryStorage {
    var dictionary = [String : Any]()
}

extension MemoryStorage: PersistentStorage {
    func beginTransaction() throws {}
    
    func register(defaultValues: [String : Any]) {}
    
    func get(valueOf key: String) -> Any? {
        return dictionary[key]
    }
    
    func set(value: Any?, for key: String) throws {
        dictionary[key] = value
    }
    
    func finishTransaction() throws {}
}

let memoryStorage = MemoryStorage()

/*:
 ---
 
 ## Serializing a struct type
 
 Declare struct type for your user preferences and adopt `PersistentStorageSerializable` protocol.
 */
struct UserPreferences: PersistentStorageSerializable {
    var myString = "Hello"
    var myBool = false
    
    // MARK: Adopt PersistentStorageSerializable
    var persistentStorage: PersistentStorage!
    var persistentStorageKeyPrefix: String! = "UserPreferences"
}

memoryStorage.dictionary

var preferences = try! UserPreferences(from: memoryStorage)

preferences.myString = "Greetings"
preferences.myBool = true

try! preferences.persist()

//: Preferences values are persisted in storage.
memoryStorage.dictionary

/*:
 ---

 ## Serializing a class type
 
 If we use classes as a data structure for settings then we can use a custom subclass to adopt serialization functionality.
 */
class Serializable: PersistentStorageSerializable {
    var persistentStorage: PersistentStorage!
    var persistentStorageKeyPrefix: String!
    
    required init() {}
}

class AppSettings: Serializable {
    var myUInt = UInt.max
    var myDouble = 125.76
    
//: - We can use only plist types and collections of such types for properties. If we have to persist some other type we should convert it to plist one as shown below.
    var _myColor = [Float](arrayLiteral: 0, 0, 0, 0)
    var myColor: UIColor {
        get {
            return UIColor(colorLiteralRed: _myColor[0], green: _myColor[1], blue: _myColor[2], alpha: _myColor[3])
        }
        set {
            var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0
            newValue.getRed(&r, green: &g, blue: &b, alpha: &a)
            _myColor = [Float(r), Float(g), Float(b), Float(a)]
        }
    }
    
}

var settings = try! AppSettings(from: memoryStorage, keyPrefix: "AppSettings")
settings.myColor = UIColor.red
try! settings.persist()

//: The memory storage contains values of both `preferences` and `settings` instances.
memoryStorage.dictionary

/*:
 ---

 ## Reading data stored by the previous version of the app
 
 When you have some data persisted in user defaults by the previous version of the app and want `PersistentStorageSerializable` library to read that data into your structure you need to provide a mapping between properties names and User Defaults keys.

 Say we have our data persisted in storage.
*/
memoryStorage.dictionary.removeAll()
memoryStorage.dictionary["oldGoogTitle"] = "Superhero"
memoryStorage.dictionary["well.persisted.option"] = true
memoryStorage.dictionary

//: We want those to be serialized with the following class.
final class ApplicationConfiguration: PersistentStorageSerializable {
    var title = ""
    var showIntro = false
    
    // MARK: Adopt PersistentStorageSerializable
    var persistentStorage: PersistentStorage!
    var persistentStorageKeyPrefix: String!
}

//: Provide key mapping by overloading `persistentStorageKey(for:)` function.
extension ApplicationConfiguration {
    func persistentStorageKey(for propertyName: String) -> String {
        let keyMap = ["title" : "oldGoogTitle", "showIntro" : "well.persisted.option"]
        return keyMap[propertyName]!
    }
}

//: Now we can load data persisted in the storage.
let configuration = try! ApplicationConfiguration(from: memoryStorage, keyPrefix: "")

configuration.title
configuration.showIntro

//: ### Same with a custom subclass
class SerializableWithKeyMap: PersistentStorageSerializable {
    var persistentStorage: PersistentStorage!
    var persistentStorageKeyPrefix: String!
    
    required init() {}
    
    var keyMap: [String : String]!
    
    func persistentStorageKey(for propertyName: String) -> String {
        return keyMap[propertyName]!
    }
}

class ApplicationConfiguration2: SerializableWithKeyMap {
    var title = ""
    var showIntro = false
    
    required init() {
        super.init()
        keyMap = ["title" : "oldGoogTitle", "showIntro" : "well.persisted.option"]
    }
}

let configuration2 = try! ApplicationConfiguration2(from: memoryStorage, keyPrefix: "")

configuration2.title
configuration2.showIntro


/*:
 
 ---
*/


================================================
FILE: Example/ExamplesOfUsage.playground/contents.xcplayground
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios' display-mode='rendered'>
    <timeline fileName='timeline.xctimeline'/>
</playground>

================================================
FILE: Example/ExamplesOfUsage.playground/timeline.xctimeline
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Timeline
   version = "3.0">
   <TimelineItems>
      <LoggerValueHistoryTimelineItem
         documentLocation = "#CharacterRangeLen=24&amp;CharacterRangeLoc=2882&amp;EndingColumnNumber=25&amp;EndingLineNumber=99&amp;StartingColumnNumber=1&amp;StartingLineNumber=99&amp;Timestamp=513353327.344433"
         selectedRepresentationIndex = "0"
         shouldTrackSuperviewWidth = "NO">
      </LoggerValueHistoryTimelineItem>
   </TimelineItems>
</Timeline>


================================================
FILE: Example/PersistentStorageSerializable/AppDelegate.swift
================================================
//
//  AppDelegate.swift
//  PersistentStorageSerializable
//
//  Created by IvanRublev on 04/05/2017.
//  Copyright (c) 2017 IvanRublev. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

    func applicationWillResignActive(_ application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }


}



================================================
FILE: Example/PersistentStorageSerializable/Base.lproj/LaunchScreen.xib
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6214" systemVersion="14A314h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6207"/>
        <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB">
            <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="  Copyright (c) 2015 CocoaPods. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
                    <rect key="frame" x="20" y="439" width="441" height="21"/>
                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                    <nil key="highlightedColor"/>
                </label>
                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PersistentStorageSerializable" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
                    <rect key="frame" x="20" y="140" width="441" height="43"/>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                    <nil key="highlightedColor"/>
                </label>
            </subviews>
            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
            <constraints>
                <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
                <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
                <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
                <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
                <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
                <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
            </constraints>
            <nil key="simulatedStatusBarMetrics"/>
            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
            <point key="canvasLocation" x="548" y="455"/>
        </view>
    </objects>
</document>


================================================
FILE: Example/PersistentStorageSerializable/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="vXZ-lx-hvc">
    <device id="retina4_0" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="ufC-wZ-h7g">
            <objects>
                <viewController id="vXZ-lx-hvc" customClass="ViewController" customModule="PersistentStorageSerializable_Example" customModuleProvider="target" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
                        <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                        <subviews>
                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Q9z-79-WYI">
                                <rect key="frame" x="16" y="40" width="288" height="518"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings instance" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F6x-5X-JXM">
                                        <rect key="frame" x="0.0" y="0.0" width="288" height="20.5"/>
                                        <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <stackView opaque="NO" contentMode="scaleToFill" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="wf5-AT-vTG">
                                        <rect key="frame" x="0.0" y="40.5" width="288" height="31"/>
                                        <subviews>
                                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Value" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rxc-BF-p3h">
                                                <rect key="frame" x="0.0" y="6" width="239" height="19.5"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
                                                <nil key="highlightedColor"/>
                                            </label>
                                            <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2Zc-2r-WXA">
                                                <rect key="frame" x="239" y="0.0" width="51" height="31"/>
                                                <connections>
                                                    <action selector="updateSettings:" destination="vXZ-lx-hvc" eventType="valueChanged" id="BMF-WX-glS"/>
                                                </connections>
                                            </switch>
                                        </subviews>
                                    </stackView>
                                    <stackView opaque="NO" contentMode="scaleToFill" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="ti9-MD-xMT">
                                        <rect key="frame" x="0.0" y="91.5" width="288" height="30"/>
                                        <subviews>
                                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZOy-d3-Qxb">
                                                <rect key="frame" x="0.0" y="5.5" width="138" height="19.5"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
                                                <nil key="highlightedColor"/>
                                            </label>
                                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mr9-G7-WFn">
                                                <rect key="frame" x="138" y="0.0" width="150" height="30"/>
                                                <constraints>
                                                    <constraint firstAttribute="width" constant="150" id="BSj-ib-lry"/>
                                                </constraints>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
                                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
                                                <connections>
                                                    <action selector="donePressed:" destination="vXZ-lx-hvc" eventType="primaryActionTriggered" id="t3C-eB-faN"/>
                                                    <action selector="updateSettings:" destination="vXZ-lx-hvc" eventType="editingChanged" id="OlA-1B-NR6"/>
                                                </connections>
                                            </textField>
                                        </subviews>
                                    </stackView>
                                    <stackView opaque="NO" contentMode="scaleToFill" alignment="center" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="9dT-ro-hat">
                                        <rect key="frame" x="0.0" y="141.5" width="288" height="29"/>
                                        <subviews>
                                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="Number" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gWg-Sf-0Lv">
                                                <rect key="frame" x="0.0" y="5" width="58.5" height="19.5"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
                                                <nil key="highlightedColor"/>
                                            </label>
                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1kQ-kd-Exp">
                                                <rect key="frame" x="68.5" y="4.5" width="115.5" height="20.5"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
                                                <nil key="textColor"/>
                                                <nil key="highlightedColor"/>
                                            </label>
                                            <stepper opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" wraps="YES" maximumValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="ozo-a0-QZK">
                                                <rect key="frame" x="194" y="0.0" width="94" height="29"/>
                                                <connections>
                                                    <action selector="updateSettings:" destination="vXZ-lx-hvc" eventType="valueChanged" id="wH2-Tz-VBR"/>
                                                </connections>
                                            </stepper>
                                        </subviews>
                                    </stackView>
                                    <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="tnY-bp-Q3l">
                                        <rect key="frame" x="0.0" y="190.5" width="288" height="39"/>
                                        <subviews>
                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Skt-fi-IcQ">
                                                <rect key="frame" x="0.0" y="0.0" width="82.5" height="39"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleTitle2"/>
                                                <state key="normal" title="Save"/>
                                                <connections>
                                                    <action selector="save:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="aFt-JW-oeR"/>
                                                </connections>
                                            </button>
                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Xrr-Sj-XGi">
                                                <rect key="frame" x="102.5" y="0.0" width="83" height="39"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleTitle2"/>
                                                <state key="normal" title="Load"/>
                                                <connections>
                                                    <action selector="load:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="C0D-xl-4GJ"/>
                                                </connections>
                                            </button>
                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tQz-Cg-Hd9">
                                                <rect key="frame" x="205.5" y="0.0" width="82.5" height="39"/>
                                                <fontDescription key="fontDescription" style="UICTFontTextStyleTitle2"/>
                                                <state key="normal" title="Reset"/>
                                                <connections>
                                                    <action selector="reset:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="Vyz-et-dVB"/>
                                                </connections>
                                            </button>
                                        </subviews>
                                    </stackView>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User Defaults representation:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k09-sA-uyX">
                                        <rect key="frame" x="0.0" y="249.5" width="288" height="20.5"/>
                                        <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="749" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="mhg-dF-s98">
                                        <rect key="frame" x="0.0" y="290" width="288" height="228"/>
                                        <color key="backgroundColor" red="0.97688749182394885" green="0.97830893708835531" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                </subviews>
                            </stackView>
                        </subviews>
                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="trailingMargin" secondItem="Q9z-79-WYI" secondAttribute="trailing" id="Mb0-Ow-0VP"/>
                            <constraint firstItem="Q9z-79-WYI" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leadingMargin" id="Ng5-3W-pHe"/>
                            <constraint firstAttribute="bottomMargin" relation="greaterThanOrEqual" secondItem="mhg-dF-s98" secondAttribute="bottom" priority="999" constant="10" id="Rvp-tp-5YH"/>
                            <constraint firstItem="Q9z-79-WYI" firstAttribute="top" secondItem="jyV-Pf-zRb" secondAttribute="bottom" constant="20" id="Y99-FW-ZrE"/>
                        </constraints>
                    </view>
                    <connections>
                        <outlet property="flagSwitch" destination="2Zc-2r-WXA" id="Ns5-bl-lXB"/>
                        <outlet property="numberLabel" destination="1kQ-kd-Exp" id="qB0-Ns-4qc"/>
                        <outlet property="numberStepper" destination="ozo-a0-QZK" id="rI5-Ss-AwI"/>
                        <outlet property="textField" destination="mr9-G7-WFn" id="xNJ-9E-8pM"/>
                        <outlet property="userDefaultsLabel" destination="mhg-dF-s98" id="Vqp-63-8lY"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="24.375" y="34.859154929577464"/>
        </scene>
    </scenes>
</document>


================================================
FILE: Example/PersistentStorageSerializable/Images.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}


================================================
FILE: Example/PersistentStorageSerializable/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
</dict>
</plist>


================================================
FILE: Example/PersistentStorageSerializable/Settings.swift
================================================
//
//  Settings.swift
//  PersistentStorageSerializable
//
//  Created by Ivan Rublev on 4/5/17.
//  Copyright © 2017 CocoaPods. All rights reserved.
//

import Foundation
import PersistentStorageSerializable

struct Settings: PersistentStorageSerializable {
    var flag = false
    var title = ""
    var number = 1
    
    // MARK: Adopt PersistentStorageSerializable
    var persistentStorage: PersistentStorage!
    var persistentStorageKeyPrefix: String!
}


================================================
FILE: Example/PersistentStorageSerializable/ViewController.swift
================================================
//
//  ViewController.swift
//  PersistentStorageSerializable
//
//  Created by IvanRublev on 04/05/2017.
//  Copyright (c) 2017 IvanRublev. All rights reserved.
//

import UIKit
import PersistentStorageSerializable

class ViewController: UIViewController {
    @IBOutlet var flagSwitch: UISwitch!
    @IBOutlet var textField: UITextField!
    @IBOutlet var numberStepper: UIStepper!
    @IBOutlet var numberLabel: UILabel!
    @IBOutlet var userDefaultsLabel: UILabel!
    
    var settings: Settings!

    override func viewDidLoad() {
        super.viewDidLoad()
        load(0)
    }

    func updateViews() {
        flagSwitch.isOn = settings.flag
        textField.text = settings.title
        numberStepper.value = Double(settings.number)
        numberLabel.text = String(Int(numberStepper.value))
        userDefaultsLabel.text = try! String(describing: settings.persistedDictionaryRepresentation())
    }
}

// MARK: - Input controls actions
extension ViewController {
    @IBAction func updateSettings(_ sender: Any) {
        settings.flag = flagSwitch.isOn
        settings.title = textField.text ?? ""
        settings.number = Int(numberStepper.value)
        updateViews()
    }
    
    @IBAction func donePressed(_ sender: Any) {
        textField.resignFirstResponder()
    }
}

// MARK: - Buttons actions
extension ViewController {
    @IBAction func load(_ sender: Any) {
        settings = try! Settings(from: UserDefaultsStorage.standard, keyPrefix: "Settings")
        updateViews()
    }
    
    @IBAction func save(_ sender: Any) {
        try! settings.persist()
        updateViews()
    }
    
    @IBAction func reset(_ sender: Any) {
        try! settings.removeFromPersistentStorage()
        updateViews()
    }
}


================================================
FILE: Example/PersistentStorageSerializable.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; };
		607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; };
		607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; };
		607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; };
		607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; };
		607FACEC1AFB9204008FA782 /* PersistentStorageSerializableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* PersistentStorageSerializableTests.swift */; };
		80E924A82C6F4D136EF6DAFB /* Pods_PersistentStorageSerializable_iOSExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 095426B6186FB283A8442B6E /* Pods_PersistentStorageSerializable_iOSExample.framework */; };
		98D5D52F222783CA20C2F8FD /* Pods_PersistentStorageSerializable_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6F0D1E550D38F1ACE0CFCF6 /* Pods_PersistentStorageSerializable_Tests.framework */; };
		AB2E65E91E97E506009A8531 /* Car.plist in Resources */ = {isa = PBXBuildFile; fileRef = AB2E65E81E97E506009A8531 /* Car.plist */; };
		AB6AC3AF1E950D5300F735CB /* PersistentStorageMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB6AC3AD1E950C5E00F735CB /* PersistentStorageMock.swift */; };
		AB6AC3B61E95513E00F735CB /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB6AC3B51E95513E00F735CB /* Settings.swift */; };
		AB6AC3C01E9680AE00F735CB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB6AC3BF1E9680AE00F735CB /* AppDelegate.swift */; };
		AB6AC3C21E9680AE00F735CB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB6AC3C11E9680AE00F735CB /* ViewController.swift */; };
		AB6AC3C41E9680AE00F735CB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AB6AC3C31E9680AE00F735CB /* Assets.xcassets */; };
		AB6AC3C71E9680AE00F735CB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB6AC3C51E9680AE00F735CB /* Main.storyboard */; };
		AB6AC3CD1E96819C00F735CB /* AppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB6AC3CC1E96819C00F735CB /* AppSettings.swift */; };
		AB76415C1E97CD57007279BE /* SupportedSerializableTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB76415A1E97CD54007279BE /* SupportedSerializableTypeTests.swift */; };
		B057D67654FF5F791A3E93A6 /* Pods_PersistentStorageSerializable_MacExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B107F7FEBC35A8A1C3631674 /* Pods_PersistentStorageSerializable_MacExample.framework */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		095426B6186FB283A8442B6E /* Pods_PersistentStorageSerializable_iOSExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PersistentStorageSerializable_iOSExample.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		1430E68C73DA958AEE435B2B /* Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PersistentStorageSerializable_iOSExample/Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig"; sourceTree = "<group>"; };
		2588AA89C5187E3CEA89DD6E /* Pods-PersistentStorageSerializable_iOSExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PersistentStorageSerializable_iOSExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-PersistentStorageSerializable_iOSExample/Pods-PersistentStorageSerializable_iOSExample.release.xcconfig"; sourceTree = "<group>"; };
		410ED040FF5FC9E233E71DA9 /* Pods-PersistentStorageSerializable_MacExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PersistentStorageSerializable_MacExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample.debug.xcconfig"; sourceTree = "<group>"; };
		607FACD01AFB9204008FA782 /* PersistentStorageSerializable_iOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PersistentStorageSerializable_iOSExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
		607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
		607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
		607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
		607FACE51AFB9204008FA782 /* PersistentStorageSerializable_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PersistentStorageSerializable_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		607FACEB1AFB9204008FA782 /* PersistentStorageSerializableTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistentStorageSerializableTests.swift; sourceTree = "<group>"; };
		6C1240DEA24D615B61502A9B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
		77A4C7A9C48761BFB96E9009 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
		AB2E65E81E97E506009A8531 /* Car.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Car.plist; sourceTree = "<group>"; };
		AB2E65EA1E98C6E2009A8531 /* ExamplesOfUsage.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = ExamplesOfUsage.playground; sourceTree = "<group>"; };
		AB6AC3AD1E950C5E00F735CB /* PersistentStorageMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PersistentStorageMock.swift; sourceTree = "<group>"; };
		AB6AC3B51E95513E00F735CB /* Settings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
		AB6AC3BD1E9680AE00F735CB /* PersistentStorageSerializable_MacExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PersistentStorageSerializable_MacExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
		AB6AC3BF1E9680AE00F735CB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		AB6AC3C11E9680AE00F735CB /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
		AB6AC3C31E9680AE00F735CB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		AB6AC3C61E9680AE00F735CB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		AB6AC3C81E9680AE00F735CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		AB6AC3CC1E96819C00F735CB /* AppSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppSettings.swift; sourceTree = "<group>"; };
		AB76415A1E97CD54007279BE /* SupportedSerializableTypeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SupportedSerializableTypeTests.swift; sourceTree = "<group>"; };
		B107F7FEBC35A8A1C3631674 /* Pods_PersistentStorageSerializable_MacExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PersistentStorageSerializable_MacExample.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		C6F0D1E550D38F1ACE0CFCF6 /* Pods_PersistentStorageSerializable_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PersistentStorageSerializable_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		D0F7B87E59D17DF5674E4175 /* Pods-PersistentStorageSerializable_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PersistentStorageSerializable_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests.release.xcconfig"; sourceTree = "<group>"; };
		D61EE2F47F5FCAFA282DF7DD /* Pods-PersistentStorageSerializable_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PersistentStorageSerializable_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests.debug.xcconfig"; sourceTree = "<group>"; };
		DDAF776488859913631134E6 /* PersistentStorageSerializable.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = PersistentStorageSerializable.podspec; path = ../PersistentStorageSerializable.podspec; sourceTree = "<group>"; };
		E1CCB00B943B4FE159A27022 /* Pods-PersistentStorageSerializable_MacExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PersistentStorageSerializable_MacExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		607FACCD1AFB9204008FA782 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				80E924A82C6F4D136EF6DAFB /* Pods_PersistentStorageSerializable_iOSExample.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		607FACE21AFB9204008FA782 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				98D5D52F222783CA20C2F8FD /* Pods_PersistentStorageSerializable_Tests.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		AB6AC3BA1E9680AE00F735CB /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				B057D67654FF5F791A3E93A6 /* Pods_PersistentStorageSerializable_MacExample.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		607FACC71AFB9204008FA782 = {
			isa = PBXGroup;
			children = (
				AB2E65EA1E98C6E2009A8531 /* ExamplesOfUsage.playground */,
				607FACF51AFB993E008FA782 /* Podspec Metadata */,
				607FACD21AFB9204008FA782 /* iOS Example for PersistentStorageSerializable */,
				AB6AC3BE1E9680AE00F735CB /* macOS Example for PersistentStorageSerializable */,
				607FACE81AFB9204008FA782 /* Tests */,
				607FACD11AFB9204008FA782 /* Products */,
				D03860B7B98A1F763B5BB4CC /* Pods */,
				9A2B6143D980D7AC4AA0886D /* Frameworks */,
			);
			sourceTree = "<group>";
		};
		607FACD11AFB9204008FA782 /* Products */ = {
			isa = PBXGroup;
			children = (
				607FACD01AFB9204008FA782 /* PersistentStorageSerializable_iOSExample.app */,
				607FACE51AFB9204008FA782 /* PersistentStorageSerializable_Tests.xctest */,
				AB6AC3BD1E9680AE00F735CB /* PersistentStorageSerializable_MacExample.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		607FACD21AFB9204008FA782 /* iOS Example for PersistentStorageSerializable */ = {
			isa = PBXGroup;
			children = (
				607FACD51AFB9204008FA782 /* AppDelegate.swift */,
				607FACD71AFB9204008FA782 /* ViewController.swift */,
				AB6AC3B51E95513E00F735CB /* Settings.swift */,
				607FACD91AFB9204008FA782 /* Main.storyboard */,
				607FACDC1AFB9204008FA782 /* Images.xcassets */,
				607FACDE1AFB9204008FA782 /* LaunchScreen.xib */,
				607FACD31AFB9204008FA782 /* Supporting Files */,
			);
			name = "iOS Example for PersistentStorageSerializable";
			path = PersistentStorageSerializable;
			sourceTree = "<group>";
		};
		607FACD31AFB9204008FA782 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				607FACD41AFB9204008FA782 /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		607FACE81AFB9204008FA782 /* Tests */ = {
			isa = PBXGroup;
			children = (
				607FACEB1AFB9204008FA782 /* PersistentStorageSerializableTests.swift */,
				AB76415A1E97CD54007279BE /* SupportedSerializableTypeTests.swift */,
				AB6AC3AD1E950C5E00F735CB /* PersistentStorageMock.swift */,
				AB2E65E81E97E506009A8531 /* Car.plist */,
				607FACE91AFB9204008FA782 /* Supporting Files */,
			);
			path = Tests;
			sourceTree = "<group>";
		};
		607FACE91AFB9204008FA782 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				607FACEA1AFB9204008FA782 /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		607FACF51AFB993E008FA782 /* Podspec Metadata */ = {
			isa = PBXGroup;
			children = (
				DDAF776488859913631134E6 /* PersistentStorageSerializable.podspec */,
				6C1240DEA24D615B61502A9B /* README.md */,
				77A4C7A9C48761BFB96E9009 /* LICENSE */,
			);
			name = "Podspec Metadata";
			sourceTree = "<group>";
		};
		9A2B6143D980D7AC4AA0886D /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				C6F0D1E550D38F1ACE0CFCF6 /* Pods_PersistentStorageSerializable_Tests.framework */,
				B107F7FEBC35A8A1C3631674 /* Pods_PersistentStorageSerializable_MacExample.framework */,
				095426B6186FB283A8442B6E /* Pods_PersistentStorageSerializable_iOSExample.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		AB6AC3BE1E9680AE00F735CB /* macOS Example for PersistentStorageSerializable */ = {
			isa = PBXGroup;
			children = (
				AB6AC3BF1E9680AE00F735CB /* AppDelegate.swift */,
				AB6AC3C11E9680AE00F735CB /* ViewController.swift */,
				AB6AC3CC1E96819C00F735CB /* AppSettings.swift */,
				AB6AC3C31E9680AE00F735CB /* Assets.xcassets */,
				AB6AC3C51E9680AE00F735CB /* Main.storyboard */,
				AB6AC3C81E9680AE00F735CB /* Info.plist */,
			);
			name = "macOS Example for PersistentStorageSerializable";
			path = PersistentStorageSerializable_MacExample;
			sourceTree = "<group>";
		};
		D03860B7B98A1F763B5BB4CC /* Pods */ = {
			isa = PBXGroup;
			children = (
				D61EE2F47F5FCAFA282DF7DD /* Pods-PersistentStorageSerializable_Tests.debug.xcconfig */,
				D0F7B87E59D17DF5674E4175 /* Pods-PersistentStorageSerializable_Tests.release.xcconfig */,
				410ED040FF5FC9E233E71DA9 /* Pods-PersistentStorageSerializable_MacExample.debug.xcconfig */,
				E1CCB00B943B4FE159A27022 /* Pods-PersistentStorageSerializable_MacExample.release.xcconfig */,
				1430E68C73DA958AEE435B2B /* Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig */,
				2588AA89C5187E3CEA89DD6E /* Pods-PersistentStorageSerializable_iOSExample.release.xcconfig */,
			);
			name = Pods;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		607FACCF1AFB9204008FA782 /* PersistentStorageSerializable_iOSExample */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "PersistentStorageSerializable_iOSExample" */;
			buildPhases = (
				66755897DE9E279750DF07F9 /* [CP] Check Pods Manifest.lock */,
				607FACCC1AFB9204008FA782 /* Sources */,
				607FACCD1AFB9204008FA782 /* Frameworks */,
				607FACCE1AFB9204008FA782 /* Resources */,
				236D08738204335D7A43DEF1 /* [CP] Embed Pods Frameworks */,
				27432223C0DD7682AC675BDF /* [CP] Copy Pods Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = PersistentStorageSerializable_iOSExample;
			productName = PersistentStorageSerializable;
			productReference = 607FACD01AFB9204008FA782 /* PersistentStorageSerializable_iOSExample.app */;
			productType = "com.apple.product-type.application";
		};
		607FACE41AFB9204008FA782 /* PersistentStorageSerializable_Tests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "PersistentStorageSerializable_Tests" */;
			buildPhases = (
				82A9B6DE26A7AA265E46262D /* [CP] Check Pods Manifest.lock */,
				607FACE11AFB9204008FA782 /* Sources */,
				607FACE21AFB9204008FA782 /* Frameworks */,
				607FACE31AFB9204008FA782 /* Resources */,
				33157687998EEACBC2651DA7 /* [CP] Embed Pods Frameworks */,
				389211693118A2DFD7B74393 /* [CP] Copy Pods Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = PersistentStorageSerializable_Tests;
			productName = Tests;
			productReference = 607FACE51AFB9204008FA782 /* PersistentStorageSerializable_Tests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		AB6AC3BC1E9680AE00F735CB /* PersistentStorageSerializable_MacExample */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = AB6AC3CB1E9680AE00F735CB /* Build configuration list for PBXNativeTarget "PersistentStorageSerializable_MacExample" */;
			buildPhases = (
				83656AD5AD449BE38007FB5D /* [CP] Check Pods Manifest.lock */,
				AB6AC3B91E9680AE00F735CB /* Sources */,
				AB6AC3BA1E9680AE00F735CB /* Frameworks */,
				AB6AC3BB1E9680AE00F735CB /* Resources */,
				BB48EDF876C9F1A254792873 /* [CP] Embed Pods Frameworks */,
				69E40D21BFAF5A6983432BE8 /* [CP] Copy Pods Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = PersistentStorageSerializable_MacExample;
			productName = PersistentStorageSerializable_MacExample;
			productReference = AB6AC3BD1E9680AE00F735CB /* PersistentStorageSerializable_MacExample.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		607FACC81AFB9204008FA782 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0830;
				LastUpgradeCheck = 0830;
				ORGANIZATIONNAME = CocoaPods;
				TargetAttributes = {
					607FACCF1AFB9204008FA782 = {
						CreatedOnToolsVersion = 6.3.1;
						LastSwiftMigration = 0820;
					};
					607FACE41AFB9204008FA782 = {
						CreatedOnToolsVersion = 6.3.1;
						LastSwiftMigration = 0820;
					};
					AB6AC3BC1E9680AE00F735CB = {
						CreatedOnToolsVersion = 8.3;
						ProvisioningStyle = Automatic;
					};
				};
			};
			buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "PersistentStorageSerializable" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 607FACC71AFB9204008FA782;
			productRefGroup = 607FACD11AFB9204008FA782 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				607FACCF1AFB9204008FA782 /* PersistentStorageSerializable_iOSExample */,
				AB6AC3BC1E9680AE00F735CB /* PersistentStorageSerializable_MacExample */,
				607FACE41AFB9204008FA782 /* PersistentStorageSerializable_Tests */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		607FACCE1AFB9204008FA782 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */,
				607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */,
				607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		607FACE31AFB9204008FA782 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				AB2E65E91E97E506009A8531 /* Car.plist in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		AB6AC3BB1E9680AE00F735CB /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				AB6AC3C41E9680AE00F735CB /* Assets.xcassets in Resources */,
				AB6AC3C71E9680AE00F735CB /* Main.storyboard in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		236D08738204335D7A43DEF1 /* [CP] Embed Pods Frameworks */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Embed Pods Frameworks";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PersistentStorageSerializable_iOSExample/Pods-PersistentStorageSerializable_iOSExample-frameworks.sh\"\n";
			showEnvVarsInLog = 0;
		};
		27432223C0DD7682AC675BDF /* [CP] Copy Pods Resources */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Copy Pods Resources";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PersistentStorageSerializable_iOSExample/Pods-PersistentStorageSerializable_iOSExample-resources.sh\"\n";
			showEnvVarsInLog = 0;
		};
		33157687998EEACBC2651DA7 /* [CP] Embed Pods Frameworks */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Embed Pods Frameworks";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-frameworks.sh\"\n";
			showEnvVarsInLog = 0;
		};
		389211693118A2DFD7B74393 /* [CP] Copy Pods Resources */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Copy Pods Resources";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-resources.sh\"\n";
			showEnvVarsInLog = 0;
		};
		66755897DE9E279750DF07F9 /* [CP] Check Pods Manifest.lock */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Check Pods Manifest.lock";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n";
			showEnvVarsInLog = 0;
		};
		69E40D21BFAF5A6983432BE8 /* [CP] Copy Pods Resources */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Copy Pods Resources";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-resources.sh\"\n";
			showEnvVarsInLog = 0;
		};
		82A9B6DE26A7AA265E46262D /* [CP] Check Pods Manifest.lock */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Check Pods Manifest.lock";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n";
			showEnvVarsInLog = 0;
		};
		83656AD5AD449BE38007FB5D /* [CP] Check Pods Manifest.lock */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Check Pods Manifest.lock";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n";
			showEnvVarsInLog = 0;
		};
		BB48EDF876C9F1A254792873 /* [CP] Embed Pods Frameworks */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "[CP] Embed Pods Frameworks";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-frameworks.sh\"\n";
			showEnvVarsInLog = 0;
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		607FACCC1AFB9204008FA782 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				AB6AC3B61E95513E00F735CB /* Settings.swift in Sources */,
				607FACD81AFB9204008FA782 /* ViewController.swift in Sources */,
				607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		607FACE11AFB9204008FA782 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				AB6AC3AF1E950D5300F735CB /* PersistentStorageMock.swift in Sources */,
				607FACEC1AFB9204008FA782 /* PersistentStorageSerializableTests.swift in Sources */,
				AB76415C1E97CD57007279BE /* SupportedSerializableTypeTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		AB6AC3B91E9680AE00F735CB /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				AB6AC3CD1E96819C00F735CB /* AppSettings.swift in Sources */,
				AB6AC3C21E9680AE00F735CB /* ViewController.swift in Sources */,
				AB6AC3C01E9680AE00F735CB /* AppDelegate.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
		607FACD91AFB9204008FA782 /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				607FACDA1AFB9204008FA782 /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
		607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = {
			isa = PBXVariantGroup;
			children = (
				607FACDF1AFB9204008FA782 /* Base */,
			);
			name = LaunchScreen.xib;
			sourceTree = "<group>";
		};
		AB6AC3C51E9680AE00F735CB /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				AB6AC3C61E9680AE00F735CB /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		607FACED1AFB9204008FA782 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		607FACEE1AFB9204008FA782 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		607FACF01AFB9204008FA782 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1430E68C73DA958AEE435B2B /* Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				INFOPLIST_FILE = PersistentStorageSerializable/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				MODULE_NAME = ExampleApp;
				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_VERSION = 3.0;
			};
			name = Debug;
		};
		607FACF11AFB9204008FA782 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 2588AA89C5187E3CEA89DD6E /* Pods-PersistentStorageSerializable_iOSExample.release.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				INFOPLIST_FILE = PersistentStorageSerializable/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				MODULE_NAME = ExampleApp;
				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_VERSION = 3.0;
			};
			name = Release;
		};
		607FACF31AFB9204008FA782 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = D61EE2F47F5FCAFA282DF7DD /* Pods-PersistentStorageSerializable_Tests.debug.xcconfig */;
			buildSettings = {
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				INFOPLIST_FILE = Tests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_VERSION = 3.0;
			};
			name = Debug;
		};
		607FACF41AFB9204008FA782 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = D0F7B87E59D17DF5674E4175 /* Pods-PersistentStorageSerializable_Tests.release.xcconfig */;
			buildSettings = {
				INFOPLIST_FILE = Tests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_VERSION = 3.0;
			};
			name = Release;
		};
		AB6AC3C91E9680AE00F735CB /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 410ED040FF5FC9E233E71DA9 /* Pods-PersistentStorageSerializable_MacExample.debug.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CODE_SIGN_IDENTITY = "Mac Developer";
				COMBINE_HIDPI_IMAGES = YES;
				DEBUG_INFORMATION_FORMAT = dwarf;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = PersistentStorageSerializable_MacExample/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.PersistentStorageSerializable-MacExample";
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
				SDKROOT = macosx;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				SWIFT_VERSION = 3.0;
			};
			name = Debug;
		};
		AB6AC3CA1E9680AE00F735CB /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = E1CCB00B943B4FE159A27022 /* Pods-PersistentStorageSerializable_MacExample.release.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CODE_SIGN_IDENTITY = "Mac Developer";
				COMBINE_HIDPI_IMAGES = YES;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = PersistentStorageSerializable_MacExample/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.PersistentStorageSerializable-MacExample";
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
				SDKROOT = macosx;
				SWIFT_VERSION = 3.0;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "PersistentStorageSerializable" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				607FACED1AFB9204008FA782 /* Debug */,
				607FACEE1AFB9204008FA782 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "PersistentStorageSerializable_iOSExample" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				607FACF01AFB9204008FA782 /* Debug */,
				607FACF11AFB9204008FA782 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "PersistentStorageSerializable_Tests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				607FACF31AFB9204008FA782 /* Debug */,
				607FACF41AFB9204008FA782 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		AB6AC3CB1E9680AE00F735CB /* Build configuration list for PBXNativeTarget "PersistentStorageSerializable_MacExample" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				AB6AC3C91E9680AE00F735CB /* Debug */,
				AB6AC3CA1E9680AE00F735CB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 607FACC81AFB9204008FA782 /* Project object */;
}


================================================
FILE: Example/PersistentStorageSerializable.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:PersistentStorageSerializable.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: Example/PersistentStorageSerializable.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-MacExample.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0830"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "NO"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "AB6AC3BC1E9680AE00F735CB"
               BuildableName = "PersistentStorageSerializable_MacExample.app"
               BlueprintName = "PersistentStorageSerializable_MacExample"
               ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "AB6AC3BC1E9680AE00F735CB"
            BuildableName = "PersistentStorageSerializable_MacExample.app"
            BlueprintName = "PersistentStorageSerializable_MacExample"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "AB6AC3BC1E9680AE00F735CB"
            BuildableName = "PersistentStorageSerializable_MacExample.app"
            BlueprintName = "PersistentStorageSerializable_MacExample"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "AB6AC3BC1E9680AE00F735CB"
            BuildableName = "PersistentStorageSerializable_MacExample.app"
            BlueprintName = "PersistentStorageSerializable_MacExample"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Example/PersistentStorageSerializable.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-Tests.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0830"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "NO"
            buildForProfiling = "NO"
            buildForArchiving = "NO"
            buildForAnalyzing = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "607FACE41AFB9204008FA782"
               BuildableName = "PersistentStorageSerializable_Tests.xctest"
               BlueprintName = "PersistentStorageSerializable_Tests"
               ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "607FACE41AFB9204008FA782"
               BuildableName = "PersistentStorageSerializable_Tests.xctest"
               BlueprintName = "PersistentStorageSerializable_Tests"
               ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "607FACE41AFB9204008FA782"
            BuildableName = "PersistentStorageSerializable_Tests.xctest"
            BlueprintName = "PersistentStorageSerializable_Tests"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Example/PersistentStorageSerializable.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-iOSExample.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0830"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "NO"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "607FACCF1AFB9204008FA782"
               BuildableName = "PersistentStorageSerializable_iOSExample.app"
               BlueprintName = "PersistentStorageSerializable_iOSExample"
               ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "607FACCF1AFB9204008FA782"
            BuildableName = "PersistentStorageSerializable_iOSExample.app"
            BlueprintName = "PersistentStorageSerializable_iOSExample"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "607FACCF1AFB9204008FA782"
            BuildableName = "PersistentStorageSerializable_iOSExample.app"
            BlueprintName = "PersistentStorageSerializable_iOSExample"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "607FACCF1AFB9204008FA782"
            BuildableName = "PersistentStorageSerializable_iOSExample.app"
            BlueprintName = "PersistentStorageSerializable_iOSExample"
            ReferencedContainer = "container:PersistentStorageSerializable.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Example/PersistentStorageSerializable.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:PersistentStorageSerializable.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:Pods/Pods.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: Example/PersistentStorageSerializable_MacExample/AppDelegate.swift
================================================
//
//  AppDelegate.swift
//  PersistentStorageSerializable_MacExample
//
//  Created by Ivan Rublev on 4/6/17.
//  Copyright © 2017 CocoaPods. All rights reserved.
//

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Insert code here to initialize your application
    }

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }

}



================================================
FILE: Example/PersistentStorageSerializable_MacExample/AppSettings.swift
================================================
//
//  AppSettings.swift
//  PersistentStorageSerializable
//
//  Created by Ivan Rublev on 4/6/17.
//  Copyright © 2017 CocoaPods. All rights reserved.
//

import Foundation
import PersistentStorageSerializable

final class AppSettings: NSObject, PersistentStorageSerializable {
    dynamic var flag = false
    dynamic var title = "Default text"
    dynamic var number = 1
    
    // MARK: Adopt PersistentStorageSerializable
    var persistentStorage: PersistentStorage! = PlistStorage(at: FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!.appendingPathComponent("storage.plist"))
    var persistentStorageKeyPrefix: String! = "AppSettings"
}


================================================
FILE: Example/PersistentStorageSerializable_MacExample/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "mac",
      "size" : "16x16",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "16x16",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "32x32",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "32x32",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "128x128",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "128x128",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "256x256",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "256x256",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "512x512",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "512x512",
      "scale" : "2x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/PersistentStorageSerializable_MacExample/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
    <dependencies>
        <deployment identifier="macosx"/>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
        <capability name="box content view" minToolsVersion="7.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
        <capability name="stacking Non-gravity area distributions on NSStackView" minToolsVersion="7.0" minSystemVersion="10.11"/>
    </dependencies>
    <scenes>
        <!--Application-->
        <scene sceneID="JPo-4y-FX3">
            <objects>
                <application id="hnw-xV-0zn" sceneMemberID="viewController">
                    <menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
                        <items>
                            <menuItem title="PersistentStorageSerializable_MacExample" id="1Xt-HY-uBw">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="PersistentStorageSerializable_MacExample" systemMenu="apple" id="uQy-DD-JDr">
                                    <items>
                                        <menuItem title="About PersistentStorageSerializable_MacExample" id="5kV-Vb-QxS">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
                                        <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
                                        <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
                                        <menuItem title="Services" id="NMo-om-nkz">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
                                        <menuItem title="Hide PersistentStorageSerializable_MacExample" keyEquivalent="h" id="Olw-nP-bQN">
                                            <connections>
                                                <action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                            <connections>
                                                <action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Show All" id="Kd2-mp-pUS">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
                                        <menuItem title="Quit PersistentStorageSerializable_MacExample" keyEquivalent="q" id="4sb-4s-VLi">
                                            <connections>
                                                <action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="File" id="dMs-cI-mzQ">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="File" id="bib-Uj-vzu">
                                    <items>
                                        <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
                                            <connections>
                                                <action selector="newDocument:" target="Ady-hI-5gd" id="4Si-XN-c54"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
                                            <connections>
                                                <action selector="openDocument:" target="Ady-hI-5gd" id="bVn-NM-KNZ"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Open Recent" id="tXI-mr-wws">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
                                                <items>
                                                    <menuItem title="Clear Menu" id="vNY-rz-j42">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="clearRecentDocuments:" target="Ady-hI-5gd" id="Daa-9d-B3U"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
                                        <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
                                            <connections>
                                                <action selector="performClose:" target="Ady-hI-5gd" id="HmO-Ls-i7Q"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
                                            <connections>
                                                <action selector="saveDocument:" target="Ady-hI-5gd" id="teZ-XB-qJY"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
                                            <connections>
                                                <action selector="saveDocumentAs:" target="Ady-hI-5gd" id="mDf-zr-I0C"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Revert to Saved" keyEquivalent="r" id="KaW-ft-85H">
                                            <connections>
                                                <action selector="revertDocumentToSaved:" target="Ady-hI-5gd" id="iJ3-Pv-kwq"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
                                        <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
                                            <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
                                            <connections>
                                                <action selector="runPageLayout:" target="Ady-hI-5gd" id="Din-rz-gC5"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
                                            <connections>
                                                <action selector="print:" target="Ady-hI-5gd" id="qaZ-4w-aoO"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="Edit" id="5QF-Oa-p0T">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="Edit" id="W48-6f-4Dl">
                                    <items>
                                        <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
                                            <connections>
                                                <action selector="undo:" target="Ady-hI-5gd" id="M6e-cu-g7V"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
                                            <connections>
                                                <action selector="redo:" target="Ady-hI-5gd" id="oIA-Rs-6OD"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
                                        <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
                                            <connections>
                                                <action selector="cut:" target="Ady-hI-5gd" id="YJe-68-I9s"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
                                            <connections>
                                                <action selector="copy:" target="Ady-hI-5gd" id="G1f-GL-Joy"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
                                            <connections>
                                                <action selector="paste:" target="Ady-hI-5gd" id="UvS-8e-Qdg"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                            <connections>
                                                <action selector="pasteAsPlainText:" target="Ady-hI-5gd" id="cEh-KX-wJQ"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Delete" id="pa3-QI-u2k">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="delete:" target="Ady-hI-5gd" id="0Mk-Ml-PaM"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
                                            <connections>
                                                <action selector="selectAll:" target="Ady-hI-5gd" id="VNm-Mi-diN"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
                                        <menuItem title="Find" id="4EN-yA-p0u">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Find" id="1b7-l0-nxx">
                                                <items>
                                                    <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
                                                        <connections>
                                                            <action selector="performFindPanelAction:" target="Ady-hI-5gd" id="cD7-Qs-BN4"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
                                                        <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                                        <connections>
                                                            <action selector="performFindPanelAction:" target="Ady-hI-5gd" id="WD3-Gg-5AJ"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
                                                        <connections>
                                                            <action selector="performFindPanelAction:" target="Ady-hI-5gd" id="NDo-RZ-v9R"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
                                                        <connections>
                                                            <action selector="performFindPanelAction:" target="Ady-hI-5gd" id="HOh-sY-3ay"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
                                                        <connections>
                                                            <action selector="performFindPanelAction:" target="Ady-hI-5gd" id="U76-nv-p5D"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
                                                        <connections>
                                                            <action selector="centerSelectionInVisibleArea:" target="Ady-hI-5gd" id="IOG-6D-g5B"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                        <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
                                                <items>
                                                    <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
                                                        <connections>
                                                            <action selector="showGuessPanel:" target="Ady-hI-5gd" id="vFj-Ks-hy3"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
                                                        <connections>
                                                            <action selector="checkSpelling:" target="Ady-hI-5gd" id="fz7-VC-reM"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
                                                    <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleContinuousSpellChecking:" target="Ady-hI-5gd" id="7w6-Qz-0kB"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleGrammarChecking:" target="Ady-hI-5gd" id="muD-Qn-j4w"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleAutomaticSpellingCorrection:" target="Ady-hI-5gd" id="2lM-Qi-WAP"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                        <menuItem title="Substitutions" id="9ic-FL-obx">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
                                                <items>
                                                    <menuItem title="Show Substitutions" id="z6F-FW-3nz">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="orderFrontSubstitutionsPanel:" target="Ady-hI-5gd" id="oku-mr-iSq"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
                                                    <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleSmartInsertDelete:" target="Ady-hI-5gd" id="3IJ-Se-DZD"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Smart Quotes" id="hQb-2v-fYv">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleAutomaticQuoteSubstitution:" target="Ady-hI-5gd" id="ptq-xd-QOA"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Smart Dashes" id="rgM-f4-ycn">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleAutomaticDashSubstitution:" target="Ady-hI-5gd" id="oCt-pO-9gS"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Smart Links" id="cwL-P1-jid">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleAutomaticLinkDetection:" target="Ady-hI-5gd" id="Gip-E3-Fov"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Data Detectors" id="tRr-pd-1PS">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleAutomaticDataDetection:" target="Ady-hI-5gd" id="R1I-Nq-Kbl"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Text Replacement" id="HFQ-gK-NFA">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleAutomaticTextReplacement:" target="Ady-hI-5gd" id="DvP-Fe-Py6"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                        <menuItem title="Transformations" id="2oI-Rn-ZJC">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
                                                <items>
                                                    <menuItem title="Make Upper Case" id="vmV-6d-7jI">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="uppercaseWord:" target="Ady-hI-5gd" id="sPh-Tk-edu"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Make Lower Case" id="d9M-CD-aMd">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="lowercaseWord:" target="Ady-hI-5gd" id="iUZ-b5-hil"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Capitalize" id="UEZ-Bs-lqG">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="capitalizeWord:" target="Ady-hI-5gd" id="26H-TL-nsh"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                        <menuItem title="Speech" id="xrE-MZ-jX0">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
                                                <items>
                                                    <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="startSpeaking:" target="Ady-hI-5gd" id="654-Ng-kyl"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="stopSpeaking:" target="Ady-hI-5gd" id="dX8-6p-jy9"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="Format" id="jxT-CU-nIS">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="Format" id="GEO-Iw-cKr">
                                    <items>
                                        <menuItem title="Font" id="Gi5-1S-RQB">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
                                                <items>
                                                    <menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq"/>
                                                    <menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27"/>
                                                    <menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq"/>
                                                    <menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
                                                        <connections>
                                                            <action selector="underline:" target="Ady-hI-5gd" id="FYS-2b-JAY"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
                                                    <menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL"/>
                                                    <menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST"/>
                                                    <menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
                                                    <menuItem title="Kern" id="jBQ-r6-VK2">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <menu key="submenu" title="Kern" id="tlD-Oa-oAM">
                                                            <items>
                                                                <menuItem title="Use Default" id="GUa-eO-cwY">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="useStandardKerning:" target="Ady-hI-5gd" id="6dk-9l-Ckg"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Use None" id="cDB-IK-hbR">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="turnOffKerning:" target="Ady-hI-5gd" id="U8a-gz-Maa"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Tighten" id="46P-cB-AYj">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="tightenKerning:" target="Ady-hI-5gd" id="hr7-Nz-8ro"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Loosen" id="ogc-rX-tC1">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="loosenKerning:" target="Ady-hI-5gd" id="8i4-f9-FKE"/>
                                                                    </connections>
                                                                </menuItem>
                                                            </items>
                                                        </menu>
                                                    </menuItem>
                                                    <menuItem title="Ligatures" id="o6e-r0-MWq">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
                                                            <items>
                                                                <menuItem title="Use Default" id="agt-UL-0e3">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="useStandardLigatures:" target="Ady-hI-5gd" id="7uR-wd-Dx6"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Use None" id="J7y-lM-qPV">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="turnOffLigatures:" target="Ady-hI-5gd" id="iX2-gA-Ilz"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Use All" id="xQD-1f-W4t">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="useAllLigatures:" target="Ady-hI-5gd" id="KcB-kA-TuK"/>
                                                                    </connections>
                                                                </menuItem>
                                                            </items>
                                                        </menu>
                                                    </menuItem>
                                                    <menuItem title="Baseline" id="OaQ-X3-Vso">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <menu key="submenu" title="Baseline" id="ijk-EB-dga">
                                                            <items>
                                                                <menuItem title="Use Default" id="3Om-Ey-2VK">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="unscript:" target="Ady-hI-5gd" id="0vZ-95-Ywn"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Superscript" id="Rqc-34-cIF">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="superscript:" target="Ady-hI-5gd" id="3qV-fo-wpU"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Subscript" id="I0S-gh-46l">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="subscript:" target="Ady-hI-5gd" id="Q6W-4W-IGz"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Raise" id="2h7-ER-AoG">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="raiseBaseline:" target="Ady-hI-5gd" id="4sk-31-7Q9"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem title="Lower" id="1tx-W0-xDw">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="lowerBaseline:" target="Ady-hI-5gd" id="OF1-bc-KW4"/>
                                                                    </connections>
                                                                </menuItem>
                                                            </items>
                                                        </menu>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
                                                    <menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
                                                        <connections>
                                                            <action selector="orderFrontColorPanel:" target="Ady-hI-5gd" id="mSX-Xz-DV3"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
                                                    <menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
                                                        <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                                        <connections>
                                                            <action selector="copyFont:" target="Ady-hI-5gd" id="GJO-xA-L4q"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
                                                        <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                                        <connections>
                                                            <action selector="pasteFont:" target="Ady-hI-5gd" id="JfD-CL-leO"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                        <menuItem title="Text" id="Fal-I4-PZk">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <menu key="submenu" title="Text" id="d9c-me-L2H">
                                                <items>
                                                    <menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
                                                        <connections>
                                                            <action selector="alignLeft:" target="Ady-hI-5gd" id="zUv-R1-uAa"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
                                                        <connections>
                                                            <action selector="alignCenter:" target="Ady-hI-5gd" id="spX-mk-kcS"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Justify" id="J5U-5w-g23">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="alignJustified:" target="Ady-hI-5gd" id="ljL-7U-jND"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
                                                        <connections>
                                                            <action selector="alignRight:" target="Ady-hI-5gd" id="r48-bG-YeY"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
                                                    <menuItem title="Writing Direction" id="H1b-Si-o9J">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
                                                            <items>
                                                                <menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                </menuItem>
                                                                <menuItem id="YGs-j5-SAR">
                                                                    <string key="title">	Default</string>
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="makeBaseWritingDirectionNatural:" target="Ady-hI-5gd" id="qtV-5e-UBP"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem id="Lbh-J2-qVU">
                                                                    <string key="title">	Left to Right</string>
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="makeBaseWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="S0X-9S-QSf"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem id="jFq-tB-4Kx">
                                                                    <string key="title">	Right to Left</string>
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="makeBaseWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="5fk-qB-AqJ"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
                                                                <menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                </menuItem>
                                                                <menuItem id="Nop-cj-93Q">
                                                                    <string key="title">	Default</string>
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="makeTextWritingDirectionNatural:" target="Ady-hI-5gd" id="lPI-Se-ZHp"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem id="BgM-ve-c93">
                                                                    <string key="title">	Left to Right</string>
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="makeTextWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="caW-Bv-w94"/>
                                                                    </connections>
                                                                </menuItem>
                                                                <menuItem id="RB4-Sm-HuC">
                                                                    <string key="title">	Right to Left</string>
                                                                    <modifierMask key="keyEquivalentModifierMask"/>
                                                                    <connections>
                                                                        <action selector="makeTextWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="EXD-6r-ZUu"/>
                                                                    </connections>
                                                                </menuItem>
                                                            </items>
                                                        </menu>
                                                    </menuItem>
                                                    <menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
                                                    <menuItem title="Show Ruler" id="vLm-3I-IUL">
                                                        <modifierMask key="keyEquivalentModifierMask"/>
                                                        <connections>
                                                            <action selector="toggleRuler:" target="Ady-hI-5gd" id="FOx-HJ-KwY"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
                                                        <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
                                                        <connections>
                                                            <action selector="copyRuler:" target="Ady-hI-5gd" id="71i-fW-3W2"/>
                                                        </connections>
                                                    </menuItem>
                                                    <menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
                                                        <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
                                                        <connections>
                                                            <action selector="pasteRuler:" target="Ady-hI-5gd" id="cSh-wd-qM2"/>
                                                        </connections>
                                                    </menuItem>
                                                </items>
                                            </menu>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="View" id="H8h-7b-M4v">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="View" id="HyV-fh-RgO">
                                    <items>
                                        <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                                            <connections>
                                                <action selector="toggleToolbarShown:" target="Ady-hI-5gd" id="BXY-wc-z0C"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="runToolbarCustomizationPalette:" target="Ady-hI-5gd" id="pQI-g3-MTW"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="hB3-LF-h0Y"/>
                                        <menuItem title="Show Sidebar" keyEquivalent="s" id="kIP-vf-haE">
                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
                                            <connections>
                                                <action selector="toggleSourceList:" target="Ady-hI-5gd" id="iwa-gc-5KM"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
                                            <connections>
                                                <action selector="toggleFullScreen:" target="Ady-hI-5gd" id="dU3-MA-1Rq"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="Window" id="aUF-d1-5bR">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
                                    <items>
                                        <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
                                            <connections>
                                                <action selector="performMiniaturize:" target="Ady-hI-5gd" id="VwT-WD-YPe"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem title="Zoom" id="R4o-n2-Eq4">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="performZoom:" target="Ady-hI-5gd" id="DIl-cC-cCs"/>
                                            </connections>
                                        </menuItem>
                                        <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
                                        <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
                                            <modifierMask key="keyEquivalentModifierMask"/>
                                            <connections>
                                                <action selector="arrangeInFront:" target="Ady-hI-5gd" id="DRN-fu-gQh"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                            <menuItem title="Help" id="wpr-3q-Mcd">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
                                    <items>
                                        <menuItem title="PersistentStorageSerializable_MacExample Help" keyEquivalent="?" id="FKE-Sm-Kum">
                                            <connections>
                                                <action selector="showHelp:" target="Ady-hI-5gd" id="y7X-2Q-9no"/>
                                            </connections>
                                        </menuItem>
                                    </items>
                                </menu>
                            </menuItem>
                        </items>
                    </menu>
                    <connections>
                        <outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
                    </connections>
                </application>
                <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="PersistentStorageSerializable_MacExample" customModuleProvider="target"/>
                <customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="75" y="0.0"/>
        </scene>
        <!--Window Controller-->
        <scene sceneID="R2V-B0-nI4">
            <objects>
                <windowController id="B8D-0N-5wS" sceneMemberID="viewController">
                    <window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" animationBehavior="default" id="IQv-IB-iLA">
                        <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
                        <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
                        <rect key="contentRect" x="196" y="240" width="480" height="270"/>
                        <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
                    </window>
                    <connections>
                        <segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
                    </connections>
                </windowController>
                <customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="75" y="250"/>
        </scene>
        <!--View Controller-->
        <scene sceneID="hIz-AP-VOD">
            <objects>
                <viewController id="XfG-lQ-9wD" customClass="ViewController" customModule="PersistentStorageSerializable_MacExample" customModuleProvider="target" sceneMemberID="viewController">
                    <view key="view" wantsLayer="YES" id="m2S-Jp-Qdl">
                        <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
                        <autoresizingMask key="autoresizingMask"/>
                        <subviews>
                            <box title="App Settings" translatesAutoresizingMaskIntoConstraints="NO" id="Ke3-r6-R4y">
                                <rect key="frame" x="17" y="95" width="446" height="157"/>
                                <view key="contentView" id="KuP-us-3IV">
                                    <rect key="frame" x="2" y="2" width="442" height="140"/>
                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                    <subviews>
                                        <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YT1-zP-ni8">
                                            <rect key="frame" x="80" y="17" width="283" height="107"/>
                                            <subviews>
                                                <stackView distribution="fillEqually" orientation="vertical" alignment="leading" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ksL-P2-hec">
                                                    <rect key="frame" x="0.0" y="0.0" width="200" height="107"/>
                                                    <subviews>
                                                        <button translatesAutoresizingMaskIntoConstraints="NO" id="AZZ-OG-kSm">
                                                            <rect key="frame" x="-2" y="83" width="48" height="26"/>
                                                            <buttonCell key="cell" type="check" title="Flag" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TbI-UQ-dlP">
                                                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                                                <font key="font" metaFont="system"/>
                                                            </buttonCell>
                                                            <connections>
                                                                <binding destination="XfG-lQ-9wD" name="value" keyPath="settings.flag" id="VDr-nL-cIG"/>
                                                            </connections>
                                                        </button>
                                                        <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aLb-Pm-WKj">
                                                            <rect key="frame" x="0.0" y="43" width="200" height="22"/>
                                                            <constraints>
                                                                <constraint firstAttribute="width" constant="200" id="aOP-PA-aU6"/>
                                                            </constraints>
                                                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Title" drawsBackground="YES" id="D8l-pO-Fr8">
                                                                <font key="font" metaFont="system"/>
                                                                <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
                                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                                            </textFieldCell>
                                                            <connections>
                                                                <binding destination="XfG-lQ-9wD" name="value" keyPath="settings.title" id="xNB-Kk-mNW"/>
                                                            </connections>
                                                        </textField>
                                                        <stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oD8-bI-J75">
                                                            <rect key="frame" x="0.0" y="0.0" width="200" height="23"/>
                                                            <subviews>
                                                                <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ns9-dQ-V8o">
                                                                    <rect key="frame" x="0.0" y="1" width="179" height="22"/>
                                                                    <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Number" drawsBackground="YES" id="5e0-yx-V6I">
                                                                        <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="0" negativeFormat="-0" numberStyle="decimal" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" nilSymbol="0" id="j29-BL-cb2"/>
                                                                        <font key="font" metaFont="system"/>
                                                                        <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
                                                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                                                    </textFieldCell>
                                                                    <connections>
                                                                        <binding destination="XfG-lQ-9wD" name="value" keyPath="settings.number" id="fxf-7a-O4i"/>
                                                                    </connections>
                                                                </textField>
                                                                <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hLE-es-U7d">
                                                                    <rect key="frame" x="184" y="-2" width="19" height="27"/>
                                                                    <stepperCell key="cell" continuous="YES" alignment="left" minValue="-100" maxValue="100" valueWraps="YES" id="nmJ-HV-dDe"/>
                                                                    <connections>
                                                                        <binding destination="XfG-lQ-9wD" name="value" keyPath="settings.number" id="4gM-zL-ztI"/>
                                                                    </connections>
                                                                </stepper>
                                                            </subviews>
                                                            <visibilityPriorities>
                                                                <integer value="1000"/>
                                                                <integer value="1000"/>
                                                            </visibilityPriorities>
                                                            <customSpacing>
                                                                <real value="3.4028234663852886e+38"/>
                                                                <real value="3.4028234663852886e+38"/>
                                                            </customSpacing>
                                                        </stackView>
                                                    </subviews>
                                                    <visibilityPriorities>
                                                        <integer value="1000"/>
                                                        <integer value="1000"/>
                                                        <integer value="1000"/>
                                                    </visibilityPriorities>
                                                    <customSpacing>
                                                        <real value="3.4028234663852886e+38"/>
                                                        <real value="3.4028234663852886e+38"/>
                                                        <real value="3.4028234663852886e+38"/>
                                                    </customSpacing>
                                                </stackView>
                                                <stackView distribution="fill" orientation="vertical" alignment="centerX" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ao3-Zd-aBL">
                                                    <rect key="frame" x="220" y="2" width="63" height="103"/>
                                                    <subviews>
                                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="v3x-SO-TVd">
                                                            <rect key="frame" x="-6" y="75" width="75" height="32"/>
                                                            <buttonCell key="cell" type="push" title="Save" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="EiQ-e0-wlA">
                                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                                                <font key="font" metaFont="system"/>
                                                            </buttonCell>
                                                            <connections>
                                                                <action selector="save:" target="XfG-lQ-9wD" id="s3y-cu-GcR"/>
                                                            </connections>
                                                        </button>
                                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NSz-5G-a6c">
                                                            <rect key="frame" x="-6" y="34" width="75" height="32"/>
                                                            <buttonCell key="cell" type="push" title="Load" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vir-7Y-bUS">
                                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                                                <font key="font" metaFont="system"/>
                                                            </buttonCell>
                                                            <connections>
                                                                <action selector="load:" target="XfG-lQ-9wD" id="eRx-B7-jqi"/>
                                                            </connections>
                                                        </button>
                                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jdm-Y3-fXK">
                                                            <rect key="frame" x="-6" y="-7" width="75" height="32"/>
                                                            <buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Dk-Jl-HcY">
                                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                                                <font key="font" metaFont="system"/>
                                                            </buttonCell>
                                                            <connections>
                                                                <action selector="reset:" target="XfG-lQ-9wD" id="v1g-IF-3fd"/>
                                                            </connections>
                                                        </button>
                                                    </subviews>
                                                    <constraints>
                                                        <constraint firstItem="NSz-5G-a6c" firstAttribute="width" secondItem="v3x-SO-TVd" secondAttribute="width" id="aOi-8W-RuN"/>
                                                        <constraint firstItem="Jdm-Y3-fXK" firstAttribute="width" secondItem="v3x-SO-TVd" secondAttribute="width" id="dG9-bK-VdK"/>
                                                    </constraints>
                                                    <visibilityPriorities>
                                                        <integer value="1000"/>
                                                        <integer value="1000"/>
                                                        <integer value="1000"/>
                                                    </visibilityPriorities>
                                                    <customSpacing>
                                                        <real value="3.4028234663852886e+38"/>
                                                        <real value="3.4028234663852886e+38"/>
                                                        <real value="3.4028234663852886e+38"/>
                                                    </customSpacing>
                                                </stackView>
                                            </subviews>
                                            <visibilityPriorities>
                                                <integer value="1000"/>
                                                <integer value="1000"/>
                                            </visibilityPriorities>
                                            <customSpacing>
                                                <real value="3.4028234663852886e+38"/>
                                                <real value="3.4028234663852886e+38"/>
                                            </customSpacing>
                                        </stackView>
                                    </subviews>
                                    <constraints>
                                        <constraint firstItem="YT1-zP-ni8" firstAttribute="centerX" secondItem="KuP-us-3IV" secondAttribute="centerX" id="VKu-F6-ZrP"/>
                                        <constraint firstItem="YT1-zP-ni8" firstAttribute="centerY" secondItem="KuP-us-3IV" secondAttribute="centerY" id="wi2-cA-pxl"/>
                                    </constraints>
                                </view>
                            </box>
                            <box title="User Defaults" translatesAutoresizingMaskIntoConstraints="NO" id="w6P-UF-nor">
                                <rect key="frame" x="17" y="10" width="446" height="81"/>
                                <view key="contentView" id="tbt-ie-2R1">
                                    <rect key="frame" x="2" y="2" width="442" height="64"/>
                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                    <subviews>
                                        <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GyS-T1-dNC">
                                            <rect key="frame" x="8" y="8" width="426" height="48"/>
                                            <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" id="H6V-1L-uTa">
                                                <font key="font" metaFont="system"/>
                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                                <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                                            </textFieldCell>
                                        </textField>
                                    </subviews>
                                    <constraints>
                                        <constraint firstItem="GyS-T1-dNC" firstAttribute="leading" secondItem="tbt-ie-2R1" secondAttribute="leading" constant="10" id="6te-H7-W0h"/>
                                        <constraint firstItem="GyS-T1-dNC" firstAttribute="top" secondItem="tbt-ie-2R1" secondAttribute="top" constant="8" id="Q4v-6q-pm9"/>
                                        <constraint firstAttribute="bottom" secondItem="GyS-T1-dNC" secondAttribute="bottom" constant="8" id="ZQC-Wb-tKB"/>
                                        <constraint firstAttribute="trailing" secondItem="GyS-T1-dNC" secondAttribute="trailing" constant="10" id="fbQ-CJ-7op"/>
                                    </constraints>
                                </view>
                                <constraints>
                                    <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="77" id="6i3-F8-Cmn"/>
                                </constraints>
                            </box>
                        </subviews>
                        <constraints>
                            <constraint firstItem="Ke3-r6-R4y" firstAttribute="top" secondItem="m2S-Jp-Qdl" secondAttribute="top" constant="20" id="PjX-cN-l9U"/>
                            <constraint firstItem="Ke3-r6-R4y" firstAttribute="leading" secondItem="m2S-Jp-Qdl" secondAttribute="leading" constant="20" id="RSe-BG-93A"/>
                            <constraint firstItem="w6P-UF-nor" firstAttribute="leading" secondItem="m2S-Jp-Qdl" secondAttribute="leading" constant="20" id="Sh8-cl-yv7"/>
                            <constraint firstAttribute="trailing" secondItem="Ke3-r6-R4y" secondAttribute="trailing" constant="20" id="a9A-Af-nyj"/>
                            <constraint firstAttribute="bottom" secondItem="w6P-UF-nor" secondAttribute="bottom" constant="14" id="bhX-9O-0r1"/>
                            <constraint firstAttribute="trailing" secondItem="w6P-UF-nor" secondAttribute="trailing" constant="20" id="rdV-bh-cA2"/>
                            <constraint firstItem="w6P-UF-nor" firstAttribute="top" secondItem="Ke3-r6-R4y" secondAttribute="bottom" constant="8" id="yXg-4v-DPO"/>
                        </constraints>
                    </view>
                    <connections>
                        <outlet property="userDefaultsText" destination="GyS-T1-dNC" id="Urm-QW-ae0"/>
                    </connections>
                </viewController>
                <customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="75" y="698"/>
        </scene>
    </scenes>
</document>


================================================
FILE: Example/PersistentStorageSerializable_MacExample/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIconFile</key>
	<string></string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSMinimumSystemVersion</key>
	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2017 CocoaPods. All rights reserved.</string>
	<key>NSMainStoryboardFile</key>
	<string>Main</string>
	<key>NSPrincipalClass</key>
	<string>NSApplication</string>
</dict>
</plist>


================================================
FILE: Example/PersistentStorageSerializable_MacExample/ViewController.swift
================================================
//
//  ViewController.swift
//  PersistentStorageSerializable_MacExample
//
//  Created by Ivan Rublev on 4/6/17.
//  Copyright © 2017 CocoaPods. All rights reserved.
//

import Cocoa

class ViewController: NSViewController {
    @IBOutlet var userDefaultsText: NSTextField!

    dynamic var settings = AppSettings()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        load(0)
    }

    func updateUserDefaultsText() {
        userDefaultsText.stringValue = try! String(describing: settings.persistedDictionaryRepresentation())
    }
    
    @IBAction func load(_ sender: Any) {
        view.window?.makeFirstResponder(nil)
        var loadedSettings = AppSettings()
        try! loadedSettings.pullFromPersistentStorage()
        settings = loadedSettings
        updateUserDefaultsText()
    }

    @IBAction func save(_ sender: Any) {
        view.window?.makeFirstResponder(nil)
        try! settings.pushToPersistentStorage()
        updateUserDefaultsText()
    }

    @IBAction func reset(_ sender: Any) {
        view.window?.makeFirstResponder(nil)
        try! settings.removeFromPersistentStorage()
        updateUserDefaultsText()
    }

}


================================================
FILE: Example/Podfile
================================================
use_frameworks!

target 'PersistentStorageSerializable_iOSExample' do
  platform :ios, '9.0'
  pod 'PersistentStorageSerializable', :path => '../'
end

target 'PersistentStorageSerializable_Tests' do
    platform :ios, '9.0'
    pod 'PersistentStorageSerializable', :path => '../'
    pod 'Quick', '~> 1.0.0'
    pod 'Nimble', '~> 5.1.1'
end

target 'PersistentStorageSerializable_MacExample' do
    platform :osx, '10.11'
    pod 'PersistentStorageSerializable', :path => '../'
end


================================================
FILE: Example/Pods/Local Podspecs/PersistentStorageSerializable.podspec.json
================================================
{
  "name": "PersistentStorageSerializable",
  "version": "1.1.0",
  "summary": "Bunch of protocols to make a class or structure to be serializable to persistent system storage like UserDefaults or Keychain. Useful to store app configuration or settings.",
  "description": "Number of protocols from this pod helps to serialize swift class or structure to persistent storage like User Defaults or Keychain. The class/structure must contain properties of simple data type only. These types are: Data, String, Int, Float, Double, Bool, URL, Date, Array, or Dictionary<String, *>.\nAdopt the PersistentStorageSerializable protocol from your struct. Then call pullFromUserDefaults() or  pushToUserDefaults() on instance of your struct.",
  "homepage": "https://github.com/IvanRublev/PersistentStorageSerializable",
  "license": {
    "type": "MIT",
    "file": "LICENSE"
  },
  "authors": {
    "IvanRublev": "ivan@ivanrublev.me"
  },
  "source": {
    "git": "https://github.com/IvanRublev/PersistentStorageSerializable.git",
    "tag": "1.1.0"
  },
  "platforms": {
    "ios": "9.0",
    "osx": "10.11"
  },
  "source_files": "PersistentStorageSerializable/Classes/**/*",
  "frameworks": "Foundation",
  "dependencies": {
    "Reflection": [
      "~> 0.14"
    ]
  }
}


================================================
FILE: Example/Pods/Manifest.lock
================================================
PODS:
  - Nimble (5.1.1)
  - PersistentStorageSerializable (1.1.0):
    - Reflection (~> 0.14)
  - Quick (1.0.0)
  - Reflection (0.14.3)

DEPENDENCIES:
  - Nimble (~> 5.1.1)
  - PersistentStorageSerializable (from `../`)
  - Quick (~> 1.0.0)

EXTERNAL SOURCES:
  PersistentStorageSerializable:
    :path: "../"

SPEC CHECKSUMS:
  Nimble: 415e3aa3267e7bc2c96b05fa814ddea7bb686a29
  PersistentStorageSerializable: d941980a136f85a546b3378c6228526ad4fd7d51
  Quick: 8024e4a47e6cc03a9d5245ef0948264fc6d27cff
  Reflection: 93327e50981227ac33c18274fcbaed33b1127811

PODFILE CHECKSUM: 1725b222e0b97edb7fa20facee56f57f70eaa39d

COCOAPODS: 1.1.1


================================================
FILE: Example/Pods/Nimble/LICENSE.md
================================================
Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2014 Quick Team

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Example/Pods/Nimble/README.md
================================================
# Nimble

Use Nimble to express the expected outcomes of Swift
or Objective-C expressions. Inspired by
[Cedar](https://github.com/pivotal/cedar).

```swift
// Swift
expect(1 + 1).to(equal(2))
expect(1.2).to(beCloseTo(1.1, within: 0.1))
expect(3) > 2
expect("seahorse").to(contain("sea"))
expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))
expect(ocean.isClean).toEventually(beTruthy())
```

# How to Use Nimble

<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*

- [Some Background: Expressing Outcomes Using Assertions in XCTest](#some-background-expressing-outcomes-using-assertions-in-xctest)
- [Nimble: Expectations Using `expect(...).to`](#nimble-expectations-using-expectto)
  - [Custom Failure Messages](#custom-failure-messages)
  - [Type Checking](#type-checking)
  - [Operator Overloads](#operator-overloads)
  - [Lazily Computed Values](#lazily-computed-values)
  - [C Primitives](#c-primitives)
  - [Asynchronous Expectations](#asynchronous-expectations)
  - [Objective-C Support](#objective-c-support)
  - [Disabling Objective-C Shorthand](#disabling-objective-c-shorthand)
- [Built-in Matcher Functions](#built-in-matcher-functions)
  - [Equivalence](#equivalence)
  - [Identity](#identity)
  - [Comparisons](#comparisons)
  - [Types/Classes](#typesclasses)
  - [Truthiness](#truthiness)
  - [Swift Assertions](#swift-assertions)
  - [Swift Error Handling](#swift-error-handling)
  - [Exceptions](#exceptions)
  - [Collection Membership](#collection-membership)
  - [Strings](#strings)
  - [Checking if all elements of a collection pass a condition](#checking-if-all-elements-of-a-collection-pass-a-condition)
  - [Verify collection count](#verify-collection-count)
  - [Verify a notification was posted](#verifying-a-notification-was-posted)
  - [Matching a value to any of a group of matchers](#matching-a-value-to-any-of-a-group-of-matchers)
- [Writing Your Own Matchers](#writing-your-own-matchers)
  - [Lazy Evaluation](#lazy-evaluation)
  - [Type Checking via Swift Generics](#type-checking-via-swift-generics)
  - [Customizing Failure Messages](#customizing-failure-messages)
  - [Supporting Objective-C](#supporting-objective-c)
    - [Properly Handling `nil` in Objective-C Matchers](#properly-handling-nil-in-objective-c-matchers)
- [Installing Nimble](#installing-nimble)
  - [Installing Nimble as a Submodule](#installing-nimble-as-a-submodule)
  - [Installing Nimble via CocoaPods](#installing-nimble-via-cocoapods)
  - [Using Nimble without XCTest](#using-nimble-without-xctest)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

# Some Background: Expressing Outcomes Using Assertions in XCTest

Apple's Xcode includes the XCTest framework, which provides
assertion macros to test whether code behaves properly.
For example, to assert that `1 + 1 = 2`, XCTest has you write:

```swift
// Swift

XCTAssertEqual(1 + 1, 2, "expected one plus one to equal two")
```

Or, in Objective-C:

```objc
// Objective-C

XCTAssertEqual(1 + 1, 2, @"expected one plus one to equal two");
```

XCTest assertions have a couple of drawbacks:

1. **Not enough macros.** There's no easy way to assert that a string
   contains a particular substring, or that a number is less than or
   equal to another.
2. **It's hard to write asynchronous tests.** XCTest forces you to write
   a lot of boilerplate code.

Nimble addresses these concerns.

# Nimble: Expectations Using `expect(...).to`

Nimble allows you to express expectations using a natural,
easily understood language:

```swift
// Swift

import Nimble

expect(seagull.squawk).to(equal("Squee!"))
```

```objc
// Objective-C

@import Nimble;

expect(seagull.squawk).to(equal(@"Squee!"));
```

> The `expect` function autocompletes to include `file:` and `line:`,
  but these parameters are optional. Use the default values to have
  Xcode highlight the correct line when an expectation is not met.

To perform the opposite expectation--to assert something is *not*
equal--use `toNot` or `notTo`:

```swift
// Swift

import Nimble

expect(seagull.squawk).toNot(equal("Oh, hello there!"))
expect(seagull.squawk).notTo(equal("Oh, hello there!"))
```

```objc
// Objective-C

@import Nimble;

expect(seagull.squawk).toNot(equal(@"Oh, hello there!"));
expect(seagull.squawk).notTo(equal(@"Oh, hello there!"));
```

## Custom Failure Messages

Would you like to add more information to the test's failure messages? Use the `description` optional argument to add your own text:

```swift
// Swift

expect(1 + 1).to(equal(3))
// failed - expected to equal <3>, got <2>

expect(1 + 1).to(equal(3), description: "Make sure libKindergartenMath is loaded")
// failed - Make sure libKindergartenMath is loaded
// expected to equal <3>, got <2>
```

Or the *WithDescription version in Objective-C:

```objc
// Objective-C

@import Nimble;

expect(@(1+1)).to(equal(@3));
// failed - expected to equal <3.0000>, got <2.0000>

expect(@(1+1)).toWithDescription(equal(@3), @"Make sure libKindergartenMath is loaded");
// failed - Make sure libKindergartenMath is loaded
// expected to equal <3.0000>, got <2.0000>
```

## Type Checking

Nimble makes sure you don't compare two types that don't match:

```swift
// Swift

// Does not compile:
expect(1 + 1).to(equal("Squee!"))
```

> Nimble uses generics--only available in Swift--to ensure
  type correctness. That means type checking is
  not available when using Nimble in Objective-C. :sob:

## Operator Overloads

Tired of so much typing? With Nimble, you can use overloaded operators
like `==` for equivalence, or `>` for comparisons:

```swift
// Swift

// Passes if squawk does not equal "Hi!":
expect(seagull.squawk) != "Hi!"

// Passes if 10 is greater than 2:
expect(10) > 2
```

> Operator overloads are only available in Swift, so you won't be able
  to use this syntax in Objective-C. :broken_heart:

## Lazily Computed Values

The `expect` function doesn't evaluate the value it's given until it's
time to match. So Nimble can test whether an expression raises an
exception once evaluated:

```swift
// Swift

// Note: Swift currently doesn't have exceptions.
//       Only Objective-C code can raise exceptions
//       that Nimble will catch.
//       (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064)
let exception = NSException(
  name: NSInternalInconsistencyException,
  reason: "Not enough fish in the sea.",
  userInfo: ["something": "is fishy"])
expect { exception.raise() }.to(raiseException())

// Also, you can customize raiseException to be more specific
expect { exception.raise() }.to(raiseException(named: NSInternalInconsistencyException))
expect { exception.raise() }.to(raiseException(
    named: NSInternalInconsistencyException,
    reason: "Not enough fish in the sea"))
expect { exception.raise() }.to(raiseException(
    named: NSInternalInconsistencyException,
    reason: "Not enough fish in the sea",
    userInfo: ["something": "is fishy"]))
```

Objective-C works the same way, but you must use the `expectAction`
macro when making an expectation on an expression that has no return
value:

```objc
// Objective-C

NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException
                                                 reason:@"Not enough fish in the sea."
                                               userInfo:nil];
expectAction(^{ [exception raise]; }).to(raiseException());

// Use the property-block syntax to be more specific.
expectAction(^{ [exception raise]; }).to(raiseException().named(NSInternalInconsistencyException));
expectAction(^{ [exception raise]; }).to(raiseException().
    named(NSInternalInconsistencyException).
    reason("Not enough fish in the sea"));
expectAction(^{ [exception raise]; }).to(raiseException().
    named(NSInternalInconsistencyException).
    reason("Not enough fish in the sea").
    userInfo(@{@"something": @"is fishy"}));

// You can also pass a block for custom matching of the raised exception
expectAction(exception.raise()).to(raiseException().satisfyingBlock(^(NSException *exception) {
    expect(exception.name).to(beginWith(NSInternalInconsistencyException));
}));
```

## C Primitives

Some testing frameworks make it hard to test primitive C values.
In Nimble, it just works:

```swift
// Swift

let actual: CInt = 1
let expectedValue: CInt = 1
expect(actual).to(equal(expectedValue))
```

In fact, Nimble uses type inference, so you can write the above
without explicitly specifying both types:

```swift
// Swift

expect(1 as CInt).to(equal(1))
```

> In Objective-C, Nimble only supports Objective-C objects. To
  make expectations on primitive C values, wrap then in an object
  literal:

  ```objc
  expect(@(1 + 1)).to(equal(@2));
  ```

## Asynchronous Expectations

In Nimble, it's easy to make expectations on values that are updated
asynchronously. Just use `toEventually` or `toEventuallyNot`:

```swift
// Swift

dispatch_async(dispatch_get_main_queue()) {
  ocean.add("dolphins")
  ocean.add("whales")
}
expect(ocean).toEventually(contain("dolphins", "whales"))
```


```objc
// Objective-C
dispatch_async(dispatch_get_main_queue(), ^{
  [ocean add:@"dolphins"];
  [ocean add:@"whales"];
});
expect(ocean).toEventually(contain(@"dolphins", @"whales"));
```

Note: toEventually triggers its polls on the main thread. Blocking the main
thread will cause Nimble to stop the run loop. This can cause test pollution
for whatever incomplete code that was running on the main thread.  Blocking the
main thread can be caused by blocking IO, calls to sleep(), deadlocks, and
synchronous IPC.

In the above example, `ocean` is constantly re-evaluated. If it ever
contains dolphins and whales, the expectation passes. If `ocean` still
doesn't contain them, even after being continuously re-evaluated for one
whole second, the expectation fails.

Sometimes it takes more than a second for a value to update. In those
cases, use the `timeout` parameter:

```swift
// Swift

// Waits three seconds for ocean to contain "starfish":
expect(ocean).toEventually(contain("starfish"), timeout: 3)

// Evaluate someValue every 0.2 seconds repeatedly until it equals 100, or fails if it timeouts after 5.5 seconds.
expect(someValue).toEventually(equal(100), timeout: 5.5, pollInterval: 0.2)
```

```objc
// Objective-C

// Waits three seconds for ocean to contain "starfish":
expect(ocean).withTimeout(3).toEventually(contain(@"starfish"));
```

You can also provide a callback by using the `waitUntil` function:

```swift
// Swift

waitUntil { done in
  // do some stuff that takes a while...
  NSThread.sleepForTimeInterval(0.5)
  done()
}
```

```objc
// Objective-C

waitUntil(^(void (^done)(void)){
  // do some stuff that takes a while...
  [NSThread sleepForTimeInterval:0.5];
  done();
});
```

`waitUntil` also optionally takes a timeout parameter:

```swift
// Swift

waitUntil(timeout: 10) { done in
  // do some stuff that takes a while...
  NSThread.sleepForTimeInterval(1)
  done()
}
```

```objc
// Objective-C

waitUntilTimeout(10, ^(void (^done)(void)){
  // do some stuff that takes a while...
  [NSThread sleepForTimeInterval:1];
  done();
});
```

Note: waitUntil triggers its timeout code on the main thread. Blocking the main
thread will cause Nimble to stop the run loop to continue. This can cause test
pollution for whatever incomplete code that was running on the main thread.
Blocking the main thread can be caused by blocking IO, calls to sleep(),
deadlocks, and synchronous IPC.

In some cases (e.g. when running on slower machines) it can be useful to modify
the default timeout and poll interval values. This can be done as follows:

```swift
// Swift

// Increase the global timeout to 5 seconds:
Nimble.AsyncDefaults.Timeout = 5

// Slow the polling interval to 0.1 seconds:
Nimble.AsyncDefaults.PollInterval = 0.1
```

## Objective-C Support

Nimble has full support for Objective-C. However, there are two things
to keep in mind when using Nimble in Objective-C:

1. All parameters passed to the `expect` function, as well as matcher
   functions like `equal`, must be Objective-C objects or can be converted into
   an `NSObject` equivalent:

   ```objc
   // Objective-C

   @import Nimble;

   expect(@(1 + 1)).to(equal(@2));
   expect(@"Hello world").to(contain(@"world"));

   // Boxed as NSNumber *
   expect(2).to(equal(2));
   expect(1.2).to(beLessThan(2.0));
   expect(true).to(beTruthy());

   // Boxed as NSString *
   expect("Hello world").to(equal("Hello world"));

   // Boxed as NSRange
   expect(NSMakeRange(1, 10)).to(equal(NSMakeRange(1, 10)));
   ```

2. To make an expectation on an expression that does not return a value,
   such as `-[NSException raise]`, use `expectAction` instead of
   `expect`:

   ```objc
   // Objective-C

   expectAction(^{ [exception raise]; }).to(raiseException());
   ```

The following types are currently converted to an `NSObject` type:

 - **C Numeric types** are converted to `NSNumber *`
 - `NSRange` is converted to `NSValue *`
 - `char *` is converted to `NSString *`

For the following matchers:

- `equal`
- `beGreaterThan`
- `beGreaterThanOrEqual`
- `beLessThan`
- `beLessThanOrEqual`
- `beCloseTo`
- `beTrue`
- `beFalse`
- `beTruthy`
- `beFalsy`
- `haveCount`

If you would like to see more, [file an issue](https://github.com/Quick/Nimble/issues).

## Disabling Objective-C Shorthand

Nimble provides a shorthand for expressing expectations using the
`expect` function. To disable this shorthand in Objective-C, define the
`NIMBLE_DISABLE_SHORT_SYNTAX` macro somewhere in your code before
importing Nimble:

```objc
#define NIMBLE_DISABLE_SHORT_SYNTAX 1

@import Nimble;

NMB_expect(^{ return seagull.squawk; }, __FILE__, __LINE__).to(NMB_equal(@"Squee!"));
```

> Disabling the shorthand is useful if you're testing functions with
  names that conflict with Nimble functions, such as `expect` or
  `equal`. If that's not the case, there's no point in disabling the
  shorthand.

# Built-in Matcher Functions

Nimble includes a wide variety of matcher functions.

## Equivalence

```swift
// Swift

// Passes if actual is equivalent to expected:
expect(actual).to(equal(expected))
expect(actual) == expected

// Passes if actual is not equivalent to expected:
expect(actual).toNot(equal(expected))
expect(actual) != expected
```

```objc
// Objective-C

// Passes if actual 
Download .txt
gitextract_z6r8nz93/

├── .gitignore
├── .swift-version
├── .travis.yml
├── Cartfile
├── Cartfile.private
├── Cartfile.resolved
├── Example/
│   ├── ExamplesOfUsage.playground/
│   │   ├── Contents.swift
│   │   ├── contents.xcplayground
│   │   └── timeline.xctimeline
│   ├── PersistentStorageSerializable/
│   │   ├── AppDelegate.swift
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.xib
│   │   │   └── Main.storyboard
│   │   ├── Images.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Info.plist
│   │   ├── Settings.swift
│   │   └── ViewController.swift
│   ├── PersistentStorageSerializable.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   └── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── PersistentStorageSerializable-MacExample.xcscheme
│   │           ├── PersistentStorageSerializable-Tests.xcscheme
│   │           └── PersistentStorageSerializable-iOSExample.xcscheme
│   ├── PersistentStorageSerializable.xcworkspace/
│   │   └── contents.xcworkspacedata
│   ├── PersistentStorageSerializable_MacExample/
│   │   ├── AppDelegate.swift
│   │   ├── AppSettings.swift
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── ViewController.swift
│   ├── Podfile
│   ├── Pods/
│   │   ├── Local Podspecs/
│   │   │   └── PersistentStorageSerializable.podspec.json
│   │   ├── Manifest.lock
│   │   ├── Nimble/
│   │   │   ├── LICENSE.md
│   │   │   ├── README.md
│   │   │   └── Sources/
│   │   │       ├── Lib/
│   │   │       │   └── CwlPreconditionTesting/
│   │   │       │       ├── CwlCatchException/
│   │   │       │       │   └── CwlCatchException/
│   │   │       │       │       ├── CwlCatchException.h
│   │   │       │       │       ├── CwlCatchException.m
│   │   │       │       │       └── CwlCatchException.swift
│   │   │       │       └── CwlPreconditionTesting/
│   │   │       │           ├── CwlBadInstructionException.swift
│   │   │       │           ├── CwlCatchBadInstruction.h
│   │   │       │           ├── CwlCatchBadInstruction.m
│   │   │       │           ├── CwlCatchBadInstruction.swift
│   │   │       │           ├── CwlDarwinDefinitions.swift
│   │   │       │           ├── mach_excServer.c
│   │   │       │           └── mach_excServer.h
│   │   │       ├── Nimble/
│   │   │       │   ├── Adapters/
│   │   │       │   │   ├── AdapterProtocols.swift
│   │   │       │   │   ├── AssertionDispatcher.swift
│   │   │       │   │   ├── AssertionRecorder.swift
│   │   │       │   │   ├── NMBExpectation.swift
│   │   │       │   │   ├── NMBObjCMatcher.swift
│   │   │       │   │   ├── NimbleEnvironment.swift
│   │   │       │   │   └── NimbleXCTestHandler.swift
│   │   │       │   ├── DSL+Wait.swift
│   │   │       │   ├── DSL.swift
│   │   │       │   ├── Expectation.swift
│   │   │       │   ├── Expression.swift
│   │   │       │   ├── FailureMessage.swift
│   │   │       │   ├── Matchers/
│   │   │       │   │   ├── AllPass.swift
│   │   │       │   │   ├── AsyncMatcherWrapper.swift
│   │   │       │   │   ├── BeAKindOf.swift
│   │   │       │   │   ├── BeAnInstanceOf.swift
│   │   │       │   │   ├── BeCloseTo.swift
│   │   │       │   │   ├── BeEmpty.swift
│   │   │       │   │   ├── BeGreaterThan.swift
│   │   │       │   │   ├── BeGreaterThanOrEqualTo.swift
│   │   │       │   │   ├── BeIdenticalTo.swift
│   │   │       │   │   ├── BeLessThan.swift
│   │   │       │   │   ├── BeLessThanOrEqual.swift
│   │   │       │   │   ├── BeLogical.swift
│   │   │       │   │   ├── BeNil.swift
│   │   │       │   │   ├── BeVoid.swift
│   │   │       │   │   ├── BeginWith.swift
│   │   │       │   │   ├── Contain.swift
│   │   │       │   │   ├── EndWith.swift
│   │   │       │   │   ├── Equal.swift
│   │   │       │   │   ├── HaveCount.swift
│   │   │       │   │   ├── Match.swift
│   │   │       │   │   ├── MatchError.swift
│   │   │       │   │   ├── MatcherFunc.swift
│   │   │       │   │   ├── MatcherProtocols.swift
│   │   │       │   │   ├── PostNotification.swift
│   │   │       │   │   ├── RaisesException.swift
│   │   │       │   │   ├── SatisfyAnyOf.swift
│   │   │       │   │   ├── ThrowAssertion.swift
│   │   │       │   │   └── ThrowError.swift
│   │   │       │   ├── Nimble.h
│   │   │       │   └── Utils/
│   │   │       │       ├── Async.swift
│   │   │       │       ├── Errors.swift
│   │   │       │       ├── Functional.swift
│   │   │       │       ├── SourceLocation.swift
│   │   │       │       └── Stringers.swift
│   │   │       └── NimbleObjectiveC/
│   │   │           ├── CurrentTestCaseTracker.h
│   │   │           ├── DSL.h
│   │   │           ├── DSL.m
│   │   │           ├── NMBExceptionCapture.h
│   │   │           ├── NMBExceptionCapture.m
│   │   │           ├── NMBStringify.h
│   │   │           ├── NMBStringify.m
│   │   │           └── XCTestObservationCenter+Register.m
│   │   ├── Pods.xcodeproj/
│   │   │   ├── project.pbxproj
│   │   │   ├── project.xcworkspace/
│   │   │   │   └── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── xcschemes/
│   │   │           ├── PersistentStorageSerializable-OSX.xcscheme
│   │   │           ├── PersistentStorageSerializable-iOS.xcscheme
│   │   │           ├── Reflection-OSX.xcscheme
│   │   │           └── Reflection-iOS.xcscheme
│   │   ├── Quick/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   └── Sources/
│   │   │       ├── Quick/
│   │   │       │   ├── Callsite.swift
│   │   │       │   ├── Configuration/
│   │   │       │   │   └── Configuration.swift
│   │   │       │   ├── DSL/
│   │   │       │   │   ├── DSL.swift
│   │   │       │   │   └── World+DSL.swift
│   │   │       │   ├── ErrorUtility.swift
│   │   │       │   ├── Example.swift
│   │   │       │   ├── ExampleGroup.swift
│   │   │       │   ├── ExampleMetadata.swift
│   │   │       │   ├── Filter.swift
│   │   │       │   ├── Hooks/
│   │   │       │   │   ├── Closures.swift
│   │   │       │   │   ├── ExampleHooks.swift
│   │   │       │   │   ├── HooksPhase.swift
│   │   │       │   │   └── SuiteHooks.swift
│   │   │       │   ├── NSBundle+CurrentTestBundle.swift
│   │   │       │   ├── QuickSelectedTestSuiteBuilder.swift
│   │   │       │   ├── QuickTestSuite.swift
│   │   │       │   ├── URL+FileName.swift
│   │   │       │   └── World.swift
│   │   │       └── QuickObjectiveC/
│   │   │           ├── Configuration/
│   │   │           │   ├── QuickConfiguration.h
│   │   │           │   └── QuickConfiguration.m
│   │   │           ├── DSL/
│   │   │           │   ├── QCKDSL.h
│   │   │           │   ├── QCKDSL.m
│   │   │           │   └── World+DSL.h
│   │   │           ├── NSString+QCKSelectorName.h
│   │   │           ├── NSString+QCKSelectorName.m
│   │   │           ├── Quick.h
│   │   │           ├── QuickSpec.h
│   │   │           ├── QuickSpec.m
│   │   │           ├── World.h
│   │   │           └── XCTestSuite+QuickTestSuiteBuilder.m
│   │   ├── Reflection/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   └── Sources/
│   │   │       └── Reflection/
│   │   │           ├── Advance.swift
│   │   │           ├── Any+Extensions.swift
│   │   │           ├── Array+Extensions.swift
│   │   │           ├── Construct.swift
│   │   │           ├── Get.swift
│   │   │           ├── Identity.swift
│   │   │           ├── MemoryProperties.swift
│   │   │           ├── Metadata+Class.swift
│   │   │           ├── Metadata+Kind.swift
│   │   │           ├── Metadata+Struct.swift
│   │   │           ├── Metadata+Tuple.swift
│   │   │           ├── Metadata.swift
│   │   │           ├── MetadataType.swift
│   │   │           ├── NominalType.swift
│   │   │           ├── NominalTypeDescriptor.swift
│   │   │           ├── PointerType.swift
│   │   │           ├── Properties.swift
│   │   │           ├── ReflectionError.swift
│   │   │           ├── RelativePointer.swift
│   │   │           ├── Set.swift
│   │   │           ├── Storage.swift
│   │   │           ├── UnsafePointer+Extensions.swift
│   │   │           └── ValueWitnessTable.swift
│   │   └── Target Support Files/
│   │       ├── Nimble/
│   │       │   ├── Info.plist
│   │       │   ├── Nimble-dummy.m
│   │       │   ├── Nimble-prefix.pch
│   │       │   ├── Nimble-umbrella.h
│   │       │   ├── Nimble.modulemap
│   │       │   └── Nimble.xcconfig
│   │       ├── PersistentStorageSerializable-OSX/
│   │       │   ├── Info.plist
│   │       │   ├── PersistentStorageSerializable-OSX-dummy.m
│   │       │   ├── PersistentStorageSerializable-OSX-prefix.pch
│   │       │   ├── PersistentStorageSerializable-OSX-umbrella.h
│   │       │   ├── PersistentStorageSerializable-OSX.modulemap
│   │       │   └── PersistentStorageSerializable-OSX.xcconfig
│   │       ├── PersistentStorageSerializable-iOS/
│   │       │   ├── Info.plist
│   │       │   ├── PersistentStorageSerializable-iOS-dummy.m
│   │       │   ├── PersistentStorageSerializable-iOS-prefix.pch
│   │       │   ├── PersistentStorageSerializable-iOS-umbrella.h
│   │       │   ├── PersistentStorageSerializable-iOS.modulemap
│   │       │   └── PersistentStorageSerializable-iOS.xcconfig
│   │       ├── Pods-PersistentStorageSerializable_MacExample/
│   │       │   ├── Info.plist
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-acknowledgements.markdown
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-acknowledgements.plist
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-dummy.m
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-frameworks.sh
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-resources.sh
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample-umbrella.h
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample.debug.xcconfig
│   │       │   ├── Pods-PersistentStorageSerializable_MacExample.modulemap
│   │       │   └── Pods-PersistentStorageSerializable_MacExample.release.xcconfig
│   │       ├── Pods-PersistentStorageSerializable_Tests/
│   │       │   ├── Info.plist
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-acknowledgements.markdown
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-acknowledgements.plist
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-dummy.m
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-frameworks.sh
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-resources.sh
│   │       │   ├── Pods-PersistentStorageSerializable_Tests-umbrella.h
│   │       │   ├── Pods-PersistentStorageSerializable_Tests.debug.xcconfig
│   │       │   ├── Pods-PersistentStorageSerializable_Tests.modulemap
│   │       │   └── Pods-PersistentStorageSerializable_Tests.release.xcconfig
│   │       ├── Pods-PersistentStorageSerializable_iOSExample/
│   │       │   ├── Info.plist
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-acknowledgements.markdown
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-acknowledgements.plist
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-dummy.m
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-frameworks.sh
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-resources.sh
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample-umbrella.h
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample.debug.xcconfig
│   │       │   ├── Pods-PersistentStorageSerializable_iOSExample.modulemap
│   │       │   └── Pods-PersistentStorageSerializable_iOSExample.release.xcconfig
│   │       ├── Quick/
│   │       │   ├── Info.plist
│   │       │   ├── Quick-dummy.m
│   │       │   ├── Quick-prefix.pch
│   │       │   ├── Quick-umbrella.h
│   │       │   ├── Quick.modulemap
│   │       │   └── Quick.xcconfig
│   │       ├── Reflection-OSX/
│   │       │   ├── Info.plist
│   │       │   ├── Reflection-OSX-dummy.m
│   │       │   ├── Reflection-OSX-prefix.pch
│   │       │   ├── Reflection-OSX-umbrella.h
│   │       │   ├── Reflection-OSX.modulemap
│   │       │   └── Reflection-OSX.xcconfig
│   │       └── Reflection-iOS/
│   │           ├── Info.plist
│   │           ├── Reflection-iOS-dummy.m
│   │           ├── Reflection-iOS-prefix.pch
│   │           ├── Reflection-iOS-umbrella.h
│   │           ├── Reflection-iOS.modulemap
│   │           └── Reflection-iOS.xcconfig
│   └── Tests/
│       ├── Car.plist
│       ├── Info.plist
│       ├── PersistentStorageMock.swift
│       ├── PersistentStorageSerializableTests.swift
│       └── SupportedSerializableTypeTests.swift
├── LICENSE
├── PersistentStorageSerializable/
│   ├── Assets/
│   │   └── .gitkeep
│   └── Classes/
│       ├── .gitkeep
│       ├── PersistentStorage.swift
│       ├── PersistentStorageSerializable.swift
│       ├── PlistStorage.swift
│       ├── PropertiesIteration.swift
│       ├── SupportedSerializableType.swift
│       ├── SwiftTryCatch.h
│       ├── SwiftTryCatch.m
│       └── UserDefaultsStorage.swift
├── PersistentStorageSerializable.podspec
└── README.md
Download .txt
SYMBOL INDEX (35 symbols across 4 files)

FILE: Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlCatchBadInstruction.h
  function NS_ASSUME_NONNULL_BEGIN (line 26) | NS_ASSUME_NONNULL_BEGIN
  type reply_mach_exception_raise_state_t (line 47) | typedef struct

FILE: Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/mach_excServer.c
  function mig_internal (line 107) | mig_internal kern_return_t __MIG_check__Request__mach_exception_raise_t(...
  function mig_internal (line 155) | mig_internal novalue _Xmach_exception_raise
  function mig_internal (line 217) | mig_internal kern_return_t __MIG_check__Request__mach_exception_raise_st...
  function mig_internal (line 270) | mig_internal novalue _Xmach_exception_raise_state
  function mig_internal (line 339) | mig_internal kern_return_t __MIG_check__Request__mach_exception_raise_st...
  function mig_internal (line 405) | mig_internal novalue _Xmach_exception_raise_state_identity
  type catch_mach_exc_subsystem (line 477) | struct catch_mach_exc_subsystem
  function mig_external (line 493) | mig_external boolean_t mach_exc_server
  function mig_external (line 523) | mig_external mig_routine_t mach_exc_server_routine

FILE: Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/mach_excServer.h
  type function_table_entry (line 45) | typedef struct {
  type function_table_entry (line 49) | typedef function_table_entry   *function_table_t;
  type catch_mach_exc_subsystem (line 142) | struct catch_mach_exc_subsystem {
  type __Request__mach_exception_raise_t (line 160) | typedef struct {
  type __Request__mach_exception_raise_state_t (line 179) | typedef struct {
  type __Request__mach_exception_raise_state_identity_t (line 196) | typedef struct {
  type __Reply__mach_exception_raise_t (line 235) | typedef struct {
  type __Reply__mach_exception_raise_state_t (line 247) | typedef struct {
  type __Reply__mach_exception_raise_state_identity_t (line 262) | typedef struct {

FILE: Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.h
  type NSDictionary (line 48) | typedef NSDictionary *(^QCKDSLSharedExampleContext)(void);
  function beforeSuite (line 81) | static inline void beforeSuite(QCKDSLEmptyBlock closure) {
  function afterSuite (line 96) | static inline void afterSuite(QCKDSLEmptyBlock closure) {
  function sharedExamples (line 110) | static inline void sharedExamples(NSString *name, QCKDSLSharedExampleBlo...
  function describe (line 121) | static inline void describe(NSString *description, QCKDSLEmptyBlock clos...
  function context (line 128) | static inline void context(NSString *description, QCKDSLEmptyBlock closu...
  function beforeEach (line 140) | static inline void beforeEach(QCKDSLEmptyBlock closure) {
  function beforeEachWithMetadata (line 148) | static inline void beforeEachWithMetadata(QCKDSLExampleMetadataBlock clo...
  function afterEach (line 160) | static inline void afterEach(QCKDSLEmptyBlock closure) {
  function afterEachWithMetadata (line 168) | static inline void afterEachWithMetadata(QCKDSLExampleMetadataBlock clos...
  function pending (line 179) | static inline void pending(NSString *description, QCKDSLEmptyBlock closu...
  function xdescribe (line 187) | static inline void xdescribe(NSString *description, QCKDSLEmptyBlock clo...
  function xcontext (line 195) | static inline void xcontext(NSString *description, QCKDSLEmptyBlock clos...
  function fdescribe (line 204) | static inline void fdescribe(NSString *description, QCKDSLEmptyBlock clo...
  function fcontext (line 211) | static inline void fcontext(NSString *description, QCKDSLEmptyBlock clos...
Condensed preview — 244 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (970K chars).
[
  {
    "path": ".gitignore",
    "chars": 660,
    "preview": "# OS X\n.DS_Store\n\n# Xcode\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.pers"
  },
  {
    "path": ".swift-version",
    "chars": 4,
    "preview": "3.1\n"
  },
  {
    "path": ".travis.yml",
    "chars": 737,
    "preview": "# references:\n# * http://www.objc.io/issue-6/travis-ci.html\n# * https://github.com/supermarin/xcpretty#usage\n\nosx_image:"
  },
  {
    "path": "Cartfile",
    "chars": 33,
    "preview": "github \"Zewo/Reflection\" ~> 0.14\n"
  },
  {
    "path": "Cartfile.private",
    "chars": 43,
    "preview": "github \"jspahrsummers/xcconfigs\" \"2055f18\"\n"
  },
  {
    "path": "Cartfile.resolved",
    "chars": 110,
    "preview": "github \"Zewo/Reflection\" \"0.14.3\"\ngithub \"jspahrsummers/xcconfigs\" \"2055f18efbe18e77408f7f43947f7ad92b2d4ff0\"\n"
  },
  {
    "path": "Example/ExamplesOfUsage.playground/Contents.swift",
    "chars": 5045,
    "preview": "//: # PersistentStorageSerializable library. \nimport UIKit\nimport PersistentStorageSerializable\n\n/*:\n ## Custom persiste"
  },
  {
    "path": "Example/ExamplesOfUsage.playground/contents.xcplayground",
    "chars": 189,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='ios' display-mode='re"
  },
  {
    "path": "Example/ExamplesOfUsage.playground/timeline.xctimeline",
    "chars": 497,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Timeline\n   version = \"3.0\">\n   <TimelineItems>\n      <LoggerValueHistoryTimelin"
  },
  {
    "path": "Example/PersistentStorageSerializable/AppDelegate.swift",
    "chars": 2193,
    "preview": "//\n//  AppDelegate.swift\n//  PersistentStorageSerializable\n//\n//  Created by IvanRublev on 04/05/2017.\n//  Copyright (c)"
  },
  {
    "path": "Example/PersistentStorageSerializable/Base.lproj/LaunchScreen.xib",
    "chars": 3723,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" versi"
  },
  {
    "path": "Example/PersistentStorageSerializable/Base.lproj/Main.storyboard",
    "chars": 16655,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/PersistentStorageSerializable/Images.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 586,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\""
  },
  {
    "path": "Example/PersistentStorageSerializable/Info.plist",
    "chars": 1094,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/PersistentStorageSerializable/Settings.swift",
    "chars": 464,
    "preview": "//\n//  Settings.swift\n//  PersistentStorageSerializable\n//\n//  Created by Ivan Rublev on 4/5/17.\n//  Copyright © 2017 Co"
  },
  {
    "path": "Example/PersistentStorageSerializable/ViewController.swift",
    "chars": 1750,
    "preview": "//\n//  ViewController.swift\n//  PersistentStorageSerializable\n//\n//  Created by IvanRublev on 04/05/2017.\n//  Copyright "
  },
  {
    "path": "Example/PersistentStorageSerializable.xcodeproj/project.pbxproj",
    "chars": 37846,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Example/PersistentStorageSerializable.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 174,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:PersistentStora"
  },
  {
    "path": "Example/PersistentStorageSerializable.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-MacExample.xcscheme",
    "chars": 3654,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0830\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/PersistentStorageSerializable.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-Tests.xcscheme",
    "chars": 3131,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0830\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/PersistentStorageSerializable.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-iOSExample.xcscheme",
    "chars": 3654,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0830\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/PersistentStorageSerializable.xcworkspace/contents.xcworkspacedata",
    "chars": 247,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:PersistentStor"
  },
  {
    "path": "Example/PersistentStorageSerializable_MacExample/AppDelegate.swift",
    "chars": 528,
    "preview": "//\n//  AppDelegate.swift\n//  PersistentStorageSerializable_MacExample\n//\n//  Created by Ivan Rublev on 4/6/17.\n//  Copyr"
  },
  {
    "path": "Example/PersistentStorageSerializable_MacExample/AppSettings.swift",
    "chars": 674,
    "preview": "//\n//  AppSettings.swift\n//  PersistentStorageSerializable\n//\n//  Created by Ivan Rublev on 4/6/17.\n//  Copyright © 2017"
  },
  {
    "path": "Example/PersistentStorageSerializable_MacExample/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 903,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : "
  },
  {
    "path": "Example/PersistentStorageSerializable_MacExample/Base.lproj/Main.storyboard",
    "chars": 79581,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB\" version=\"3.0\" t"
  },
  {
    "path": "Example/PersistentStorageSerializable_MacExample/Info.plist",
    "chars": 1030,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/PersistentStorageSerializable_MacExample/ViewController.swift",
    "chars": 1177,
    "preview": "//\n//  ViewController.swift\n//  PersistentStorageSerializable_MacExample\n//\n//  Created by Ivan Rublev on 4/6/17.\n//  Co"
  },
  {
    "path": "Example/Podfile",
    "chars": 483,
    "preview": "use_frameworks!\n\ntarget 'PersistentStorageSerializable_iOSExample' do\n  platform :ios, '9.0'\n  pod 'PersistentStorageSer"
  },
  {
    "path": "Example/Pods/Local Podspecs/PersistentStorageSerializable.podspec.json",
    "chars": 1268,
    "preview": "{\n  \"name\": \"PersistentStorageSerializable\",\n  \"version\": \"1.1.0\",\n  \"summary\": \"Bunch of protocols to make a class or s"
  },
  {
    "path": "Example/Pods/Manifest.lock",
    "chars": 636,
    "preview": "PODS:\n  - Nimble (5.1.1)\n  - PersistentStorageSerializable (1.1.0):\n    - Reflection (~> 0.14)\n  - Quick (1.0.0)\n  - Ref"
  },
  {
    "path": "Example/Pods/Nimble/LICENSE.md",
    "chars": 11307,
    "preview": "Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licens"
  },
  {
    "path": "Example/Pods/Nimble/README.md",
    "chars": 39786,
    "preview": "# Nimble\n\nUse Nimble to express the expected outcomes of Swift\nor Objective-C expressions. Inspired by\n[Cedar](https://g"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlCatchException/CwlCatchException/CwlCatchException.h",
    "chars": 1358,
    "preview": "//\n//  CwlCatchException.h\n//  CwlCatchException\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyright © 2016 Ma"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlCatchException/CwlCatchException/CwlCatchException.m",
    "chars": 1278,
    "preview": "//\n//  CwlCatchException.m\n//  CwlAssertionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyright © 2016 "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlCatchException/CwlCatchException/CwlCatchException.swift",
    "chars": 1401,
    "preview": "//\n//  CwlCatchException.swift\n//  CwlAssertionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyright © 2"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlBadInstructionException.swift",
    "chars": 3414,
    "preview": "//\n//  CwlBadInstructionException.swift\n//  CwlPreconditionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  C"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlCatchBadInstruction.h",
    "chars": 2185,
    "preview": "//\n//  CwlCatchBadInstruction.h\n//  CwlPreconditionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyright"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlCatchBadInstruction.m",
    "chars": 2863,
    "preview": "//\n//  CwlCatchBadInstruction.m\n//  CwlPreconditionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyright"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlCatchBadInstruction.swift",
    "chars": 8825,
    "preview": "//\n//  CwlCatchBadInstruction.swift\n//  CwlPreconditionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyr"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlDarwinDefinitions.swift",
    "chars": 2628,
    "preview": "//\n//  CwlDarwinDefinitions.swift\n//  CwlPreconditionTesting\n//\n//  Created by Matt Gallagher on 2016/01/10.\n//  Copyrig"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/mach_excServer.c",
    "chars": 18443,
    "preview": "/*\n * IDENTIFICATION:\n * stub generated Mon Jan 11 00:24:26 2016\n * with a MiG generated by bootstrap_cmds-93\n * OPTIONS"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/mach_excServer.h",
    "chars": 7561,
    "preview": "#ifndef\t_mach_exc_server_\n#define\t_mach_exc_server_\n\n/* Module mach_exc */\n\n#include <string.h>\n#include <mach/ndr.h>\n#i"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift",
    "chars": 713,
    "preview": "import Foundation\n\n/// Protocol for the assertion handler that Nimble uses for all expectations.\npublic protocol Asserti"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionDispatcher.swift",
    "chars": 653,
    "preview": "\n/// AssertionDispatcher allows multiple AssertionHandlers to receive\n/// assertion messages.\n///\n/// @warning Does not "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift",
    "chars": 3800,
    "preview": "import Foundation\n\n/// A data structure that stores information about an assertion when\n/// AssertionRecorder is set as "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift",
    "chars": 4153,
    "preview": "import Foundation\n\n#if _runtime(_ObjC)\n\ninternal struct ObjCMatcherWrapper : Matcher {\n    let matcher: NMBMatcher\n\n    "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift",
    "chars": 3116,
    "preview": "import Foundation\n\n#if _runtime(_ObjC)\n\npublic typealias MatcherBlock = (_ actualExpression: Expression<NSObject>, _ fai"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift",
    "chars": 1380,
    "preview": "import Dispatch\nimport Foundation\n\n/// \"Global\" state of Nimble is stored here. Only DSL functions should access / be aw"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift",
    "chars": 2813,
    "preview": "import Foundation\nimport XCTest\n\n/// Default handler for Nimble. This assertion handler passes failures along to\n/// XCT"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift",
    "chars": 4542,
    "preview": "import Dispatch\nimport Foundation\n\nprivate enum ErrorResult {\n    case exception(NSException)\n    case error(Error)\n    "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/DSL.swift",
    "chars": 2427,
    "preview": "import Foundation\n\n/// Make an expectation on a given actual value. The value given is lazily evaluated.\npublic func exp"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Expectation.swift",
    "chars": 2591,
    "preview": "import Foundation\n\ninternal func expressionMatches<T, U>(_ expression: Expression<T>, matcher: U, to: String, descriptio"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Expression.swift",
    "chars": 4331,
    "preview": "import Foundation\n\n// Memoizes the given closure, only calling the passed\n// closure once; even if repeat calls to the r"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift",
    "chars": 2175,
    "preview": "import Foundation\n\n/// Encapsulates the failure message that matchers can report to the end user.\n///\n/// This is shared"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift",
    "chars": 3775,
    "preview": "import Foundation\n\npublic func allPass<T,U>\n    (_ passFunc: @escaping (T?) -> Bool) -> NonNilMatcherFunc<U>\n    where U"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift",
    "chars": 6600,
    "preview": "import Foundation\n\n/// If you are running on a slower machine, it could be useful to increase the default timeout value\n"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift",
    "chars": 1588,
    "preview": "import Foundation\n\n#if _runtime(_ObjC)\n\n// A Nimble matcher that catches attempts to use beAKindOf with non Objective-C "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift",
    "chars": 1717,
    "preview": "import Foundation\n\n// A Nimble matcher that catches attempts to use beAnInstanceOf with non Objective-C types\npublic fun"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift",
    "chars": 5040,
    "preview": "import Foundation\n\ninternal let DefaultDelta = 0.0001\n\ninternal func isCloseTo(_ actualValue: NMBDoubleConvertible?, exp"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift",
    "chars": 4267,
    "preview": "import Foundation\n\n\n/// A Nimble matcher that succeeds when a value is \"empty\". For collections, this\n/// means the are "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift",
    "chars": 1691,
    "preview": "import Foundation\n\n\n/// A Nimble matcher that succeeds when the actual value is greater than the expected value.\npublic "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift",
    "chars": 1827,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value is greater than\n/// or equal to the expected"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift",
    "chars": 1639,
    "preview": "import Foundation\n\n\n/// A Nimble matcher that succeeds when the actual value is the same instance\n/// as the expected in"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift",
    "chars": 1659,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value is less than the expected value.\npublic func"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift",
    "chars": 1729,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value is less than\n/// or equal to the expected va"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift",
    "chars": 5830,
    "preview": "import Foundation\n\nextension Int8: ExpressibleByBooleanLiteral {\n    public init(booleanLiteral value: Bool) {\n        s"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift",
    "chars": 625,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value is nil.\npublic func beNil<T>() -> MatcherFun"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift",
    "chars": 489,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value is Void.\npublic func beVoid() -> MatcherFunc"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift",
    "chars": 2749,
    "preview": "import Foundation\n\n\n/// A Nimble matcher that succeeds when the actual sequence's first element\n/// is equal to the expe"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift",
    "chars": 4012,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual sequence contains the expected value.\npublic func "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift",
    "chars": 2934,
    "preview": "import Foundation\n\n\n/// A Nimble matcher that succeeds when the actual sequence's last element\n/// is equal to the expec"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift",
    "chars": 6565,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value is equal to the expected value.\n/// Values c"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift",
    "chars": 2791,
    "preview": "import Foundation\n\n// The `haveCount` matchers do not print the full string representation of the collection value,\n// i"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift",
    "chars": 1018,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual string satisfies the regular expression\n/// descri"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift",
    "chars": 1235,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual expression evaluates to an\n/// error from the spec"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherFunc.swift",
    "chars": 2856,
    "preview": "/// A convenience API to build matchers that don't need special negation\n/// behavior. The toNot() behavior is the negat"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift",
    "chars": 4523,
    "preview": "import Foundation\n// `CGFloat` is in Foundation (swift-corelibs-foundation) on Linux.\n#if _runtime(_ObjC)\n    import Cor"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift",
    "chars": 2431,
    "preview": "import Foundation\n\ninternal class NotificationCollector {\n    private(set) var observedNotifications: [Notification]\n   "
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift",
    "chars": 6444,
    "preview": "import Foundation\n\n// This matcher requires the Objective-C, and being built by Xcode rather than the Swift Package Mana"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift",
    "chars": 2479,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual value matches with any of the matchers\n/// provide"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift",
    "chars": 2511,
    "preview": "import Foundation\n\npublic func throwAssertion() -> MatcherFunc<Void> {\n    return MatcherFunc { actualExpression, failur"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift",
    "chars": 2163,
    "preview": "import Foundation\n\n/// A Nimble matcher that succeeds when the actual expression throws an\n/// error of the specified ty"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Nimble.h",
    "chars": 338,
    "preview": "#import <Foundation/Foundation.h>\n#import \"NMBExceptionCapture.h\"\n#import \"NMBStringify.h\"\n#import \"DSL.h\"\n\n#import \"Cwl"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift",
    "chars": 13413,
    "preview": "import CoreFoundation\nimport Dispatch\nimport Foundation\n\n#if !_runtime(_ObjC)\n    import CDispatch\n#endif\n\nprivate let t"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Utils/Errors.swift",
    "chars": 4137,
    "preview": "import Foundation\n\n// Generic\n\ninternal func setFailureMessageForError<T: Error>(\n    _ failureMessage: FailureMessage,\n"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift",
    "chars": 241,
    "preview": "import Foundation\n\nextension Sequence {\n    internal func all(_ fn: (Iterator.Element) -> Bool) -> Bool {\n        for it"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Utils/SourceLocation.swift",
    "chars": 923,
    "preview": "import Foundation\n\n// Ideally we would always use `StaticString` as the type for tracking the file name\n// that expectat"
  },
  {
    "path": "Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift",
    "chars": 6992,
    "preview": "import Foundation\n\n\ninternal func identityAsString(_ value: Any?) -> String {\n    let anyObject: AnyObject?\n#if os(Linux"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h",
    "chars": 275,
    "preview": "#import <XCTest/XCTest.h>\n#import <Nimble/Nimble-Swift.h>\n\nSWIFT_CLASS(\"_TtC6Nimble22CurrentTestCaseTracker\")\n@interface"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h",
    "chars": 14670,
    "preview": "#import <Foundation/Foundation.h>\n\n@class NMBExpectation;\n@class NMBObjCBeCloseToMatcher;\n@class NMBObjCRaiseExceptionMa"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m",
    "chars": 5108,
    "preview": "#import <Nimble/DSL.h>\n#import <Nimble/Nimble-Swift.h>\n\nSWIFT_CLASS(\"_TtC6Nimble7NMBWait\")\n@interface NMBWait : NSObject"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.h",
    "chars": 378,
    "preview": "#import <Foundation/Foundation.h>\n#import <dispatch/dispatch.h>\n\n@interface NMBExceptionCapture : NSObject\n\n- (nonnull i"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m",
    "chars": 813,
    "preview": "#import \"NMBExceptionCapture.h\"\n\n@interface NMBExceptionCapture ()\n@property (nonatomic, copy) void(^ _Nullable handler)"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.h",
    "chars": 751,
    "preview": "@class NSString;\n\n/**\n * Returns a string appropriate for displaying in test output\n * from the provided value.\n *\n * @p"
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m",
    "chars": 164,
    "preview": "#import \"NMBStringify.h\"\n#import <Nimble/Nimble-Swift.h>\n\nNSString *_Nonnull NMBStringify(id _Nullable anyObject) {\n    "
  },
  {
    "path": "Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m",
    "chars": 3262,
    "preview": "#import \"CurrentTestCaseTracker.h\"\n#import <XCTest/XCTest.h>\n#import <objc/runtime.h>\n\n#pragma mark - Method Swizzling\n\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/project.pbxproj",
    "chars": 174575,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-OSX.xcscheme",
    "chars": 2593,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PersistentStorageSerializable-iOS.xcscheme",
    "chars": 2593,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reflection-OSX.xcscheme",
    "chars": 2517,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reflection-iOS.xcscheme",
    "chars": 2517,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/Pods/Quick/LICENSE",
    "chars": 11308,
    "preview": "Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licens"
  },
  {
    "path": "Example/Pods/Quick/README.md",
    "chars": 3486,
    "preview": "![](http://f.cl.ly/items/0r1E192C1R0b2g2Q3h2w/QuickLogo_Color.png)\n\n[![Build Status](https://travis-ci.org/Quick/Quick.s"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Callsite.swift",
    "chars": 760,
    "preview": "import Foundation\n\n/**\n    An object encapsulating the file and line number at which\n    a particular example is defined"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift",
    "chars": 5987,
    "preview": "import Foundation\n\n/**\n    A closure that temporarily exposes a Configuration object within\n    the scope of the closure"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/DSL/DSL.swift",
    "chars": 11159,
    "preview": "/**\n    Defines a closure to be run prior to any examples in the test suite.\n    You may define an unlimited number of t"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift",
    "chars": 7465,
    "preview": "import Foundation\n\n/**\n    Adds methods to World to support top-level DSL functions (Swift) and\n    macros (Objective-C)"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/ErrorUtility.swift",
    "chars": 308,
    "preview": "import Foundation\n\ninternal func raiseError(_ message: String) -> Never {\n#if _runtime(_ObjC)\n    NSException(name: .int"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Example.swift",
    "chars": 3518,
    "preview": "import Foundation\n\nprivate var numberOfExamplesRun = 0\n\n/**\n    Examples, defined with the `it` function, use assertions"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/ExampleGroup.swift",
    "chars": 3115,
    "preview": "import Foundation\n\n/**\n    Example groups are logical groupings of examples, defined with\n    the `describe` and `contex"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift",
    "chars": 600,
    "preview": "import Foundation\n\n/**\n    A class that encapsulates information about an example,\n    including the index at which the "
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Filter.swift",
    "chars": 954,
    "preview": "import Foundation\n\n/**\n    A mapping of string keys to booleans that can be used to\n    filter examples or example group"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Hooks/Closures.swift",
    "chars": 1028,
    "preview": "// MARK: Example Hooks\n\n/**\n    A closure executed before an example is run.\n*/\npublic typealias BeforeExampleClosure = "
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Hooks/ExampleHooks.swift",
    "chars": 1310,
    "preview": "/**\n    A container for closures to be executed before and after each example.\n*/\nfinal internal class ExampleHooks {\n  "
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Hooks/HooksPhase.swift",
    "chars": 267,
    "preview": "/**\n A description of the execution cycle of the current example with\n respect to the hooks of that example.\n */\ninterna"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/Hooks/SuiteHooks.swift",
    "chars": 839,
    "preview": "/**\n    A container for closures to be executed before and after all examples.\n*/\nfinal internal class SuiteHooks {\n    "
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift",
    "chars": 310,
    "preview": "#if os(OSX) || os(iOS) || os(watchOS) || os(tvOS)\n\nimport Foundation\n\nextension Bundle {\n\n    /**\n     Locates the first"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift",
    "chars": 2192,
    "preview": "#if os(OSX) || os(iOS) || os(watchOS) || os(tvOS)\nimport Foundation\n\n/**\n Responsible for building a \"Selected tests\" su"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift",
    "chars": 1505,
    "preview": "#if os(OSX) || os(iOS) || os(watchOS) || os(tvOS)\n\nimport XCTest\n\n/**\n This protocol defines the role of an object that "
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/URL+FileName.swift",
    "chars": 206,
    "preview": "import Foundation\n\nextension URL {\n\n    /**\n     Returns the path file name without file extension.\n     */\n    var file"
  },
  {
    "path": "Example/Pods/Quick/Sources/Quick/World.swift",
    "chars": 8628,
    "preview": "import Foundation\n\n/**\n    A closure that, when evaluated, returns a dictionary of key-value\n    pairs that can be acces"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.h",
    "chars": 1101,
    "preview": "#import <Foundation/Foundation.h>\n\n@class Configuration;\n\n/**\n Subclass QuickConfiguration and override the +[QuickConfi"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m",
    "chars": 2867,
    "preview": "#import \"QuickConfiguration.h\"\n#import \"World.h\"\n#import <objc/runtime.h>\n\ntypedef void (^QCKClassEnumerationBlock)(Clas"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.h",
    "chars": 9058,
    "preview": "#import <Foundation/Foundation.h>\n\n@class ExampleMetadata;\n\n/**\n Provides a hook for Quick to be configured before any e"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m",
    "chars": 2708,
    "preview": "#import \"QCKDSL.h\"\n#import \"World.h\"\n#import \"World+DSL.h\"\n\nvoid qck_beforeSuite(QCKDSLEmptyBlock closure) {\n    [[World"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h",
    "chars": 2061,
    "preview": "#import <Quick/Quick-Swift.h>\n\n@interface World (SWIFT_EXTENSION(Quick))\n- (void)beforeSuite:(void (^ __nonnull)(void))c"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/NSString+QCKSelectorName.h",
    "chars": 526,
    "preview": "#import <Foundation/Foundation.h>\n\n/**\n QuickSpec converts example names into test methods.\n Those test methods need val"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/NSString+QCKSelectorName.m",
    "chars": 1699,
    "preview": "#import \"NSString+QCKSelectorName.h\"\n\n@implementation NSString (QCKSelectorName)\n\n- (NSString *)qck_selectorName {\n    s"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/Quick.h",
    "chars": 290,
    "preview": "#import <Foundation/Foundation.h>\n\n//! Project version number for Quick.\nFOUNDATION_EXPORT double QuickVersionNumber;\n\n/"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h",
    "chars": 1926,
    "preview": "#import <XCTest/XCTest.h>\n\n/**\n QuickSpec is a base class all specs written in Quick inherit from.\n They need to inherit"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m",
    "chars": 6702,
    "preview": "#import \"QuickSpec.h\"\n#import \"QuickConfiguration.h\"\n#import \"NSString+QCKSelectorName.h\"\n#import \"World.h\"\n#import <obj"
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/World.h",
    "chars": 734,
    "preview": "#import <Quick/Quick-Swift.h>\n\n@class ExampleGroup;\n@class ExampleMetadata;\n\nSWIFT_CLASS(\"_TtC5Quick5World\")\n@interface "
  },
  {
    "path": "Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m",
    "chars": 1284,
    "preview": "#import <XCTest/XCTest.h>\n#import <objc/runtime.h>\n#import <Quick/Quick-Swift.h>\n\n@interface XCTestSuite (QuickTestSuite"
  },
  {
    "path": "Example/Pods/Reflection/LICENSE",
    "chars": 1078,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Brad Hilton\n\nPermission is hereby granted, free of charge, to any person obtai"
  },
  {
    "path": "Example/Pods/Reflection/README.md",
    "chars": 4212,
    "preview": "# Reflection\n\n[![Swift][swift-badge]][swift-url]\n[![License][mit-badge]][mit-url]\n[![Slack][slack-badge]][slack-url]\n[!["
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Advance.swift",
    "chars": 126,
    "preview": "// TODO: Remove uses of advance()\nextension Strideable {\n    mutating func advance() {\n        self = advanced(by: 1)\n  "
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Any+Extensions.swift",
    "chars": 1679,
    "preview": "//\n//  Any+Extensions.swift\n//  Reflection\n//\n//  Created by Bradley Hilton on 10/17/16.\n//\n//\n\nprotocol AnyExtensions {"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Array+Extensions.swift",
    "chars": 600,
    "preview": "protocol UTF8Initializable {\n    init?(validatingUTF8: UnsafePointer<CChar>)\n}\n\nextension String : UTF8Initializable {}\n"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Construct.swift",
    "chars": 2605,
    "preview": "/// Create a struct with a constructor method. Return a value of `property.type` for each property.\npublic func construc"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Get.swift",
    "chars": 604,
    "preview": "/// Get value for key from instance\npublic func get(_ key: String, from instance: Any) throws -> Any {\n    guard let val"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Identity.swift",
    "chars": 338,
    "preview": "/// Tests if `value` is `type` or a subclass of `type`\npublic func value(_ value: Any, is type: Any.Type) -> Bool {\n    "
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/MemoryProperties.swift",
    "chars": 536,
    "preview": "public func alignof(_ x: Any.Type) -> Int {\n    return Metadata(type: x).valueWitnessTable.align\n}\n\npublic func sizeof(_"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Metadata+Class.swift",
    "chars": 552,
    "preview": "extension Metadata {\n    struct Class : NominalType {\n\n        static let kind: Kind? = .class\n        var pointer: Unsa"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Metadata+Kind.swift",
    "chars": 1228,
    "preview": "// https://github.com/apple/swift/blob/swift-3.0-branch/include/swift/ABI/MetadataKind.def\nextension Metadata {\n    stat"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Metadata+Struct.swift",
    "chars": 393,
    "preview": "extension Metadata {\n    struct Struct : NominalType {\n        static let kind: Kind? = .struct\n        var pointer: Uns"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Metadata+Tuple.swift",
    "chars": 783,
    "preview": "extension Metadata {\n    struct Tuple : MetadataType {\n        static let kind: Kind? = .tuple\n        var pointer: Unsa"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Metadata.swift",
    "chars": 284,
    "preview": "struct Metadata : MetadataType {\n    var pointer: UnsafePointer<Int>\n\n    init(type: Any.Type) {\n        self.init(point"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/MetadataType.swift",
    "chars": 593,
    "preview": "protocol MetadataType : PointerType {\n    static var kind: Metadata.Kind? { get }\n}\n\nextension MetadataType {\n    var va"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/NominalType.swift",
    "chars": 1032,
    "preview": "protocol NominalType : MetadataType {\n    var nominalTypeDescriptorOffsetLocation: Int { get }\n}\n\nextension NominalType "
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/NominalTypeDescriptor.swift",
    "chars": 1333,
    "preview": "struct NominalTypeDescriptor : PointerType {\n    var pointer: UnsafePointer<_NominalTypeDescriptor>\n\n    var mangledName"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/PointerType.swift",
    "chars": 440,
    "preview": "protocol PointerType : Equatable {\n    associatedtype Pointee\n    var pointer: UnsafePointer<Pointee> { get set }\n}\n\next"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Properties.swift",
    "chars": 2793,
    "preview": "private struct HashedType : Hashable {\n    let hashValue: Int\n    init(_ type: Any.Type) {\n        hashValue = unsafeBit"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/ReflectionError.swift",
    "chars": 1758,
    "preview": "public enum ReflectionError : Error, CustomStringConvertible, Equatable {\n    case notStruct(type: Any.Type)\n    case va"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/RelativePointer.swift",
    "chars": 538,
    "preview": "func relativePointer<T, U, V>(base: UnsafePointer<T>, offset: U) -> UnsafePointer<V> where U : Integer {\n    return Unsa"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Set.swift",
    "chars": 878,
    "preview": "/// Set value for key of an instance\npublic func set(_ value: Any, key: String, for instance: inout Any) throws {\n    tr"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/Storage.swift",
    "chars": 752,
    "preview": "extension AnyExtensions {\n    \n    mutating func mutableStorage() -> UnsafeMutableRawPointer {\n        return Reflection"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/UnsafePointer+Extensions.swift",
    "chars": 272,
    "preview": "//\n//  UnsafePointer+Extensions.swift\n//  Reflection\n//\n//  Created by Bradley Hilton on 10/29/16.\n//\n//\n\nextension Unsa"
  },
  {
    "path": "Example/Pods/Reflection/Sources/Reflection/ValueWitnessTable.swift",
    "chars": 1117,
    "preview": "// https://github.com/apple/swift/blob/master/lib/IRGen/ValueWitness.h\nstruct ValueWitnessTable : PointerType {\n    var "
  },
  {
    "path": "Example/Pods/Target Support Files/Nimble/Info.plist",
    "chars": 828,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/Nimble/Nimble-dummy.m",
    "chars": 116,
    "preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Nimble : NSObject\n@end\n@implementation PodsDummy_Nimble\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Nimble/Nimble-prefix.pch",
    "chars": 48,
    "preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Nimble/Nimble-umbrella.h",
    "chars": 341,
    "preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#endif\n\n#import \"CwlCatchException.h\"\n#import \"CwlCatchBadInstruction.h\"\n#import"
  },
  {
    "path": "Example/Pods/Target Support Files/Nimble/Nimble.modulemap",
    "chars": 102,
    "preview": "framework module Nimble {\n  umbrella header \"Nimble-umbrella.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Nimble/Nimble.xcconfig",
    "chars": 653,
    "preview": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Nimble\nENABLE_BITCODE = NO\nFRAMEWORK_SEARCH_PATHS = $(inherited)"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-OSX/Info.plist",
    "chars": 828,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-OSX/PersistentStorageSerializable-OSX-dummy.m",
    "chars": 170,
    "preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_PersistentStorageSerializable_OSX : NSObject\n@end\n@implementation"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-OSX/PersistentStorageSerializable-OSX-prefix.pch",
    "chars": 48,
    "preview": "#ifdef __OBJC__\n#import <Cocoa/Cocoa.h>\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-OSX/PersistentStorageSerializable-OSX-umbrella.h",
    "chars": 229,
    "preview": "#ifdef __OBJC__\n#import <Cocoa/Cocoa.h>\n#endif\n\n#import \"SwiftTryCatch.h\"\n\nFOUNDATION_EXPORT double PersistentStorageSer"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-OSX/PersistentStorageSerializable-OSX.modulemap",
    "chars": 152,
    "preview": "framework module PersistentStorageSerializable {\n  umbrella header \"PersistentStorageSerializable-OSX-umbrella.h\"\n\n  exp"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-OSX/PersistentStorageSerializable-OSX.xcconfig",
    "chars": 661,
    "preview": "CODE_SIGN_IDENTITY =\nCONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PersistentStorageSerializable-OSX\nFRAMEWORK"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-iOS/Info.plist",
    "chars": 828,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-iOS/PersistentStorageSerializable-iOS-dummy.m",
    "chars": 170,
    "preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_PersistentStorageSerializable_iOS : NSObject\n@end\n@implementation"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-iOS/PersistentStorageSerializable-iOS-prefix.pch",
    "chars": 48,
    "preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-iOS/PersistentStorageSerializable-iOS-umbrella.h",
    "chars": 229,
    "preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#endif\n\n#import \"SwiftTryCatch.h\"\n\nFOUNDATION_EXPORT double PersistentStorageSer"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-iOS/PersistentStorageSerializable-iOS.modulemap",
    "chars": 152,
    "preview": "framework module PersistentStorageSerializable {\n  umbrella header \"PersistentStorageSerializable-iOS-umbrella.h\"\n\n  exp"
  },
  {
    "path": "Example/Pods/Target Support Files/PersistentStorageSerializable-iOS/PersistentStorageSerializable-iOS.xcconfig",
    "chars": 640,
    "preview": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PersistentStorageSerializable-iOS\nFRAMEWORK_SEARCH_PATHS = $(inh"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Info.plist",
    "chars": 828,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-acknowledgements.markdown",
    "chars": 2339,
    "preview": "# Acknowledgements\nThis application makes use of the following third party libraries:\n\n## PersistentStorageSerializable\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-acknowledgements.plist",
    "chars": 3419,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-dummy.m",
    "chars": 194,
    "preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_PersistentStorageSerializable_MacExample : NSObject\n@end\n@im"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-frameworks.sh",
    "chars": 3857,
    "preview": "#!/bin/sh\nset -e\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_D"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-resources.sh",
    "chars": 5011,
    "preview": "#!/bin/sh\nset -e\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/re"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample-umbrella.h",
    "chars": 235,
    "preview": "#ifdef __OBJC__\n#import <Cocoa/Cocoa.h>\n#endif\n\n\nFOUNDATION_EXPORT double Pods_PersistentStorageSerializable_MacExampleV"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample.debug.xcconfig",
    "chars": 934,
    "preview": "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES\nCODE_SIGN_IDENTITY =\nEMBEDDED_CONTENT_CONTAINS_SWIFT = YES\nFRAMEWORK_SEARCH_"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample.modulemap",
    "chars": 180,
    "preview": "framework module Pods_PersistentStorageSerializable_MacExample {\n  umbrella header \"Pods-PersistentStorageSerializable_M"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_MacExample/Pods-PersistentStorageSerializable_MacExample.release.xcconfig",
    "chars": 934,
    "preview": "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES\nCODE_SIGN_IDENTITY =\nEMBEDDED_CONTENT_CONTAINS_SWIFT = YES\nFRAMEWORK_SEARCH_"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Info.plist",
    "chars": 828,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-acknowledgements.markdown",
    "chars": 24979,
    "preview": "# Acknowledgements\nThis application makes use of the following third party libraries:\n\n## PersistentStorageSerializable\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-acknowledgements.plist",
    "chars": 26475,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-dummy.m",
    "chars": 184,
    "preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_PersistentStorageSerializable_Tests : NSObject\n@end\n@impleme"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-frameworks.sh",
    "chars": 4117,
    "preview": "#!/bin/sh\nset -e\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_D"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-resources.sh",
    "chars": 5011,
    "preview": "#!/bin/sh\nset -e\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/re"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests-umbrella.h",
    "chars": 225,
    "preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#endif\n\n\nFOUNDATION_EXPORT double Pods_PersistentStorageSerializable_TestsVersio"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests.debug.xcconfig",
    "chars": 1213,
    "preview": "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES\nEMBEDDED_CONTENT_CONTAINS_SWIFT = YES\nFRAMEWORK_SEARCH_PATHS = $(inherited) "
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests.modulemap",
    "chars": 170,
    "preview": "framework module Pods_PersistentStorageSerializable_Tests {\n  umbrella header \"Pods-PersistentStorageSerializable_Tests-"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_Tests/Pods-PersistentStorageSerializable_Tests.release.xcconfig",
    "chars": 1213,
    "preview": "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES\nEMBEDDED_CONTENT_CONTAINS_SWIFT = YES\nFRAMEWORK_SEARCH_PATHS = $(inherited) "
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_iOSExample/Info.plist",
    "chars": 828,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-PersistentStorageSerializable_iOSExample/Pods-PersistentStorageSerializable_iOSExample-acknowledgements.markdown",
    "chars": 2339,
    "preview": "# Acknowledgements\nThis application makes use of the following third party libraries:\n\n## PersistentStorageSerializable\n"
  }
]

// ... and 44 more files (download for full content)

About this extraction

This page contains the full source code of the IvanRublev/PersistentStorageSerializable GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 244 files (883.7 KB), approximately 233.5k tokens, and a symbol index with 35 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!