{
  "coverage": 0.5490569575543673,
  "targets": [
    {
      "name": "Auth_Example_iOS.app",
      "coverage": 0.8241201927002532,
      "files": [
        {
          "name": "FIRGameCenterAuthCredential.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGameCenterAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGameCenterAuthCredential initWithPlayerID:publicKeyURL:signature:salt:timestamp:displayName:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGameCenterAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 0
            },
            {
              "name": "+[FIRGameCenterAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRGameCenterAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGameCenterAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthExceptionUtils.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAuthExceptionUtils raiseInvalidParameterExceptionWithReason:]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthWebView.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthWebView initWithFrame:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebView initializeSubviews]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebView layoutSubviews]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebView createWebView]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebView createSpinner]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthWebViewController.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthWebViewController initWithURL:delegate:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController loadView]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController viewDidAppear:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController cancel]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController webView:shouldStartLoadWithRequest:navigationType:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController webViewDidStartLoad:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController webViewDidFinishLoad:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthWebViewController webView:didFailLoadWithError:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRGameCenterAuthProvider.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGameCenterAuthProvider init]",
              "coverage": 0
            },
            {
              "name": "+[FIRGameCenterAuthProvider getCredentialWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "__57+[FIRGameCenterAuthProvider getCredentialWithCompletion:]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRSecureTokenResponse.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSecureTokenResponse expectedKind]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenResponse setWithDictionary:error:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthDefaultUIDelegate.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthDefaultUIDelegate initWithViewController:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthDefaultUIDelegate presentViewController:animated:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthDefaultUIDelegate dismissViewControllerAnimated:completion:]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthDefaultUIDelegate defaultUIDelegate]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthTokenResult.m",
          "coverage": 0.2727272727272727,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthTokenResult initWithToken:expirationDate:authDate:issuedAtDate:signInProvider:claims:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthTokenResult supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthTokenResult initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthTokenResult encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRSecureTokenRequest.m",
          "coverage": 0.27941176470588236,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRSecureTokenRequest authCodeRequestWithCode:requestConfiguration:]",
              "coverage": 0
            },
            {
              "name": "+[FIRSecureTokenRequest refreshRequestWithRefreshToken:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "+[FIRSecureTokenRequest grantTypeStringWithGrantType:]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenRequest initWithGrantType:scope:refreshToken:code:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSecureTokenRequest requestConfiguration]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenRequest requestURL]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenRequest containsPostBody]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 0
            },
            {
              "name": "+[FIRSecureTokenRequest host]",
              "coverage": 0
            },
            {
              "name": "+[FIRSecureTokenRequest setHost:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthDataResult.m",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthDataResult initWithUser:additionalUserInfo:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthDataResult supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthDataResult initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthDataResult encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIREmailPasswordAuthCredential.m",
          "coverage": 0.34782608695652173,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIREmailPasswordAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIREmailPasswordAuthCredential initWithEmail:password:]",
              "coverage": 1
            },
            {
              "name": "-[FIREmailPasswordAuthCredential initWithEmail:link:]",
              "coverage": 1
            },
            {
              "name": "-[FIREmailPasswordAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 0
            },
            {
              "name": "+[FIREmailPasswordAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIREmailPasswordAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIREmailPasswordAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRPhoneAuthCredential.m",
          "coverage": 0.36363636363636365,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRPhoneAuthCredential initWithTemporaryProof:phoneNumber:providerID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRPhoneAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRPhoneAuthCredential initWithProviderID:verificationID:verificationCode:]",
              "coverage": 1
            },
            {
              "name": "+[FIRPhoneAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRPhoneAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRPhoneAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRTwitterAuthProvider.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRTwitterAuthProvider init]",
              "coverage": 0
            },
            {
              "name": "+[FIRTwitterAuthProvider credentialWithToken:secret:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRFacebookAuthProvider.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRFacebookAuthProvider init]",
              "coverage": 0
            },
            {
              "name": "+[FIRFacebookAuthProvider credentialWithAccessToken:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGitHubAuthProvider.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGitHubAuthProvider init]",
              "coverage": 0
            },
            {
              "name": "+[FIRGitHubAuthProvider credentialWithToken:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGoogleAuthProvider.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGoogleAuthProvider init]",
              "coverage": 0
            },
            {
              "name": "+[FIRGoogleAuthProvider credentialWithIDToken:accessToken:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGitHubAuthCredential.m",
          "coverage": 0.38461538461538464,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGitHubAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGitHubAuthCredential initWithToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGitHubAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 1
            },
            {
              "name": "+[FIRGitHubAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRGitHubAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGitHubAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRFacebookAuthCredential.m",
          "coverage": 0.38461538461538464,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRFacebookAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRFacebookAuthCredential initWithAccessToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRFacebookAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 1
            },
            {
              "name": "+[FIRFacebookAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRFacebookAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRFacebookAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthCredential.m",
          "coverage": 0.3888888888888889,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthCredential init]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthCredential initWithProvider:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRTwitterAuthCredential.m",
          "coverage": 0.4,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRTwitterAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRTwitterAuthCredential initWithToken:secret:]",
              "coverage": 1
            },
            {
              "name": "-[FIRTwitterAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 1
            },
            {
              "name": "+[FIRTwitterAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRTwitterAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRTwitterAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRGoogleAuthCredential.m",
          "coverage": 0.4,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGoogleAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGoogleAuthCredential initWithIDToken:accessToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGoogleAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 1
            },
            {
              "name": "+[FIRGoogleAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRGoogleAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRGoogleAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIROAuthCredential.m",
          "coverage": 0.4772727272727273,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIROAuthCredential initWithProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIROAuthCredential initWithProviderID:IDToken:accessToken:pendingToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIROAuthCredential initWithProviderID:sessionID:OAuthResponseURLString:]",
              "coverage": 1
            },
            {
              "name": "-[FIROAuthCredential prepareVerifyAssertionRequest:]",
              "coverage": 1
            },
            {
              "name": "+[FIROAuthCredential supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIROAuthCredential initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIROAuthCredential encodeWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthURLPresenter.m",
          "coverage": 0.496551724137931,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthURLPresenter presentURL:UIDelegate:callbackMatcher:completion:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "__72-[FIRAuthURLPresenter presentURL:UIDelegate:callbackMatcher:completion:]_block_invoke",
              "coverage": 0.6875
            },
            {
              "name": "-[FIRAuthURLPresenter canHandleURL:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRAuthURLPresenter safariViewControllerDidFinish:]",
              "coverage": 0
            },
            {
              "name": "__53-[FIRAuthURLPresenter safariViewControllerDidFinish:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthURLPresenter webViewController:canHandleURL:]",
              "coverage": 0
            },
            {
              "name": "__54-[FIRAuthURLPresenter webViewController:canHandleURL:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthURLPresenter webViewControllerDidCancel:]",
              "coverage": 0
            },
            {
              "name": "__50-[FIRAuthURLPresenter webViewControllerDidCancel:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthURLPresenter webViewController:didFailWithError:]",
              "coverage": 0
            },
            {
              "name": "__58-[FIRAuthURLPresenter webViewController:didFailWithError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthURLPresenter finishPresentationWithURL:error:]",
              "coverage": 0.9166666666666666
            },
            {
              "name": "__55-[FIRAuthURLPresenter finishPresentationWithURL:error:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__55-[FIRAuthURLPresenter finishPresentationWithURL:error:]_block_invoke.42",
              "coverage": 1
            },
            {
              "name": "__55-[FIRAuthURLPresenter finishPresentationWithURL:error:]_block_invoke_2",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthAPNSTokenManager.m",
          "coverage": 0.49743589743589745,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthAPNSTokenManager initWithApplication:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAPNSTokenManager getTokenWithCallback:]",
              "coverage": 1
            },
            {
              "name": "__48-[FIRAuthAPNSTokenManager getTokenWithCallback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__48-[FIRAuthAPNSTokenManager getTokenWithCallback:]_block_invoke.13",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAPNSTokenManager setToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAPNSTokenManager cancelWithError:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAPNSTokenManager callBackWithToken:error:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthAPNSTokenManager isProductionApp]",
              "coverage": 0.08411214953271028
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIREmailAuthProvider.m",
          "coverage": 0.5454545454545454,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIREmailAuthProvider init]",
              "coverage": 0
            },
            {
              "name": "+[FIREmailAuthProvider credentialWithEmail:password:]",
              "coverage": 1
            },
            {
              "name": "+[FIREmailAuthProvider credentialWithEmail:link:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSendVerificationCodeResponse.m",
          "coverage": 0.5714285714285714,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSendVerificationCodeResponse expectedKind]",
              "coverage": 0
            },
            {
              "name": "-[FIRSendVerificationCodeResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRCreateAuthURIRequest.m",
          "coverage": 0.6666666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRCreateAuthURIRequest initWithIdentifier:continueURI:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRCreateAuthURIRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 0.5454545454545454
            }
          ]
        },
        {
          "name": "FIRGetProjectConfigResponse.m",
          "coverage": 0.6666666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGetProjectConfigResponse setWithDictionary:error:]",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRAuthKeychain.m",
          "coverage": 0.7413793103448276,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthKeychain initWithService:]",
              "coverage": 0.9090909090909091
            },
            {
              "name": "-[FIRAuthKeychain dataForKey:error:]",
              "coverage": 0.6363636363636364
            },
            {
              "name": "-[FIRAuthKeychain setData:forKey:error:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRAuthKeychain removeDataForKey:error:]",
              "coverage": 0.5714285714285714
            },
            {
              "name": "-[FIRAuthKeychain itemWithQuery:error:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAuthKeychain setItemWithQuery:attributes:error:]",
              "coverage": 0.7
            },
            {
              "name": "-[FIRAuthKeychain deleteItemWithQuery:error:]",
              "coverage": 0.5
            },
            {
              "name": "-[FIRAuthKeychain deleteLegacyItemWithKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthKeychain genericPasswordQueryWithKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthKeychain legacyGenericPasswordQueryWithKey:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRIdentityToolkitRequest.m",
          "coverage": 0.7692307692307693,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRIdentityToolkitRequest initWithEndpoint:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRIdentityToolkitRequest containsPostBody]",
              "coverage": 1
            },
            {
              "name": "-[FIRIdentityToolkitRequest requestURL]",
              "coverage": 1
            },
            {
              "name": "-[FIRIdentityToolkitRequest requestConfiguration]",
              "coverage": 1
            },
            {
              "name": "+[FIRIdentityToolkitRequest host]",
              "coverage": 0
            },
            {
              "name": "+[FIRIdentityToolkitRequest setHost:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRVerifyPhoneNumberResponse.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyPhoneNumberResponse expectedKind]",
              "coverage": 0
            },
            {
              "name": "-[FIRVerifyPhoneNumberResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRUser.m",
          "coverage": 0.7953100158982512,
          "type": "objc",
          "functions": [
            {
              "name": "callInMainThreadWithError",
              "coverage": 1
            },
            {
              "name": "__callInMainThreadWithError_block_invoke",
              "coverage": 1
            },
            {
              "name": "callInMainThreadWithUserAndError",
              "coverage": 1
            },
            {
              "name": "__callInMainThreadWithUserAndError_block_invoke",
              "coverage": 1
            },
            {
              "name": "callInMainThreadWithAuthDataResultAndError",
              "coverage": 1
            },
            {
              "name": "__callInMainThreadWithAuthDataResultAndError_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRUser retrieveUserWithAuth:accessToken:accessTokenExpirationDate:refreshToken:anonymous:callback:]",
              "coverage": 1
            },
            {
              "name": "__102+[FIRUser retrieveUserWithAuth:accessToken:accessTokenExpirationDate:refreshToken:anonymous:callback:]_block_invoke",
              "coverage": 0.8571428571428571
            },
            {
              "name": "__102+[FIRUser retrieveUserWithAuth:accessToken:accessTokenExpirationDate:refreshToken:anonymous:callback:]_block_invoke_2",
              "coverage": 0.6
            },
            {
              "name": "-[FIRUser initWithTokenService:]",
              "coverage": 1
            },
            {
              "name": "+[FIRUser supportsSecureCoding]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser initWithCoder:]",
              "coverage": 0.96
            },
            {
              "name": "-[FIRUser encodeWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser setAuth:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser providerID]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser providerData]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser getAccountInfoRefreshingCache:]",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser getAccountInfoRefreshingCache:]_block_invoke",
              "coverage": 0.875
            },
            {
              "name": "__41-[FIRUser getAccountInfoRefreshingCache:]_block_invoke_2",
              "coverage": 0.7692307692307693
            },
            {
              "name": "-[FIRUser updateWithGetAccountInfoResponse:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser executeUserUpdateWithChanges:callback:]",
              "coverage": 1
            },
            {
              "name": "__49-[FIRUser executeUserUpdateWithChanges:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__49-[FIRUser executeUserUpdateWithChanges:callback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__49-[FIRUser executeUserUpdateWithChanges:callback:]_block_invoke_3",
              "coverage": 0.8947368421052632
            },
            {
              "name": "__49-[FIRUser executeUserUpdateWithChanges:callback:]_block_invoke_4",
              "coverage": 0.5
            },
            {
              "name": "__49-[FIRUser executeUserUpdateWithChanges:callback:]_block_invoke_5",
              "coverage": 0
            },
            {
              "name": "-[FIRUser updateKeychain:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser setTokenService:callback:]",
              "coverage": 1
            },
            {
              "name": "__36-[FIRUser setTokenService:callback:]_block_invoke",
              "coverage": 0.5
            },
            {
              "name": "-[FIRUser updateEmail:password:callback:]",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser updateEmail:password:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser updateEmail:password:callback:]_block_invoke.205",
              "coverage": 0.95
            },
            {
              "name": "__41-[FIRUser updateEmail:password:callback:]_block_invoke_2",
              "coverage": 0.9230769230769231
            },
            {
              "name": "__41-[FIRUser updateEmail:password:callback:]_block_invoke_3",
              "coverage": 0.7407407407407407
            },
            {
              "name": "-[FIRUser updateEmail:completion:]",
              "coverage": 1
            },
            {
              "name": "__34-[FIRUser updateEmail:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__34-[FIRUser updateEmail:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRUser updatePassword:completion:]",
              "coverage": 1
            },
            {
              "name": "__37-[FIRUser updatePassword:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__37-[FIRUser updatePassword:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRUser internalUpdateOrLinkPhoneNumberCredential:isLinkOperation:completion:]",
              "coverage": 1
            },
            {
              "name": "__80-[FIRUser internalUpdateOrLinkPhoneNumberCredential:isLinkOperation:completion:]_block_invoke",
              "coverage": 0.9210526315789473
            },
            {
              "name": "__80-[FIRUser internalUpdateOrLinkPhoneNumberCredential:isLinkOperation:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__80-[FIRUser internalUpdateOrLinkPhoneNumberCredential:isLinkOperation:completion:]_block_invoke_3",
              "coverage": 0.46153846153846156
            },
            {
              "name": "-[FIRUser updatePhoneNumberCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__50-[FIRUser updatePhoneNumberCredential:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__50-[FIRUser updatePhoneNumberCredential:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRUser profileChangeRequest]",
              "coverage": 1
            },
            {
              "name": "__31-[FIRUser profileChangeRequest]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRUser setDisplayName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser setPhotoURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser rawAccessToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser accessTokenExpirationDate]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser reloadWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "__32-[FIRUser reloadWithCompletion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__32-[FIRUser reloadWithCompletion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRUser reauthenticateWithCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRUser reauthenticateWithCredential:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRUser reauthenticateAndRetrieveDataWithCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__66-[FIRUser reauthenticateAndRetrieveDataWithCredential:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__66-[FIRUser reauthenticateAndRetrieveDataWithCredential:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__66-[FIRUser reauthenticateAndRetrieveDataWithCredential:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRUser refreshToken]",
              "coverage": 1
            },
            {
              "name": "__23-[FIRUser refreshToken]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRUser getIDTokenWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRUser getIDTokenForcingRefresh:completion:]",
              "coverage": 0
            },
            {
              "name": "__47-[FIRUser getIDTokenForcingRefresh:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__47-[FIRUser getIDTokenForcingRefresh:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRUser getIDTokenResultWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "__42-[FIRUser getIDTokenResultWithCompletion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__42-[FIRUser getIDTokenResultWithCompletion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRUser getIDTokenResultForcingRefresh:completion:]",
              "coverage": 1
            },
            {
              "name": "__53-[FIRUser getIDTokenResultForcingRefresh:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__53-[FIRUser getIDTokenResultForcingRefresh:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__53-[FIRUser getIDTokenResultForcingRefresh:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRUser parseIDToken:error:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRUser internalGetTokenWithCallback:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUser internalGetTokenForcingRefresh:callback:]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRUser internalGetTokenForcingRefresh:callback:]_block_invoke",
              "coverage": 0.7857142857142857
            },
            {
              "name": "-[FIRUser linkWithCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser linkWithCredential:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRUser linkAndRetrieveDataWithCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke",
              "coverage": 0.6848484848484848
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke.415",
              "coverage": 0
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_2.431",
              "coverage": 0
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_4",
              "coverage": 0
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke.448",
              "coverage": 1
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke.452",
              "coverage": 1
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_2.453",
              "coverage": 1
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke.457",
              "coverage": 0.9464285714285714
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_2.463",
              "coverage": 1
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_3.467",
              "coverage": 0.88
            },
            {
              "name": "__56-[FIRUser linkAndRetrieveDataWithCredential:completion:]_block_invoke_4.468",
              "coverage": 0.5
            },
            {
              "name": "-[FIRUser unlinkFromProvider:completion:]",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser unlinkFromProvider:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser unlinkFromProvider:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__41-[FIRUser unlinkFromProvider:completion:]_block_invoke.493",
              "coverage": 0.8382352941176471
            },
            {
              "name": "__41-[FIRUser unlinkFromProvider:completion:]_block_invoke_2.500",
              "coverage": 0.5365853658536586
            },
            {
              "name": "__41-[FIRUser unlinkFromProvider:completion:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "-[FIRUser sendEmailVerificationWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRUser sendEmailVerificationWithActionCodeSettings:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRUser sendEmailVerificationWithNullableActionCodeSettings:completion:]",
              "coverage": 0
            },
            {
              "name": "__74-[FIRUser sendEmailVerificationWithNullableActionCodeSettings:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__74-[FIRUser sendEmailVerificationWithNullableActionCodeSettings:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__74-[FIRUser sendEmailVerificationWithNullableActionCodeSettings:completion:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "-[FIRUser deleteWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "__32-[FIRUser deleteWithCompletion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__32-[FIRUser deleteWithCompletion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__32-[FIRUser deleteWithCompletion:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "-[FIRUser signOutIfTokenIsInvalidWithError:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUserProfileChangeRequest initWithUser:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUserProfileChangeRequest displayName]",
              "coverage": 0
            },
            {
              "name": "-[FIRUserProfileChangeRequest setDisplayName:]",
              "coverage": 1
            },
            {
              "name": "__46-[FIRUserProfileChangeRequest setDisplayName:]_block_invoke",
              "coverage": 0.5
            },
            {
              "name": "-[FIRUserProfileChangeRequest photoURL]",
              "coverage": 0
            },
            {
              "name": "-[FIRUserProfileChangeRequest setPhotoURL:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRUserProfileChangeRequest setPhotoURL:]_block_invoke",
              "coverage": 0.5
            },
            {
              "name": "-[FIRUserProfileChangeRequest hasUpdates]",
              "coverage": 1
            },
            {
              "name": "-[FIRUserProfileChangeRequest commitChangesWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "__59-[FIRUserProfileChangeRequest commitChangesWithCompletion:]_block_invoke",
              "coverage": 0.8181818181818182
            },
            {
              "name": "__59-[FIRUserProfileChangeRequest commitChangesWithCompletion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__59-[FIRUserProfileChangeRequest commitChangesWithCompletion:]_block_invoke.711",
              "coverage": 0.8235294117647058
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIROAuthProvider.m",
          "coverage": 0.8430379746835444,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROAuthProvider credentialWithProviderID:IDToken:accessToken:pendingToken:]",
              "coverage": 0
            },
            {
              "name": "+[FIROAuthProvider credentialWithProviderID:IDToken:accessToken:]",
              "coverage": 1
            },
            {
              "name": "+[FIROAuthProvider credentialWithProviderID:accessToken:]",
              "coverage": 1
            },
            {
              "name": "+[FIROAuthProvider providerWithProviderID:]",
              "coverage": 0
            },
            {
              "name": "+[FIROAuthProvider providerWithProviderID:auth:]",
              "coverage": 1
            },
            {
              "name": "-[FIROAuthProvider getCredentialWithUIDelegate:completion:]",
              "coverage": 0.9344262295081968
            },
            {
              "name": "__59-[FIROAuthProvider getCredentialWithUIDelegate:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__59-[FIROAuthProvider getCredentialWithUIDelegate:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__59-[FIROAuthProvider getCredentialWithUIDelegate:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "__59-[FIROAuthProvider getCredentialWithUIDelegate:completion:]_block_invoke.25",
              "coverage": 0.9142857142857143
            },
            {
              "name": "__59-[FIROAuthProvider getCredentialWithUIDelegate:completion:]_block_invoke_2.26",
              "coverage": 1
            },
            {
              "name": "__59-[FIROAuthProvider getCredentialWithUIDelegate:completion:]_block_invoke.35",
              "coverage": 1
            },
            {
              "name": "-[FIROAuthProvider initWithProviderID:auth:]",
              "coverage": 1
            },
            {
              "name": "-[FIROAuthProvider OAuthResponseForURL:error:]",
              "coverage": 0.8484848484848485
            },
            {
              "name": "-[FIROAuthProvider getHeadFulLiteURLWithEventID:sessionID:completion:]",
              "coverage": 1
            },
            {
              "name": "__70-[FIROAuthProvider getHeadFulLiteURLWithEventID:sessionID:completion:]_block_invoke",
              "coverage": 0.6086956521739131
            },
            {
              "name": "-[FIROAuthProvider customParametersStringWithError:]",
              "coverage": 0
            },
            {
              "name": "-[FIROAuthProvider hashforString:]",
              "coverage": 0.8888888888888888
            },
            {
              "name": "-[FIROAuthProvider hexStringFromData:]",
              "coverage": 1
            },
            {
              "name": "-[FIROAuthProvider httpArgumentsStringForArgsDictionary:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuth.m",
          "coverage": 0.8576283987915407,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRActionCodeInfo dataForKey:]",
              "coverage": 0.875
            },
            {
              "name": "-[FIRActionCodeInfo initWithOperation:email:newEmail:]",
              "coverage": 1
            },
            {
              "name": "+[FIRActionCodeInfo actionCodeOperationForRequestType:]",
              "coverage": 0.4666666666666667
            },
            {
              "name": "+[FIRAuth load]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuth initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuth auth]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuth authWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth initWithAPIKey:appName:]",
              "coverage": 1
            },
            {
              "name": "__34-[FIRAuth initWithAPIKey:appName:]_block_invoke",
              "coverage": 0.8611111111111112
            },
            {
              "name": "-[FIRAuth dealloc]",
              "coverage": 0.7894736842105263
            },
            {
              "name": "-[FIRAuth currentUser]",
              "coverage": 1
            },
            {
              "name": "__22-[FIRAuth currentUser]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth fetchProvidersForEmail:completion:]",
              "coverage": 1
            },
            {
              "name": "__45-[FIRAuth fetchProvidersForEmail:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__45-[FIRAuth fetchProvidersForEmail:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__45-[FIRAuth fetchProvidersForEmail:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInWithProvider:UIDelegate:completion:]",
              "coverage": 1
            },
            {
              "name": "__52-[FIRAuth signInWithProvider:UIDelegate:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__52-[FIRAuth signInWithProvider:UIDelegate:completion:]_block_invoke_2",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRAuth fetchSignInMethodsForEmail:completion:]",
              "coverage": 1
            },
            {
              "name": "__49-[FIRAuth fetchSignInMethodsForEmail:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__49-[FIRAuth fetchSignInMethodsForEmail:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__49-[FIRAuth fetchSignInMethodsForEmail:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInWithEmail:password:completion:]",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuth signInWithEmail:password:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuth signInWithEmail:password:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInWithEmail:link:completion:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRAuth signInWithEmail:link:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__43-[FIRAuth signInWithEmail:link:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInWithEmail:password:callback:]",
              "coverage": 1
            },
            {
              "name": "__45-[FIRAuth signInWithEmail:password:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInAndRetrieveDataWithEmail:password:completion:]",
              "coverage": 1
            },
            {
              "name": "__62-[FIRAuth signInAndRetrieveDataWithEmail:password:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth internalSignInAndRetrieveDataWithEmail:password:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInAndRetrieveDataWithGameCenterCredential:callback:]",
              "coverage": 0
            },
            {
              "name": "__66-[FIRAuth signInAndRetrieveDataWithGameCenterCredential:callback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__66-[FIRAuth signInAndRetrieveDataWithGameCenterCredential:callback:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth internalSignInAndRetrieveDataWithEmail:link:callback:]",
              "coverage": 0.8653846153846154
            },
            {
              "name": "__64-[FIRAuth internalSignInAndRetrieveDataWithEmail:link:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__64-[FIRAuth internalSignInAndRetrieveDataWithEmail:link:callback:]_block_invoke_2",
              "coverage": 0.7368421052631579
            },
            {
              "name": "-[FIRAuth signInWithCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRAuth signInWithCredential:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInAndRetrieveDataWithCredential:completion:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRAuth signInAndRetrieveDataWithCredential:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth internalSignInWithCredential:callback:]",
              "coverage": 1
            },
            {
              "name": "__49-[FIRAuth internalSignInWithCredential:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth internalSignInAndRetrieveDataWithCredential:isReauthentication:callback:]",
              "coverage": 0.9615384615384616
            },
            {
              "name": "__83-[FIRAuth internalSignInAndRetrieveDataWithCredential:isReauthentication:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__83-[FIRAuth internalSignInAndRetrieveDataWithCredential:isReauthentication:callback:]_block_invoke.333",
              "coverage": 1
            },
            {
              "name": "__83-[FIRAuth internalSignInAndRetrieveDataWithCredential:isReauthentication:callback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__83-[FIRAuth internalSignInAndRetrieveDataWithCredential:isReauthentication:callback:]_block_invoke.365",
              "coverage": 0.8648648648648649
            },
            {
              "name": "__83-[FIRAuth internalSignInAndRetrieveDataWithCredential:isReauthentication:callback:]_block_invoke_2.374",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInWithCredential:callback:]",
              "coverage": 0
            },
            {
              "name": "__41-[FIRAuth signInWithCredential:callback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth signInAnonymouslyAndRetrieveDataWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRAuth signInAnonymouslyAndRetrieveDataWithCompletion:]_block_invoke",
              "coverage": 0.7105263157894737
            },
            {
              "name": "__58-[FIRAuth signInAnonymouslyAndRetrieveDataWithCompletion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__58-[FIRAuth signInAnonymouslyAndRetrieveDataWithCompletion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInAnonymouslyWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRAuth signInAnonymouslyWithCompletion:]_block_invoke",
              "coverage": 0.84375
            },
            {
              "name": "__43-[FIRAuth signInAnonymouslyWithCompletion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__43-[FIRAuth signInAnonymouslyWithCompletion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInWithCustomToken:completion:]",
              "coverage": 1
            },
            {
              "name": "__44-[FIRAuth signInWithCustomToken:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__44-[FIRAuth signInWithCustomToken:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInAndRetrieveDataWithCustomToken:completion:]",
              "coverage": 1
            },
            {
              "name": "__59-[FIRAuth signInAndRetrieveDataWithCustomToken:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth createUserWithEmail:password:completion:]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRAuth createUserWithEmail:password:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__51-[FIRAuth createUserWithEmail:password:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__51-[FIRAuth createUserWithEmail:password:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth createUserAndRetrieveDataWithEmail:password:completion:]",
              "coverage": 1
            },
            {
              "name": "__66-[FIRAuth createUserAndRetrieveDataWithEmail:password:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__66-[FIRAuth createUserAndRetrieveDataWithEmail:password:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__66-[FIRAuth createUserAndRetrieveDataWithEmail:password:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth confirmPasswordResetWithCode:newPassword:completion:]",
              "coverage": 1
            },
            {
              "name": "__63-[FIRAuth confirmPasswordResetWithCode:newPassword:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__63-[FIRAuth confirmPasswordResetWithCode:newPassword:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__63-[FIRAuth confirmPasswordResetWithCode:newPassword:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth checkActionCode:completion:]",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth checkActionCode:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth checkActionCode:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth checkActionCode:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth checkActionCode:completion:]_block_invoke.470",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth verifyPasswordResetCode:completion:]",
              "coverage": 1
            },
            {
              "name": "__46-[FIRAuth verifyPasswordResetCode:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth applyActionCode:completion:]",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth applyActionCode:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth applyActionCode:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuth applyActionCode:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth sendPasswordResetWithEmail:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth sendPasswordResetWithEmail:actionCodeSettings:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth sendPasswordResetWithNullableActionCodeSettings:email:completion:]",
              "coverage": 1
            },
            {
              "name": "__76-[FIRAuth sendPasswordResetWithNullableActionCodeSettings:email:completion:]_block_invoke",
              "coverage": 0.8095238095238095
            },
            {
              "name": "__76-[FIRAuth sendPasswordResetWithNullableActionCodeSettings:email:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__76-[FIRAuth sendPasswordResetWithNullableActionCodeSettings:email:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth sendSignInLinkToEmail:actionCodeSettings:completion:]",
              "coverage": 1
            },
            {
              "name": "__63-[FIRAuth sendSignInLinkToEmail:actionCodeSettings:completion:]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "__63-[FIRAuth sendSignInLinkToEmail:actionCodeSettings:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__63-[FIRAuth sendSignInLinkToEmail:actionCodeSettings:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth updateCurrentUser:completion:]",
              "coverage": 1
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke",
              "coverage": 0.9545454545454546
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke.539",
              "coverage": 0.625
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke_2.540",
              "coverage": 0
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke.544",
              "coverage": 1
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke.556",
              "coverage": 1
            },
            {
              "name": "__40-[FIRAuth updateCurrentUser:completion:]_block_invoke_2.557",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signOut:]",
              "coverage": 1
            },
            {
              "name": "__19-[FIRAuth signOut:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signOutByForceWithUserID:error:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRAuth isSignInWithEmailLink:]",
              "coverage": 0.76
            },
            {
              "name": "FIRAuthParseURL",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth addAuthStateDidChangeListener:]",
              "coverage": 1
            },
            {
              "name": "__41-[FIRAuth addAuthStateDidChangeListener:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth removeAuthStateDidChangeListener:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth addIDTokenDidChangeListener:]",
              "coverage": 0.8636363636363636
            },
            {
              "name": "__39-[FIRAuth addIDTokenDidChangeListener:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__39-[FIRAuth addIDTokenDidChangeListener:]_block_invoke.604",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth removeIDTokenDidChangeListener:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth useAppLanguage]",
              "coverage": 0
            },
            {
              "name": "__25-[FIRAuth useAppLanguage]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth languageCode]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth setLanguageCode:]",
              "coverage": 0
            },
            {
              "name": "__27-[FIRAuth setLanguageCode:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth additionalFrameworkMarker]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth setAdditionalFrameworkMarker:]",
              "coverage": 0
            },
            {
              "name": "__40-[FIRAuth setAdditionalFrameworkMarker:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth APNSToken]",
              "coverage": 0
            },
            {
              "name": "__20-[FIRAuth APNSToken]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth setAPNSToken:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth setAPNSToken:type:]",
              "coverage": 0
            },
            {
              "name": "__29-[FIRAuth setAPNSToken:type:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth handleAPNSTokenError:]",
              "coverage": 0
            },
            {
              "name": "__32-[FIRAuth handleAPNSTokenError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth canHandleNotification:]",
              "coverage": 0
            },
            {
              "name": "__33-[FIRAuth canHandleNotification:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth canHandleURL:]",
              "coverage": 0
            },
            {
              "name": "__24-[FIRAuth canHandleURL:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth signInWithPhoneCredential:operation:callback:]",
              "coverage": 0.6923076923076923
            },
            {
              "name": "-[FIRAuth internalSignInAndRetrieveDataWithCustomToken:completion:]",
              "coverage": 1
            },
            {
              "name": "__67-[FIRAuth internalSignInAndRetrieveDataWithCustomToken:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__67-[FIRAuth internalSignInAndRetrieveDataWithCustomToken:completion:]_block_invoke_2",
              "coverage": 0.7222222222222222
            },
            {
              "name": "-[FIRAuth internalCreateUserWithEmail:password:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth internalSignInAnonymouslyWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth possiblyPostAuthStateChangeNotification]",
              "coverage": 1
            },
            {
              "name": "__50-[FIRAuth possiblyPostAuthStateChangeNotification]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth updateKeychainWithUser:error:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "+[FIRAuth setKeychainServiceNameForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuth keychainServiceNameForAppName:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuth deleteKeychainServiceNameForAppName:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth scheduleAutoTokenRefresh]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth scheduleAutoTokenRefreshWithDelay:retry:]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRAuth scheduleAutoTokenRefreshWithDelay:retry:]_block_invoke",
              "coverage": 0.7878787878787878
            },
            {
              "name": "__51-[FIRAuth scheduleAutoTokenRefreshWithDelay:retry:]_block_invoke_2",
              "coverage": 0.9375
            },
            {
              "name": "-[FIRAuth completeSignInWithAccessToken:accessTokenExpirationDate:refreshToken:anonymous:callback:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInFlowAuthResultCallbackByDecoratingCallback:]",
              "coverage": 1
            },
            {
              "name": "__60-[FIRAuth signInFlowAuthResultCallbackByDecoratingCallback:]_block_invoke",
              "coverage": 0.6956521739130435
            },
            {
              "name": "__60-[FIRAuth signInFlowAuthResultCallbackByDecoratingCallback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__60-[FIRAuth signInFlowAuthResultCallbackByDecoratingCallback:]_block_invoke.765",
              "coverage": 0
            },
            {
              "name": "__60-[FIRAuth signInFlowAuthResultCallbackByDecoratingCallback:]_block_invoke.769",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth signInFlowAuthDataResultCallbackByDecoratingCallback:]",
              "coverage": 1
            },
            {
              "name": "__64-[FIRAuth signInFlowAuthDataResultCallbackByDecoratingCallback:]_block_invoke",
              "coverage": 0.6956521739130435
            },
            {
              "name": "__64-[FIRAuth signInFlowAuthDataResultCallbackByDecoratingCallback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__64-[FIRAuth signInFlowAuthDataResultCallbackByDecoratingCallback:]_block_invoke.779",
              "coverage": 0
            },
            {
              "name": "__64-[FIRAuth signInFlowAuthDataResultCallbackByDecoratingCallback:]_block_invoke.783",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth updateCurrentUser:byForce:savingToDisk:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth saveUser:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth getUser:error:]",
              "coverage": 0.7727272727272727
            },
            {
              "name": "+[FIRAuth componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__31+[FIRAuth componentsToRegister]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRAuth configureWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuth appWillBeDeleted:]",
              "coverage": 0
            },
            {
              "name": "__28-[FIRAuth appWillBeDeleted:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__28-[FIRAuth appWillBeDeleted:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth getTokenForcingRefresh:withCallback:]",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuth getTokenForcingRefresh:withCallback:]_block_invoke",
              "coverage": 0.82
            },
            {
              "name": "__47-[FIRAuth getTokenForcingRefresh:withCallback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuth getTokenForcingRefresh:withCallback:]_block_invoke.837",
              "coverage": 0
            },
            {
              "name": "__47-[FIRAuth getTokenForcingRefresh:withCallback:]_block_invoke.841",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuth getTokenForcingRefresh:withCallback:]_block_invoke.845",
              "coverage": 0
            },
            {
              "name": "__47-[FIRAuth getTokenForcingRefresh:withCallback:]_block_invoke_2.846",
              "coverage": 0
            },
            {
              "name": "-[FIRAuth getUserID]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSecureTokenService.m",
          "coverage": 0.8592592592592593,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSecureTokenService init]",
              "coverage": 1
            },
            {
              "name": "-[FIRSecureTokenService initWithRequestConfiguration:authorizationCode:]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenService initWithRequestConfiguration:accessToken:accessTokenExpirationDate:refreshToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSecureTokenService fetchAccessTokenForcingRefresh:callback:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRSecureTokenService fetchAccessTokenForcingRefresh:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__65-[FIRSecureTokenService fetchAccessTokenForcingRefresh:callback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRSecureTokenService rawAccessToken]",
              "coverage": 1
            },
            {
              "name": "+[FIRSecureTokenService supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRSecureTokenService initWithCoder:]",
              "coverage": 0.875
            },
            {
              "name": "-[FIRSecureTokenService encodeWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSecureTokenService requestAccessToken:]",
              "coverage": 0.8928571428571429
            },
            {
              "name": "__44-[FIRSecureTokenService requestAccessToken:]_block_invoke",
              "coverage": 0.8125
            },
            {
              "name": "-[FIRSecureTokenService hasValidAccessToken]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRUserMetadata.m",
          "coverage": 0.8636363636363636,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRUserMetadata initWithCreationDate:lastSignInDate:]",
              "coverage": 1
            },
            {
              "name": "+[FIRUserMetadata supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRUserMetadata initWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUserMetadata encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGetAccountInfoResponse.m",
          "coverage": 0.875,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGetAccountInfoResponseProviderUserInfo initWithDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGetAccountInfoResponseUser initWithDictionary:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FIRGetAccountInfoResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FIRAuthBackend.m",
          "coverage": 0.9025755879059351,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAuthBackend implementation]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "+[FIRAuthBackend setBackendImplementation:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend setDefaultBackendImplementationWithRPCIssuer:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend createAuthURI:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend getAccountInfo:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend getProjectConfig:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend setAccountInfo:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend verifyAssertion:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend verifyCustomToken:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend verifyPassword:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend emailLinkSignin:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend secureToken:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend getOOBConfirmationCode:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend signUpNewUser:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend deleteAccount:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend signInWithGameCenter:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend sendVerificationCode:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend verifyPhoneNumber:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend verifyClient:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend resetPassword:callback:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthBackend authUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCIssuerImplementation init]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCIssuerImplementation asyncPostToURLWithRequestConfiguration:URL:body:contentType:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation init]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation createAuthURI:callback:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRAuthBackendRPCImplementation createAuthURI:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation getAccountInfo:callback:]",
              "coverage": 1
            },
            {
              "name": "__59-[FIRAuthBackendRPCImplementation getAccountInfo:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation getProjectConfig:callback:]",
              "coverage": 1
            },
            {
              "name": "__61-[FIRAuthBackendRPCImplementation getProjectConfig:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation setAccountInfo:callback:]",
              "coverage": 1
            },
            {
              "name": "__59-[FIRAuthBackendRPCImplementation setAccountInfo:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation verifyAssertion:callback:]",
              "coverage": 1
            },
            {
              "name": "__60-[FIRAuthBackendRPCImplementation verifyAssertion:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation verifyCustomToken:callback:]",
              "coverage": 1
            },
            {
              "name": "__62-[FIRAuthBackendRPCImplementation verifyCustomToken:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation verifyPassword:callback:]",
              "coverage": 1
            },
            {
              "name": "__59-[FIRAuthBackendRPCImplementation verifyPassword:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation emailLinkSignin:callback:]",
              "coverage": 1
            },
            {
              "name": "__60-[FIRAuthBackendRPCImplementation emailLinkSignin:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation secureToken:callback:]",
              "coverage": 0
            },
            {
              "name": "__56-[FIRAuthBackendRPCImplementation secureToken:callback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation getOOBConfirmationCode:callback:]",
              "coverage": 1
            },
            {
              "name": "__67-[FIRAuthBackendRPCImplementation getOOBConfirmationCode:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation signUpNewUser:callback:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRAuthBackendRPCImplementation signUpNewUser:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation deleteAccount:callback:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation sendVerificationCode:callback:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRAuthBackendRPCImplementation sendVerificationCode:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation verifyPhoneNumber:callback:]",
              "coverage": 1
            },
            {
              "name": "__62-[FIRAuthBackendRPCImplementation verifyPhoneNumber:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation verifyClient:callback:]",
              "coverage": 1
            },
            {
              "name": "__57-[FIRAuthBackendRPCImplementation verifyClient:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation resetPassword:callback:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRAuthBackendRPCImplementation resetPassword:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation signInWithGameCenter:callback:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRAuthBackendRPCImplementation signInWithGameCenter:callback:]_block_invoke",
              "coverage": 0.7272727272727273
            },
            {
              "name": "-[FIRAuthBackendRPCImplementation postWithRequest:response:callback:]",
              "coverage": 0.9624060150375939
            },
            {
              "name": "__69-[FIRAuthBackendRPCImplementation postWithRequest:response:callback:]_block_invoke",
              "coverage": 0.9148936170212766
            },
            {
              "name": "+[FIRAuthBackendRPCImplementation clientErrorWithServerErrorMessage:errorDictionary:response:]",
              "coverage": 0.8870292887029289
            }
          ]
        },
        {
          "name": "FIRAuthErrorUtils.m",
          "coverage": 0.9050736497545008,
          "type": "objc",
          "functions": [
            {
              "name": "FIRAuthErrorDescription",
              "coverage": 0.9047619047619048
            },
            {
              "name": "FIRAuthErrorCodeString",
              "coverage": 0.9444444444444444
            },
            {
              "name": "+[FIRAuthErrorUtils errorWithCode:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils errorWithCode:message:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils errorWithCode:underlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils errorWithCode:userInfo:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils RPCRequestEncodingErrorWithUnderlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils JSONSerializationErrorForUnencodableType]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils JSONSerializationErrorWithUnderlyingError:]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils networkErrorWithUnderlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils unexpectedErrorResponseWithData:underlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils unexpectedErrorResponseWithDeserializedResponse:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils malformedJWTErrorWithToken:underlyingError:]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils unexpectedResponseWithData:underlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:underlyingError:]",
              "coverage": 0.8
            },
            {
              "name": "+[FIRAuthErrorUtils RPCResponseDecodingErrorWithDeserializedResponse:underlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils emailAlreadyInUseErrorWithEmail:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils userDisabledErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils wrongPasswordErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils tooManyRequestsErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidCustomTokenErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils customTokenMistmatchErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidCredentialErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils requiresRecentLoginErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidUserTokenErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidEmailErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils accountExistsWithDifferentCredentialErrorWithEmail:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils providerAlreadyLinkedError]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils noSuchProviderError]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils userTokenExpiredErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils userNotFoundErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidAPIKeyError]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils userMismatchError]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils credentialAlreadyInUseErrorWithMessage:credential:email:]",
              "coverage": 0.8947368421052632
            },
            {
              "name": "+[FIRAuthErrorUtils operationNotAllowedErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils weakPasswordErrorWithServerResponseReason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils appNotAuthorizedError]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils expiredActionCodeErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidActionCodeErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidMessagePayloadErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidSenderErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidRecipientEmailErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingIosBundleIDErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingAndroidPackageNameErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils unauthorizedDomainErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidContinueURIErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingContinueURIErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingEmailErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingPhoneNumberErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidPhoneNumberErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingVerificationCodeErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidVerificationCodeErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingVerificationIDErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidVerificationIDErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils sessionExpiredErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingAppCredentialWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidAppCredentialWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils quotaExceededErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils missingAppTokenErrorWithUnderlyingError:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils localPlayerNotAuthenticatedError]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils gameKitNotLinkedError]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils notificationNotForwardedError]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils appNotVerifiedErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils captchaCheckFailedErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils webContextAlreadyPresentedErrorWithMessage:]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils webContextCancelledErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils appVerificationUserInteractionFailureWithReason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils webSignInUserInteractionFailureWithReason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils URLResponseErrorWithCode:message:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils nullUserErrorWithMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthErrorUtils invalidDynamicLinkDomainErrorWithMessage:]",
              "coverage": 0
            },
            {
              "name": "+[FIRAuthErrorUtils keychainErrorWithFunction:status:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthAppCredential.m",
          "coverage": 0.9130434782608695,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthAppCredential initWithReceipt:secret:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthAppCredential supportsSecureCoding]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredential initWithCoder:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAuthAppCredential encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAdditionalUserInfo.m",
          "coverage": 0.925,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAdditionalUserInfo userInfoWithVerifyAssertionResponse:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAdditionalUserInfo initWithProviderID:profile:username:isNewUser:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAdditionalUserInfo supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRAdditionalUserInfo initWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAdditionalUserInfo encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyPhoneNumberRequest.m",
          "coverage": 0.9272727272727272,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyPhoneNumberRequest initWithTemporaryProof:phoneNumber:operation:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRVerifyPhoneNumberRequest initWithVerificationID:verificationCode:operation:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "FIRAuthOperationString",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRVerifyPhoneNumberRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRUserInfoImpl.m",
          "coverage": 0.9387755102040817,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRUserInfoImpl userInfoWithGetAccountInfoResponseProviderUserInfo:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUserInfoImpl initWithProviderID:userID:displayName:photoURL:email:phoneNumber:]",
              "coverage": 1
            },
            {
              "name": "+[FIRUserInfoImpl supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[FIRUserInfoImpl initWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRUserInfoImpl encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthNotificationManager.m",
          "coverage": 0.9391304347826087,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthNotificationManager initWithApplication:appCredentialManager:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthNotificationManager checkNotificationForwardingWithCallback:]",
              "coverage": 1
            },
            {
              "name": "__70-[FIRAuthNotificationManager checkNotificationForwardingWithCallback:]_block_invoke",
              "coverage": 0.8260869565217391
            },
            {
              "name": "__70-[FIRAuthNotificationManager checkNotificationForwardingWithCallback:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__70-[FIRAuthNotificationManager checkNotificationForwardingWithCallback:]_block_invoke.33",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthNotificationManager canHandleNotification:]",
              "coverage": 0.9310344827586207
            },
            {
              "name": "-[FIRAuthNotificationManager callBack]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAuthWebUtils.m",
          "coverage": 0.9507042253521126,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAuthWebUtils randomStringWithLength:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthWebUtils isCallbackSchemeRegisteredForCustomURLScheme:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthWebUtils isExpectedCallbackURL:eventID:authType:callbackScheme:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthWebUtils fetchAuthDomainWithRequestConfiguration:completion:]",
              "coverage": 1
            },
            {
              "name": "__70+[FIRAuthWebUtils fetchAuthDomainWithRequestConfiguration:completion:]_block_invoke",
              "coverage": 0.7142857142857143
            },
            {
              "name": "+[FIRAuthWebUtils queryItemValue:from:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthWebUtils dictionaryWithHttpArgumentsString:]",
              "coverage": 0.9642857142857143
            },
            {
              "name": "+[FIRAuthWebUtils stringByUnescapingFromURLArgument:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRPhoneAuthProvider.m",
          "coverage": 0.9618320610687023,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRPhoneAuthProvider initWithAuth:]",
              "coverage": 1
            },
            {
              "name": "-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke.33",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke_2.42",
              "coverage": 0.9302325581395349
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke_3.43",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke.52",
              "coverage": 1
            },
            {
              "name": "__64-[FIRPhoneAuthProvider verifyPhoneNumber:UIDelegate:completion:]_block_invoke_2.63",
              "coverage": 0.5714285714285714
            },
            {
              "name": "-[FIRPhoneAuthProvider credentialWithVerificationID:verificationCode:]",
              "coverage": 1
            },
            {
              "name": "+[FIRPhoneAuthProvider provider]",
              "coverage": 1
            },
            {
              "name": "+[FIRPhoneAuthProvider providerWithAuth:]",
              "coverage": 1
            },
            {
              "name": "-[FIRPhoneAuthProvider reCAPTCHATokenForURL:error:]",
              "coverage": 0.8717948717948718
            },
            {
              "name": "-[FIRPhoneAuthProvider internalVerifyPhoneNumber:completion:]",
              "coverage": 1
            },
            {
              "name": "__61-[FIRPhoneAuthProvider internalVerifyPhoneNumber:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__61-[FIRPhoneAuthProvider internalVerifyPhoneNumber:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRPhoneAuthProvider verifyClientAndSendVerificationCodeToPhoneNumber:retryOnInvalidAppCredential:callback:]",
              "coverage": 1
            },
            {
              "name": "__110-[FIRPhoneAuthProvider verifyClientAndSendVerificationCodeToPhoneNumber:retryOnInvalidAppCredential:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__110-[FIRPhoneAuthProvider verifyClientAndSendVerificationCodeToPhoneNumber:retryOnInvalidAppCredential:callback:]_block_invoke.163",
              "coverage": 1
            },
            {
              "name": "__110-[FIRPhoneAuthProvider verifyClientAndSendVerificationCodeToPhoneNumber:retryOnInvalidAppCredential:callback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRPhoneAuthProvider verifyClientWithCompletion:]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRPhoneAuthProvider verifyClientWithCompletion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__51-[FIRPhoneAuthProvider verifyClientWithCompletion:]_block_invoke_2",
              "coverage": 0.8333333333333334
            },
            {
              "name": "__51-[FIRPhoneAuthProvider verifyClientWithCompletion:]_block_invoke_3",
              "coverage": 0.5
            },
            {
              "name": "-[FIRPhoneAuthProvider reCAPTCHAURLWithEventID:completion:]",
              "coverage": 1
            },
            {
              "name": "__59-[FIRPhoneAuthProvider reCAPTCHAURLWithEventID:completion:]_block_invoke",
              "coverage": 0.7586206896551724
            }
          ]
        },
        {
          "name": "FIRVerifyAssertionRequest.m",
          "coverage": 0.9710144927536232,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyAssertionRequest initWithProviderID:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRVerifyAssertionRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 0.9655172413793104
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthAppDelegateProxy.m",
          "coverage": 0.9820359281437125,
          "type": "objc",
          "functions": [
            {
              "name": "noop",
              "coverage": 1
            },
            {
              "name": "isIOS9orLater",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRAuthAppDelegateProxy initWithApplication:]",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.167",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.177",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.184",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.194",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.201",
              "coverage": 1
            },
            {
              "name": "__47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.208",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy addHandler:]",
              "coverage": 1
            },
            {
              "name": "+[FIRAuthAppDelegateProxy sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__41+[FIRAuthAppDelegateProxy sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:didRegisterForRemoteNotificationsWithDeviceToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:didFailToRegisterForRemoteNotificationsWithError:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:didReceiveRemoteNotification:fetchCompletionHandler:]",
              "coverage": 0.9411764705882353
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:didReceiveRemoteNotification:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:openURL:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:openURL:sourceApplication:annotation:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRAuthAppDelegateProxy object:selector:application:handleOpenURL:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRAuthAppDelegateProxy delegateCanHandleURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy handlers]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy replaceSelector:withBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppDelegateProxy originalImplementationForSelector:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyAssertionResponse.m",
          "coverage": 0.9827586206896551,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyAssertionResponse setWithDictionary:error:]",
              "coverage": 0.9827586206896551
            }
          ]
        },
        {
          "name": "FIRGetOOBConfirmationCodeRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRGetOOBConfirmationCodeRequest requestTypeStringValueForRequestType:]",
              "coverage": 1
            },
            {
              "name": "+[FIRGetOOBConfirmationCodeRequest passwordResetRequestWithEmail:actionCodeSettings:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "+[FIRGetOOBConfirmationCodeRequest verifyEmailRequestWithAccessToken:actionCodeSettings:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "+[FIRGetOOBConfirmationCodeRequest signInWithEmailLinkRequest:actionCodeSettings:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGetOOBConfirmationCodeRequest initWithRequestType:email:accessToken:actionCodeSettings:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGetOOBConfirmationCodeRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGetOOBConfirmationCodeResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGetOOBConfirmationCodeResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGetProjectConfigRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGetProjectConfigRequest initWithRequestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGetProjectConfigRequest containsPostBody]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSData+FIRBase64.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSData(FIRBase64) fir_base64URLEncodedStringWithOptions:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRResetPasswordRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRResetPasswordRequest initWithOobCode:newPassword:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRResetPasswordRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRResetPasswordResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRResetPasswordResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthUserDefaultsStorage.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthUserDefaultsStorage initWithService:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthUserDefaultsStorage dataForKey:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthUserDefaultsStorage setData:forKey:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthUserDefaultsStorage removeDataForKey:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthUserDefaultsStorage clear]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthSettings.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthSettings init]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSendVerificationCodeRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSendVerificationCodeRequest initWithPhoneNumber:appCredential:reCAPTCHAToken:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSendVerificationCodeRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthSerialTaskQueue.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthSerialTaskQueue init]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthSerialTaskQueue enqueueTask:]",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuthSerialTaskQueue enqueueTask:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__38-[FIRAuthSerialTaskQueue enqueueTask:]_block_invoke_2",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSetAccountInfoRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSetAccountInfoRequest initWithRequestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSetAccountInfoRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSetAccountInfoResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSetAccountInfoResponseProviderUserInfo initWithDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSetAccountInfoResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSignInWithGameCenterRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSignInWithGameCenterRequest initWithPlayerID:publicKeyURL:signature:salt:timestamp:displayName:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSignInWithGameCenterRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSignInWithGameCenterResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSignInWithGameCenterResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSignUpNewUserRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSignUpNewUserRequest initWithEmail:password:displayName:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSignUpNewUserRequest initWithRequestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRSignUpNewUserRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRSignUpNewUserResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRSignUpNewUserResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyClientRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyClientRequest initWithAppToken:isSandbox:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRVerifyClientRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRCreateAuthURIResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRCreateAuthURIResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyCustomTokenRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyCustomTokenRequest initWithToken:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRVerifyCustomTokenRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyCustomTokenResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyCustomTokenResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyPasswordRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyPasswordRequest initWithEmail:password:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRVerifyPasswordRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyPasswordResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyPasswordResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthGlobalWorkQueue.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "FIRAuthGlobalWorkQueue",
              "coverage": 1
            },
            {
              "name": "__FIRAuthGlobalWorkQueue_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthDispatcher.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAuthDispatcher sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__35+[FIRAuthDispatcher sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthDispatcher dispatchAfterDelay:queue:task:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthAppCredentialManager.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthAppCredentialManager initWithKeychain:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredentialManager maximumNumberOfPendingReceipts]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredentialManager didStartVerificationWithReceipt:timeout:callback:]",
              "coverage": 1
            },
            {
              "name": "__80-[FIRAuthAppCredentialManager didStartVerificationWithReceipt:timeout:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredentialManager canFinishVerificationWithReceipt:secret:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredentialManager clearCredential]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredentialManager saveData]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAppCredentialManager callBackWithReceipt:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthAPNSToken.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthAPNSToken initWithData:type:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthAPNSToken string]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRActionCodeSettings.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRActionCodeSettings init]",
              "coverage": 1
            },
            {
              "name": "-[FIRActionCodeSettings setIOSBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRActionCodeSettings setAndroidPackageName:installIfNotAvailable:minimumVersion:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRVerifyClientResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRVerifyClientResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDeleteAccountRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDeleteAccountRequest initWitLocalID:accessToken:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDeleteAccountRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDeleteAccountResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDeleteAccountResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIREmailLinkSignInRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIREmailLinkSignInRequest initWithEmail:oobCode:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIREmailLinkSignInRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIREmailLinkSignInResponse.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIREmailLinkSignInResponse setWithDictionary:error:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRGetAccountInfoRequest.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRGetAccountInfoRequest initWithAccessToken:requestConfiguration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRGetAccountInfoRequest unencodedHTTPRequestBodyWithError:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthRequestConfiguration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthRequestConfiguration initWithAPIKey:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "Core_Example_iOS.app",
      "coverage": 0.8861788617886179,
      "files": [
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.26666666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "Database_Example_iOS.app",
      "coverage": 0.6189063408958697,
      "files": [
        {
          "name": "FTupleStringNode.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleStringNode initWithString:andNode:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRNoopAuthTokenProvider.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRNoopAuthTokenProvider fetchTokenForcingRefresh:withCallback:]",
              "coverage": 0
            },
            {
              "name": "__66-[FIRNoopAuthTokenProvider fetchTokenForcingRefresh:withCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRNoopAuthTokenProvider listenForTokenChanges:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FPendingPut.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FPendingPut initWithPath:andData:andPriority:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingPut encodeWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingPut initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingPutPriority initWithPath:andPriority:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingPutPriority encodeWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingPutPriority initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingUpdate initWithPath:andData:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingUpdate encodeWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FPendingUpdate initWithCoder:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FListenComplete.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FListenComplete initWithSource:path:]",
              "coverage": 0
            },
            {
              "name": "-[FListenComplete operationForChild:]",
              "coverage": 0
            },
            {
              "name": "-[FListenComplete description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRServerValue.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRServerValue timestamp]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FValueEventRegistration.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FValueEventRegistration initWithRepo:handle:callback:cancelCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FValueEventRegistration responseTo:]",
              "coverage": 0
            },
            {
              "name": "-[FValueEventRegistration createEventFrom:query:]",
              "coverage": 0
            },
            {
              "name": "-[FValueEventRegistration fireEvent:queue:]",
              "coverage": 0
            },
            {
              "name": "__43-[FValueEventRegistration fireEvent:queue:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__43-[FValueEventRegistration fireEvent:queue:]_block_invoke.57",
              "coverage": 0
            },
            {
              "name": "-[FValueEventRegistration createCancelEventFromError:path:]",
              "coverage": 0
            },
            {
              "name": "-[FValueEventRegistration matches:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FKeepSyncedEventRegistration.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[FKeepSyncedEventRegistration instance]",
              "coverage": 0
            },
            {
              "name": "__40+[FKeepSyncedEventRegistration instance]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FKeepSyncedEventRegistration responseTo:]",
              "coverage": 0
            },
            {
              "name": "-[FKeepSyncedEventRegistration createEventFrom:query:]",
              "coverage": 0
            },
            {
              "name": "-[FKeepSyncedEventRegistration fireEvent:queue:]",
              "coverage": 0
            },
            {
              "name": "-[FKeepSyncedEventRegistration createCancelEventFromError:path:]",
              "coverage": 0
            },
            {
              "name": "-[FKeepSyncedEventRegistration handle]",
              "coverage": 0
            },
            {
              "name": "-[FKeepSyncedEventRegistration matches:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FChildEventRegistration.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FChildEventRegistration initWithRepo:handle:callbacks:cancelCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FChildEventRegistration responseTo:]",
              "coverage": 0
            },
            {
              "name": "-[FChildEventRegistration createEventFrom:query:]",
              "coverage": 0
            },
            {
              "name": "-[FChildEventRegistration fireEvent:queue:]",
              "coverage": 0
            },
            {
              "name": "__43-[FChildEventRegistration fireEvent:queue:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__43-[FChildEventRegistration fireEvent:queue:]_block_invoke.68",
              "coverage": 0
            },
            {
              "name": "-[FChildEventRegistration createCancelEventFromError:path:]",
              "coverage": 0
            },
            {
              "name": "-[FChildEventRegistration matches:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FCancelEvent.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FCancelEvent initWithEventRegistration:error:path:]",
              "coverage": 0
            },
            {
              "name": "-[FCancelEvent fireEventOnQueue:]",
              "coverage": 0
            },
            {
              "name": "-[FCancelEvent isCancelEvent]",
              "coverage": 0
            },
            {
              "name": "-[FCancelEvent description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FEventEmitter.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FEventEmitter initWithAllowedEvents:queue:]",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter getInitialEventForType:]",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter triggerEventType:data:]",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter triggerListener:withData:]",
              "coverage": 0
            },
            {
              "name": "__42-[FEventEmitter triggerListener:withData:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter observeEventType:withBlock:]",
              "coverage": 0
            },
            {
              "name": "__44-[FEventEmitter observeEventType:withBlock:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter addEventListener:forEventType:]",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter removeObserverForEventType:withHandle:]",
              "coverage": 0
            },
            {
              "name": "__55-[FEventEmitter removeObserverForEventType:withHandle:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter removeEventListenerWithHandle:forEventType:]",
              "coverage": 0
            },
            {
              "name": "-[FEventEmitter validateEventType:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FNextPushId.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[FNextPushId get:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRTransactionResult.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRTransactionResult successWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[FIRTransactionResult abort]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTupleNodePath.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleNodePath initWithNode:andPath:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTupleObjectNode.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleObjectNode initWithObject:andNode:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTupleUserCallback.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleUserCallback initWithHandle:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTupleSetIdPath.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleSetIdPath initWithSetId:andPath:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTupleTransaction.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleTransaction setAbortStatus:reason:]",
              "coverage": 0
            },
            {
              "name": "-[FTupleTransaction abortError]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDatabaseQuery.m",
          "coverage": 0.05921052631578947,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDatabaseQuery sharedQueue]",
              "coverage": 1
            },
            {
              "name": "__31+[FIRDatabaseQuery sharedQueue]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabaseQuery initWithRepo:path:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery initWithRepo:path:params:orderByCalled:priorityMethodCalled:]",
              "coverage": 0.7647058823529411
            },
            {
              "name": "-[FIRDatabaseQuery querySpec]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery validateQueryEndpointsForParams:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery validateEqualToCall]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery validateNoPreviousOrderByCalled]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery validateIndexValueType:fromMethod:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryStartingAtValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryStartingAtValue:childKey:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryStartingAtInternal:childKey:from:priorityMethod:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryEndingAtValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryEndingAtValue:childKey:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryEndingAtInternal:childKey:from:priorityMethod:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryEqualToValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryEqualToValue:childKey:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryEqualToInternal:childKey:from:priorityMethod:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery validateLimitRange:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryLimitedToFirst:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryLimitedToLast:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryOrderedByChild:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryOrderedByKey]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryOrderedByValue]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery queryOrderedByPriority]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeEventType:withBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeEventType:andPreviousSiblingKeyWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeEventType:withBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "__63-[FIRDatabaseQuery observeEventType:withBlock:withCancelBlock:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeEventType:andPreviousSiblingKeyWithBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeValueEventWithHandle:withBlock:cancelCallback:]",
              "coverage": 0
            },
            {
              "name": "__73-[FIRDatabaseQuery observeValueEventWithHandle:withBlock:cancelCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeChildEventWithHandle:withCallbacks:cancelCallback:]",
              "coverage": 0
            },
            {
              "name": "__77-[FIRDatabaseQuery observeChildEventWithHandle:withCallbacks:cancelCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery removeObserverWithHandle:]",
              "coverage": 0
            },
            {
              "name": "__45-[FIRDatabaseQuery removeObserverWithHandle:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery removeAllObservers]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery keepSynced:]",
              "coverage": 0
            },
            {
              "name": "__31-[FIRDatabaseQuery keepSynced:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeSingleEventOfType:withBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeSingleEventOfType:andPreviousSiblingKeyWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeSingleEventOfType:withBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "__71-[FIRDatabaseQuery observeSingleEventOfType:withBlock:withCancelBlock:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery observeSingleEventOfType:andPreviousSiblingKeyWithBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "__92-[FIRDatabaseQuery observeSingleEventOfType:andPreviousSiblingKeyWithBlock:withCancelBlock:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__92-[FIRDatabaseQuery observeSingleEventOfType:andPreviousSiblingKeyWithBlock:withCancelBlock:]_block_invoke.278",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery description]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseQuery ref]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTree.m",
          "coverage": 0.0625,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTree init]",
              "coverage": 1
            },
            {
              "name": "-[FTree initWithName:withParent:withNode:]",
              "coverage": 0
            },
            {
              "name": "-[FTree subTree:]",
              "coverage": 0
            },
            {
              "name": "-[FTree getValue]",
              "coverage": 0
            },
            {
              "name": "-[FTree setValue:]",
              "coverage": 0
            },
            {
              "name": "-[FTree clear]",
              "coverage": 0
            },
            {
              "name": "-[FTree hasChildren]",
              "coverage": 0
            },
            {
              "name": "-[FTree isEmpty]",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachChild:]",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachChildMutationSafe:]",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachDescendant:]",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachDescendant:includeSelf:childrenFirst:]",
              "coverage": 0
            },
            {
              "name": "__53-[FTree forEachDescendant:includeSelf:childrenFirst:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachAncestor:]",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachAncestor:includeSelf:]",
              "coverage": 0
            },
            {
              "name": "-[FTree forEachImmediateDescendantWithValue:]",
              "coverage": 0
            },
            {
              "name": "__45-[FTree forEachImmediateDescendantWithValue:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FTree valueExistsAtOrAbove:]",
              "coverage": 0
            },
            {
              "name": "-[FTree path]",
              "coverage": 0
            },
            {
              "name": "-[FTree updateParents]",
              "coverage": 0
            },
            {
              "name": "-[FTree updateChild:withNode:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDatabaseReference.m",
          "coverage": 0.0912280701754386,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDatabaseReference initWithConfig:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference initWithRepo:path:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabaseReference key]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabaseReference database]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference parent]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference URL]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference description]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference root]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference childByAppendingPath:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference child:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabaseReference childByAutoId]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setValue:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setValue:andPriority:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setValue:andPriority:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setValueInternal:andPriority:withCompletionBlock:from:]",
              "coverage": 0
            },
            {
              "name": "__78-[FIRDatabaseReference setValueInternal:andPriority:withCompletionBlock:from:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference removeValue]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference removeValueWithCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setPriority:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setPriority:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference setPriorityInternal:withCompletionBlock:from:]",
              "coverage": 0
            },
            {
              "name": "__69-[FIRDatabaseReference setPriorityInternal:withCompletionBlock:from:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference updateChildValues:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference updateChildValues:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference updateChildValuesInternal:withCompletionBlock:from:]",
              "coverage": 0
            },
            {
              "name": "__75-[FIRDatabaseReference updateChildValuesInternal:withCompletionBlock:from:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectSetValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectSetValue:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectSetValue:andPriority:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectSetValue:andPriority:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectSetValueInternal:andPriority:withCompletionBlock:from:]",
              "coverage": 0
            },
            {
              "name": "__90-[FIRDatabaseReference onDisconnectSetValueInternal:andPriority:withCompletionBlock:from:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectRemoveValue]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectRemoveValueWithCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectUpdateChildValues:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectUpdateChildValues:withCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference onDisconnectUpdateChildValuesInternal:withCompletionBlock:from:]",
              "coverage": 0
            },
            {
              "name": "__87-[FIRDatabaseReference onDisconnectUpdateChildValuesInternal:withCompletionBlock:from:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference cancelDisconnectOperations]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference cancelDisconnectOperationsWithCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "__70-[FIRDatabaseReference cancelDisconnectOperationsWithCompletionBlock:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabaseReference goOffline]",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabaseReference goOnline]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeEventType:withBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeEventType:andPreviousSiblingKeyWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeEventType:withBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeEventType:andPreviousSiblingKeyWithBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference removeObserverWithHandle:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference removeAllObservers]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference keepSynced:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeSingleEventOfType:withBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeSingleEventOfType:andPreviousSiblingKeyWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeSingleEventOfType:withBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference observeSingleEventOfType:andPreviousSiblingKeyWithBlock:withCancelBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryLimitedToFirst:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryLimitedToLast:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryOrderedByChild:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryOrderedByKey]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryOrderedByPriority]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryStartingAtValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryStartingAtValue:childKey:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryEndingAtValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryEndingAtValue:childKey:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryEqualToValue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference queryEqualToValue:childKey:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference runTransactionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference runTransactionBlock:andCompletionBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseReference runTransactionBlock:andCompletionBlock:withLocalEvents:]",
              "coverage": 0
            },
            {
              "name": "__79-[FIRDatabaseReference runTransactionBlock:andCompletionBlock:withLocalEvents:]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FRepo.m",
          "coverage": 0.14897260273972604,
          "type": "objc",
          "functions": [
            {
              "name": "-[FRepo initWithRepoInfo:config:database:]",
              "coverage": 1
            },
            {
              "name": "__42-[FRepo initWithRepoInfo:config:database:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FRepo deferredInit]",
              "coverage": 0.8089887640449438
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke.99",
              "coverage": 0
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke.128",
              "coverage": 0
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke_2.138",
              "coverage": 0
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__21-[FRepo deferredInit]_block_invoke.149",
              "coverage": 0
            },
            {
              "name": "-[FRepo restoreWrites]",
              "coverage": 1
            },
            {
              "name": "__22-[FRepo restoreWrites]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__22-[FRepo restoreWrites]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FRepo name]",
              "coverage": 0
            },
            {
              "name": "-[FRepo description]",
              "coverage": 0
            },
            {
              "name": "-[FRepo interrupt]",
              "coverage": 0
            },
            {
              "name": "-[FRepo resume]",
              "coverage": 0
            },
            {
              "name": "-[FRepo dispose]",
              "coverage": 0
            },
            {
              "name": "-[FRepo nextWriteId]",
              "coverage": 0
            },
            {
              "name": "-[FRepo serverTime]",
              "coverage": 0
            },
            {
              "name": "-[FRepo set:withNode:withCallback:]",
              "coverage": 0
            },
            {
              "name": "__35-[FRepo set:withNode:withCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo update:withNodes:withCallback:]",
              "coverage": 0
            },
            {
              "name": "__39-[FRepo update:withNodes:withCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__39-[FRepo update:withNodes:withCallback:]_block_invoke.278",
              "coverage": 0
            },
            {
              "name": "-[FRepo onDisconnectCancel:withCallback:]",
              "coverage": 0
            },
            {
              "name": "__41-[FRepo onDisconnectCancel:withCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo onDisconnectSet:withNode:withCallback:]",
              "coverage": 0
            },
            {
              "name": "__47-[FRepo onDisconnectSet:withNode:withCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo onDisconnectUpdate:withNodes:withCallback:]",
              "coverage": 0
            },
            {
              "name": "__51-[FRepo onDisconnectUpdate:withNodes:withCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__51-[FRepo onDisconnectUpdate:withNodes:withCallback:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FRepo purgeOutstandingWrites]",
              "coverage": 0
            },
            {
              "name": "-[FRepo addEventRegistration:forQuery:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo removeEventRegistration:forQuery:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo keepQuery:synced:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo updateInfo:withValue:]",
              "coverage": 0.7692307692307693
            },
            {
              "name": "-[FRepo callOnComplete:withStatus:errorReason:andPath:]",
              "coverage": 0
            },
            {
              "name": "__55-[FRepo callOnComplete:withStatus:errorReason:andPath:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo ackWrite:rerunTransactionsAtPath:status:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo warnIfWriteFailedAtPath:status:message:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo onDataUpdate:forPath:message:isMerge:tagId:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo onRangeMerge:forPath:tagId:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo onConnect:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo onDisconnect:]",
              "coverage": 1
            },
            {
              "name": "-[FRepo onServerInfoUpdate:updates:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo setupNotifications]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FRepo didEnterBackground]",
              "coverage": 0
            },
            {
              "name": "__27-[FRepo didEnterBackground]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__27-[FRepo didEnterBackground]_block_invoke.466",
              "coverage": 0
            },
            {
              "name": "-[FRepo runOnDisconnectEvents]",
              "coverage": 1
            },
            {
              "name": "__30-[FRepo runOnDisconnectEvents]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo dumpListens]",
              "coverage": 0
            },
            {
              "name": "-[FRepo initTransactions]",
              "coverage": 1
            },
            {
              "name": "-[FRepo startTransactionOnPath:update:onComplete:withLocalEvents:]",
              "coverage": 0
            },
            {
              "name": "__66-[FRepo startTransactionOnPath:update:onComplete:withLocalEvents:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__66-[FRepo startTransactionOnPath:update:onComplete:withLocalEvents:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__66-[FRepo startTransactionOnPath:update:onComplete:withLocalEvents:]_block_invoke.571",
              "coverage": 0
            },
            {
              "name": "-[FRepo latestStateAtPath:excludeWriteIds:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo sendAllReadyTransactions]",
              "coverage": 0
            },
            {
              "name": "-[FRepo sendReadyTransactionsForTree:]",
              "coverage": 0
            },
            {
              "name": "__38-[FRepo sendReadyTransactionsForTree:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__38-[FRepo sendReadyTransactionsForTree:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FRepo sendTransactionQueue:atPath:]",
              "coverage": 0
            },
            {
              "name": "__37-[FRepo sendTransactionQueue:atPath:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__37-[FRepo sendTransactionQueue:atPath:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FRepo rerunTransactionsForPath:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo rerunTransactionQueue:atPath:]",
              "coverage": 0
            },
            {
              "name": "__38-[FRepo rerunTransactionQueue:atPath:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo getAncestorTransactionNodeForPath:]",
              "coverage": 0
            },
            {
              "name": "-[FRepo buildTransactionQueueAtNode:]",
              "coverage": 0
            },
            {
              "name": "__37-[FRepo buildTransactionQueueAtNode:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo aggregateTransactionQueuesForNode:andQueue:]",
              "coverage": 0
            },
            {
              "name": "__52-[FRepo aggregateTransactionQueuesForNode:andQueue:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo pruneCompletedTransactionsBelowNode:]",
              "coverage": 0
            },
            {
              "name": "__45-[FRepo pruneCompletedTransactionsBelowNode:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FRepo abortTransactionsAtPath:error:]",
              "coverage": 0
            },
            {
              "name": "__39-[FRepo abortTransactionsAtPath:error:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__39-[FRepo abortTransactionsAtPath:error:]_block_invoke.715",
              "coverage": 0
            },
            {
              "name": "-[FRepo abortTransactionsAtNode:error:]",
              "coverage": 0
            },
            {
              "name": "__39-[FRepo abortTransactionsAtNode:error:]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FCachePolicy.m",
          "coverage": 0.17647058823529413,
          "type": "objc",
          "functions": [
            {
              "name": "-[FLRUCachePolicy initWithMaxSize:]",
              "coverage": 0
            },
            {
              "name": "-[FLRUCachePolicy shouldPruneCacheWithSize:numberOfTrackedQueries:]",
              "coverage": 0
            },
            {
              "name": "-[FLRUCachePolicy shouldCheckCacheSize:]",
              "coverage": 0
            },
            {
              "name": "-[FLRUCachePolicy percentOfQueriesToPruneAtOnce]",
              "coverage": 0
            },
            {
              "name": "-[FLRUCachePolicy maxNumberOfQueriesToKeep]",
              "coverage": 0
            },
            {
              "name": "+[FNoCachePolicy noCachePolicy]",
              "coverage": 1
            },
            {
              "name": "-[FNoCachePolicy shouldPruneCacheWithSize:numberOfTrackedQueries:]",
              "coverage": 0
            },
            {
              "name": "-[FNoCachePolicy shouldCheckCacheSize:]",
              "coverage": 1
            },
            {
              "name": "-[FNoCachePolicy percentOfQueriesToPruneAtOnce]",
              "coverage": 0
            },
            {
              "name": "-[FNoCachePolicy maxNumberOfQueriesToKeep]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDatabase.m",
          "coverage": 0.1986754966887417,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDatabase database]",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabase databaseWithURL:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabase databaseForApp:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabase databaseForApp:URL:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabase buildVersion]",
              "coverage": 1
            },
            {
              "name": "+[FIRDatabase createDatabaseForTests:config:]",
              "coverage": 1
            },
            {
              "name": "+[FIRDatabase sdkVersion]",
              "coverage": 1
            },
            {
              "name": "+[FIRDatabase setLoggingEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabase initWithApp:repoInfo:config:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabase reference]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase referenceWithPath:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase referenceFromURL:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase purgeOutstandingWrites]",
              "coverage": 0
            },
            {
              "name": "__37-[FIRDatabase purgeOutstandingWrites]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase goOnline]",
              "coverage": 0
            },
            {
              "name": "__23-[FIRDatabase goOnline]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase goOffline]",
              "coverage": 0
            },
            {
              "name": "__24-[FIRDatabase goOffline]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase setPersistenceEnabled:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase persistenceEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase setPersistenceCacheSizeBytes:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase persistenceCacheSizeBytes]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase setCallbackQueue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase callbackQueue]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase assertUnfrozen:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabase ensureRepo]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDatabaseComponent.m",
          "coverage": 0.2,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDatabaseComponent initWithApp:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDatabaseComponent load]",
              "coverage": 1
            },
            {
              "name": "+[FIRDatabaseComponent componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__44+[FIRDatabaseComponent componentsToRegister]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseComponent appWillBeDeleted:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseComponent databaseForApp:URL:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FPersistentConnection.m",
          "coverage": 0.23169398907103825,
          "type": "objc",
          "functions": [
            {
              "name": "-[FPersistentConnection initWithRepoInfo:dispatchQueue:config:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistentConnection dealloc]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection open]",
              "coverage": 1
            },
            {
              "name": "-[FPersistentConnection listen:tagId:hash:onComplete:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection putData:forPath:withHash:withCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection mergeData:forPath:withCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onDisconnectPutData:forPath:withCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onDisconnectMergeData:forPath:withCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onDisconnectCancelPath:withCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection unlisten:tagId:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection refreshAuthToken:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection connected]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection canSendWrites]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onReady:atTime:sessionID:]",
              "coverage": 0
            },
            {
              "name": "__50-[FPersistentConnection onReady:atTime:sessionID:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onDataMessage:withMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onDisconnect:withReason:]",
              "coverage": 0.88
            },
            {
              "name": "-[FPersistentConnection onKill:withReason:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection interruptForReason:]",
              "coverage": 0.8
            },
            {
              "name": "-[FPersistentConnection resumeForReason:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistentConnection shouldReconnect]",
              "coverage": 1
            },
            {
              "name": "-[FPersistentConnection isInterruptedForReason:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection tryScheduleReconnect]",
              "coverage": 1
            },
            {
              "name": "__45-[FPersistentConnection tryScheduleReconnect]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__45-[FPersistentConnection tryScheduleReconnect]_block_invoke_2",
              "coverage": 0.5909090909090909
            },
            {
              "name": "-[FPersistentConnection openNetworkConnectionWithToken:]",
              "coverage": 1
            },
            {
              "name": "reachabilityCallback",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection enteringForeground]",
              "coverage": 0
            },
            {
              "name": "__43-[FPersistentConnection enteringForeground]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection setupNotifications]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FPersistentConnection sendAuthAndRestoreStateAfterComplete:]",
              "coverage": 0
            },
            {
              "name": "__62-[FPersistentConnection sendAuthAndRestoreStateAfterComplete:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendUnauth]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onAuthRevokedWithStatus:andReason:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onListenRevoked:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendOnDisconnectAction:forPath:withData:andCallback:]",
              "coverage": 0
            },
            {
              "name": "__77-[FPersistentConnection sendOnDisconnectAction:forPath:withData:andCallback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendPut:]",
              "coverage": 0
            },
            {
              "name": "__33-[FPersistentConnection sendPut:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendUnlisten:queryParams:tagId:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection putInternal:forAction:forPath:withHash:withCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendListen:]",
              "coverage": 0
            },
            {
              "name": "__36-[FPersistentConnection sendListen:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection warnOnListenWarningsForQuery:payload:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection getNextRequestNumber]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendAction:body:sensitive:callback:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection cancelSentTransactions]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "__47-[FPersistentConnection cancelSentTransactions]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection onDataPushWithAction:andBody:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection restoreAuth]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection restoreState]",
              "coverage": 0
            },
            {
              "name": "__37-[FPersistentConnection restoreState]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection removeListen:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection removeAllListensAtPath:]",
              "coverage": 0
            },
            {
              "name": "__48-[FPersistentConnection removeAllListensAtPath:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection purgeOutstandingWrites]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection ackPuts]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection handleTimestamp:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendStats:]",
              "coverage": 0
            },
            {
              "name": "__35-[FPersistentConnection sendStats:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection sendConnectStats]",
              "coverage": 0
            },
            {
              "name": "-[FPersistentConnection dumpListens]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FConnection.m",
          "coverage": 0.2826086956521739,
          "type": "objc",
          "functions": [
            {
              "name": "-[FConnection initWith:andDispatchQueue:lastSessionID:]",
              "coverage": 1
            },
            {
              "name": "-[FConnection open]",
              "coverage": 1
            },
            {
              "name": "-[FConnection closeWithReason:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FConnection close]",
              "coverage": 1
            },
            {
              "name": "-[FConnection sendRequest:sensitive:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection sendData:sensitive:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onDisconnect:wasEverConnected:]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FConnection onMessage:withMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onDataMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onControl:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onConnectionShutdownWithReason:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onHandshake:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onConnection:readyAtTime:sessionID:]",
              "coverage": 0
            },
            {
              "name": "-[FConnection onReset:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "fbase64.c",
          "coverage": 0.2891566265060241,
          "type": "objc",
          "functions": [
            {
              "name": "f_b64_ntop",
              "coverage": 0.9411764705882353
            },
            {
              "name": "f_b64_pton",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FImmutableSortedDictionary.m",
          "coverage": 0.3103448275862069,
          "type": "objc",
          "functions": [
            {
              "name": "+[FImmutableSortedDictionary dictionaryWithComparator:]",
              "coverage": 1
            },
            {
              "name": "+[FImmutableSortedDictionary fromDictionary:withComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedDictionary insertKey:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary removeKey:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary get:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary getPredecessorKey:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary isEmpty]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary minKey]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary maxKey]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary enumerateKeysAndObjectsReverse:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary contains:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary keyEnumerator]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary keyEnumeratorFrom:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary reverseKeyEnumerator]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary reverseKeyEnumeratorFrom:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary isEqual:]",
              "coverage": 0.75
            },
            {
              "name": "__38-[FImmutableSortedDictionary isEqual:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedDictionary hash]",
              "coverage": 0
            },
            {
              "name": "__34-[FImmutableSortedDictionary hash]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary description]",
              "coverage": 0
            },
            {
              "name": "__41-[FImmutableSortedDictionary description]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedDictionary setObject:forKey:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedDictionary removeObjectForKey:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedDictionary objectForKey:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FRepoManager.m",
          "coverage": 0.3157894736842105,
          "type": "objc",
          "functions": [
            {
              "name": "+[FRepoManager configs]",
              "coverage": 1
            },
            {
              "name": "__23+[FRepoManager configs]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FRepoManager getRepo:config:]",
              "coverage": 1
            },
            {
              "name": "+[FRepoManager createRepo:config:database:]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "+[FRepoManager interrupt:]",
              "coverage": 0
            },
            {
              "name": "__26+[FRepoManager interrupt:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FRepoManager interruptAll]",
              "coverage": 0
            },
            {
              "name": "__28+[FRepoManager interruptAll]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FRepoManager resume:]",
              "coverage": 0
            },
            {
              "name": "__23+[FRepoManager resume:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FRepoManager resumeAll]",
              "coverage": 0
            },
            {
              "name": "__25+[FRepoManager resumeAll]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FRepoManager disposeRepos:]",
              "coverage": 0
            },
            {
              "name": "__29+[FRepoManager disposeRepos:]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FDataEvent.m",
          "coverage": 0.3225806451612903,
          "type": "objc",
          "functions": [
            {
              "name": "-[FDataEvent initWithEventType:eventRegistration:dataSnapshot:]",
              "coverage": 0
            },
            {
              "name": "-[FDataEvent initWithEventType:eventRegistration:dataSnapshot:prevName:]",
              "coverage": 1
            },
            {
              "name": "-[FDataEvent path]",
              "coverage": 0
            },
            {
              "name": "-[FDataEvent fireEventOnQueue:]",
              "coverage": 0
            },
            {
              "name": "-[FDataEvent isCancelEvent]",
              "coverage": 0
            },
            {
              "name": "-[FDataEvent description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "db.h",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Range::Range()",
              "coverage": 0
            },
            {
              "name": "leveldb::Range::Range(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::DB::DB()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FValidation.m",
          "coverage": 0.33852140077821014,
          "type": "objc",
          "functions": [
            {
              "name": "+[FValidation validateFrom:writablePath:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation validateFrom:knownEventType:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation isValidPathString:]",
              "coverage": 1
            },
            {
              "name": "__33+[FValidation isValidPathString:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FValidation validateFrom:validPathString:]",
              "coverage": 0.6
            },
            {
              "name": "+[FValidation validateFrom:validRootPathString:]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "__48+[FValidation validateFrom:validRootPathString:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FValidation isValidKey:]",
              "coverage": 1
            },
            {
              "name": "__26+[FValidation isValidKey:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FValidation validateFrom:validKey:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation validateFrom:validURL:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation stringNonempty:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation validateToken:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation handleError:withUserCallback:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation handleError:withSuccessCallback:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation validateFrom:isValidLeafValue:withPath:]",
              "coverage": 0.40816326530612246
            },
            {
              "name": "+[FValidation parseAndValidateKey:fromFunction:path:]",
              "coverage": 0.4
            },
            {
              "name": "+[FValidation validateFrom:validDictionaryKey:withPath:]",
              "coverage": 0.4
            },
            {
              "name": "+[FValidation validateFrom:validUpdateDictionaryKey:withValue:]",
              "coverage": 0
            },
            {
              "name": "__63+[FValidation validateFrom:validUpdateDictionaryKey:withValue:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FValidation validateFrom:isValidPriorityValue:withPath:]",
              "coverage": 1
            },
            {
              "name": "+[FValidation validatePriorityValue:]",
              "coverage": 0
            },
            {
              "name": "+[FValidation validateFrom:isValidPriorityValue:withPath:throwError:]",
              "coverage": 0.23076923076923078
            }
          ]
        },
        {
          "name": "FEventRaiser.m",
          "coverage": 0.3448275862068966,
          "type": "objc",
          "functions": [
            {
              "name": "-[FEventRaiser init]",
              "coverage": 0
            },
            {
              "name": "-[FEventRaiser initWithQueue:]",
              "coverage": 1
            },
            {
              "name": "-[FEventRaiser raiseEvents:]",
              "coverage": 0.6
            },
            {
              "name": "-[FEventRaiser raiseCallback:]",
              "coverage": 0
            },
            {
              "name": "-[FEventRaiser raiseCallbacks:]",
              "coverage": 0
            },
            {
              "name": "+[FEventRaiser raiseCallbacks:queue:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FWebSocketConnection.m",
          "coverage": 0.35944700460829493,
          "type": "objc",
          "functions": [
            {
              "name": "-[FWebSocketConnection initWith:andQueue:lastSessionID:]",
              "coverage": 1
            },
            {
              "name": "-[FWebSocketConnection userAgent]",
              "coverage": 0.8709677419354839
            },
            {
              "name": "-[FWebSocketConnection buffering]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection open]",
              "coverage": 1
            },
            {
              "name": "__28-[FWebSocketConnection open]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection close]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection start]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection send:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection nop:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection handleNewFrameCount:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection extractFrameCount:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection appendFrame:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection handleIncomingFrame:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection webSocket:didReceiveMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection webSocketDidOpen:]",
              "coverage": 0
            },
            {
              "name": "__41-[FWebSocketConnection webSocketDidOpen:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection webSocket:didFailWithError:]",
              "coverage": 1
            },
            {
              "name": "-[FWebSocketConnection webSocket:didCloseWithCode:reason:wasClean:]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection closeIfNeverConnected]",
              "coverage": 0
            },
            {
              "name": "-[FWebSocketConnection shutdown]",
              "coverage": 1
            },
            {
              "name": "-[FWebSocketConnection onClosed]",
              "coverage": 0.8
            },
            {
              "name": "-[FWebSocketConnection resetKeepAlive]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FSRWebSocket.m",
          "coverage": 0.39594843462246776,
          "type": "objc",
          "functions": [
            {
              "name": "newSHA1String",
              "coverage": 0
            },
            {
              "name": "-[NSData(FSRWebSocket) stringBySHA1ThenBase64Encoding]",
              "coverage": 0
            },
            {
              "name": "-[NSString(FSRWebSocket) stringBySHA1ThenBase64Encoding]",
              "coverage": 0
            },
            {
              "name": "+[FSRWebSocket initialize]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket initWithURLRequest:protocols:queue:andUserAgent:]",
              "coverage": 0.8928571428571429
            },
            {
              "name": "-[FSRWebSocket initWithURLRequest:protocols:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket initWithURLRequest:queue:andUserAgent:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket initWithURLRequest:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket initWithURL:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket initWithURL:protocols:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _SR_commonInit]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket assertOnWorkQueue]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket setReadyState:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket open]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _performDelegateBlock:]",
              "coverage": 0.875
            },
            {
              "name": "-[FSRWebSocket setDelegateDispatchQueue:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _checkHandshake:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _HTTPHeadersDidFinish]",
              "coverage": 0.23684210526315788
            },
            {
              "name": "__37-[FSRWebSocket _HTTPHeadersDidFinish]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _readHTTPHeader]",
              "coverage": 1
            },
            {
              "name": "__31-[FSRWebSocket _readHTTPHeader]_block_invoke",
              "coverage": 0.8
            },
            {
              "name": "-[FSRWebSocket didConnect]",
              "coverage": 0.9512195121951219
            },
            {
              "name": "__26-[FSRWebSocket didConnect]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _initializeStreams]",
              "coverage": 0.6818181818181818
            },
            {
              "name": "-[FSRWebSocket _connect]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket scheduleInRunLoop:forMode:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket unscheduleFromRunLoop:forMode:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket close]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket closeWithCode:reason:]",
              "coverage": 0
            },
            {
              "name": "__37-[FSRWebSocket closeWithCode:reason:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _closeWithProtocolError:]",
              "coverage": 0
            },
            {
              "name": "__40-[FSRWebSocket _closeWithProtocolError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__40-[FSRWebSocket _closeWithProtocolError:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _failWithError:]",
              "coverage": 1
            },
            {
              "name": "__31-[FSRWebSocket _failWithError:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__31-[FSRWebSocket _failWithError:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _writeData:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FSRWebSocket send:]",
              "coverage": 0
            },
            {
              "name": "__21-[FSRWebSocket send:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket handlePing:]",
              "coverage": 0
            },
            {
              "name": "__27-[FSRWebSocket handlePing:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__27-[FSRWebSocket handlePing:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket handlePong]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _handleMessage:]",
              "coverage": 0
            },
            {
              "name": "__31-[FSRWebSocket _handleMessage:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "closeCodeIsValid",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket handleCloseWithData:]",
              "coverage": 0
            },
            {
              "name": "__36-[FSRWebSocket handleCloseWithData:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _disconnect]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _handleFrameWithData:opCode:]",
              "coverage": 0
            },
            {
              "name": "__44-[FSRWebSocket _handleFrameWithData:opCode:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__44-[FSRWebSocket _handleFrameWithData:opCode:]_block_invoke.320",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _handleFrameHeader:curData:]",
              "coverage": 0
            },
            {
              "name": "__43-[FSRWebSocket _handleFrameHeader:curData:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _readFrameContinue]",
              "coverage": 0
            },
            {
              "name": "__34-[FSRWebSocket _readFrameContinue]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__34-[FSRWebSocket _readFrameContinue]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _readFrameNew]",
              "coverage": 0
            },
            {
              "name": "__29-[FSRWebSocket _readFrameNew]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _pumpWriting]",
              "coverage": 0.7209302325581395
            },
            {
              "name": "__28-[FSRWebSocket _pumpWriting]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _addConsumerWithScanner:callback:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _addConsumerWithDataLength:callback:readToCurrentFrame:unmaskBytes:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _addConsumerWithScanner:callback:dataLength:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _scheduleCleanup]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _cleanupSelfReference:]",
              "coverage": 1
            },
            {
              "name": "__38-[FSRWebSocket _cleanupSelfReference:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _readUntilHeaderCompleteWithCallback:]",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _readUntilBytes:length:callback:]",
              "coverage": 1
            },
            {
              "name": "__48-[FSRWebSocket _readUntilBytes:length:callback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket _innerPumpScanner]",
              "coverage": 0.4368932038834951
            },
            {
              "name": "__33-[FSRWebSocket _innerPumpScanner]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket _pumpScanner]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[FSRWebSocket _sendFrameWithOpcode:data:]",
              "coverage": 0
            },
            {
              "name": "-[FSRWebSocket stream:handleEvent:]",
              "coverage": 0.4482758620689655
            },
            {
              "name": "__35-[FSRWebSocket stream:handleEvent:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__35-[FSRWebSocket stream:handleEvent:]_block_invoke.457",
              "coverage": 1
            },
            {
              "name": "-[FSRWebSocket safeHandleEvent:stream:]",
              "coverage": 0.5955056179775281
            },
            {
              "name": "__39-[FSRWebSocket safeHandleEvent:stream:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__39-[FSRWebSocket safeHandleEvent:stream:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FSRIOConsumer setupWithScanner:handler:bytesNeeded:readToCurrentFrame:unmaskBytes:]",
              "coverage": 1
            },
            {
              "name": "-[FSRIOConsumerPool initWithBufferCapacity:]",
              "coverage": 1
            },
            {
              "name": "-[FSRIOConsumerPool init]",
              "coverage": 1
            },
            {
              "name": "-[FSRIOConsumerPool consumerWithScanner:handler:bytesNeeded:readToCurrentFrame:unmaskBytes:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FSRIOConsumerPool returnConsumer:]",
              "coverage": 0
            },
            {
              "name": "-[NSURLRequest(FCertificateAdditions) FSR_SSLPinnedCertificates]",
              "coverage": 0
            },
            {
              "name": "-[NSMutableURLRequest(FCertificateAdditions) FSR_SSLPinnedCertificates]",
              "coverage": 0
            },
            {
              "name": "-[NSMutableURLRequest(FCertificateAdditions) setFSR_SSLPinnedCertificates:]",
              "coverage": 0
            },
            {
              "name": "-[NSURL(FSRWebSocket) SR_origin]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "SRFastLog",
              "coverage": 1
            },
            {
              "name": "validate_dispatch_data_partial_string",
              "coverage": 0
            },
            {
              "name": "+[NSRunLoop(FSRWebSocket) FSR_networkRunLoop]",
              "coverage": 1
            },
            {
              "name": "__45+[NSRunLoop(FSRWebSocket) FSR_networkRunLoop]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[_FSRRunLoopThread dealloc]",
              "coverage": 0
            },
            {
              "name": "-[_FSRRunLoopThread init]",
              "coverage": 1
            },
            {
              "name": "-[_FSRRunLoopThread main]",
              "coverage": 1
            },
            {
              "name": "-[_FSRRunLoopThread runLoop]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FStringUtilities.m",
          "coverage": 0.41935483870967744,
          "type": "objc",
          "functions": [
            {
              "name": "+[FStringUtilities base64EncodedSha1:]",
              "coverage": 1
            },
            {
              "name": "+[FStringUtilities urlDecoded:]",
              "coverage": 0
            },
            {
              "name": "+[FStringUtilities urlEncoded:]",
              "coverage": 0
            },
            {
              "name": "+[FStringUtilities sanitizedForUserAgent:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FValueIndex.m",
          "coverage": 0.5166666666666667,
          "type": "objc",
          "functions": [
            {
              "name": "-[FValueIndex compareKey:andNode:toOtherKey:andNode:]",
              "coverage": 0.875
            },
            {
              "name": "-[FValueIndex compareKey:andNode:toOtherKey:andNode:reverse:]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex compareNamedNode:toNamedNode:]",
              "coverage": 1
            },
            {
              "name": "-[FValueIndex isDefinedOn:]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex indexedValueChangedBetween:and:]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex minPost]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex maxPost]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex makePost:name:]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex queryDefinition]",
              "coverage": 1
            },
            {
              "name": "-[FValueIndex description]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[FValueIndex isEqual:]",
              "coverage": 1
            },
            {
              "name": "-[FValueIndex hash]",
              "coverage": 1
            },
            {
              "name": "+[FValueIndex valueIndex]",
              "coverage": 1
            },
            {
              "name": "__25+[FValueIndex valueIndex]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FImmutableSortedSet.m",
          "coverage": 0.5421686746987951,
          "type": "objc",
          "functions": [
            {
              "name": "+[FImmutableSortedSet setWithKeysFromDictionary:comparator:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet initWithDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet contains:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedSet addObject:]",
              "coverage": 0.75
            },
            {
              "name": "-[FImmutableSortedSet removeObject:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet containsObject:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedSet firstObject]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet lastObject]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet predecessorEntry:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet count]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedSet isEmpty]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedSet enumerateObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableSortedSet enumerateObjectsReverse:usingBlock:]",
              "coverage": 1
            },
            {
              "name": "__58-[FImmutableSortedSet enumerateObjectsReverse:usingBlock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet objectEnumerator]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableSortedSet description]",
              "coverage": 0
            },
            {
              "name": "__34-[FImmutableSortedSet description]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FWriteRecord.m",
          "coverage": 0.5526315789473685,
          "type": "objc",
          "functions": [
            {
              "name": "-[FWriteRecord initWithPath:overwrite:writeId:visible:]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FWriteRecord initWithPath:merge:writeId:]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FWriteRecord overwrite]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FWriteRecord compoundWrite]",
              "coverage": 0
            },
            {
              "name": "-[FWriteRecord isMerge]",
              "coverage": 0
            },
            {
              "name": "-[FWriteRecord isOverwrite]",
              "coverage": 1
            },
            {
              "name": "-[FWriteRecord description]",
              "coverage": 0
            },
            {
              "name": "-[FWriteRecord isEqual:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FWriteRecord hash]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDatabaseConfig.m",
          "coverage": 0.6,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDatabaseConfig init]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseConfig initWithSessionIdentifier:authTokenProvider:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabaseConfig assertUnfrozen]",
              "coverage": 0.6
            },
            {
              "name": "-[FIRDatabaseConfig setAuthTokenProvider:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseConfig setPersistenceEnabled:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseConfig setPersistenceCacheSizeBytes:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDatabaseConfig setCallbackQueue:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDatabaseConfig freeze]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FPersistenceManager.m",
          "coverage": 0.6131386861313869,
          "type": "objc",
          "functions": [
            {
              "name": "-[FPersistenceManager initWithStorageEngine:cachePolicy:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager close]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager saveUserOverwrite:atPath:writeId:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager saveUserMerge:atPath:writeId:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager removeUserWrite:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager removeAllUserWrites]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager userWrites]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager serverCacheForQuery:]",
              "coverage": 0.9629629629629629
            },
            {
              "name": "-[FPersistenceManager updateServerCacheWithNode:forQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager updateServerCacheWithMerge:atPath:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager applyUserMerge:toServerCacheAtPath:]",
              "coverage": 1
            },
            {
              "name": "__58-[FPersistenceManager applyUserMerge:toServerCacheAtPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager applyUserWrite:toServerCacheAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager setQueryComplete:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager setQueryActive:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager setQueryInactive:]",
              "coverage": 0
            },
            {
              "name": "-[FPersistenceManager doPruneCheckAfterServerUpdate]",
              "coverage": 0.17391304347826086
            },
            {
              "name": "-[FPersistenceManager setTrackedQueryKeys:forQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FPersistenceManager updateTrackedQueryKeysWithAddedKeys:removedKeys:forQuery:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FMaxNode.m",
          "coverage": 0.6176470588235294,
          "type": "objc",
          "functions": [
            {
              "name": "-[FMaxNode init]",
              "coverage": 1
            },
            {
              "name": "+[FMaxNode maxNode]",
              "coverage": 1
            },
            {
              "name": "__19+[FMaxNode maxNode]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FMaxNode compare:]",
              "coverage": 0
            },
            {
              "name": "-[FMaxNode isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[FMaxNode getImmediateChild:]",
              "coverage": 0
            },
            {
              "name": "-[FMaxNode isEmpty]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "status.h",
          "coverage": 0.631578947368421,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Status::Status()",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::~Status()",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::OK()",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::NotFound(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::Corruption(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::NotSupported(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::InvalidArgument(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IOError(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::ok() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::IsNotFound() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsCorruption() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsIOError() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsNotSupportedError() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsInvalidArgument() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::code() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::Status(leveldb::Status const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::operator=(leveldb::Status const&amp;)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "APLevelDB.mm",
          "coverage": 0.6482084690553745,
          "type": "cpp",
          "functions": [
            {
              "name": "+[APLevelDB levelDBWithPath:error:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB initWithPath:error:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB close]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB dealloc]",
              "coverage": 1
            },
            {
              "name": "+[APLevelDB defaultCreateOptions]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB setData:forKey:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB setString:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB dataForKey:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB stringForKey:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB removeKey:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB allKeys]",
              "coverage": 0
            },
            {
              "name": "__20-[APLevelDB allKeys]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB enumerateKeysAndValuesAsStrings:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB enumerateKeysWithPrefix:asStrings:]",
              "coverage": 0.9523809523809523
            },
            {
              "name": "-[APLevelDB enumerateKeys:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB enumerateKeysWithPrefix:usingBlock:]",
              "coverage": 0.95
            },
            {
              "name": "-[APLevelDB enumerateKeysAndValuesAsData:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB enumerateKeysWithPrefix:asData:]",
              "coverage": 0.9523809523809523
            },
            {
              "name": "-[APLevelDB exactSizeFrom:to:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB approximateSizeFrom:to:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB objectForKeyedSubscript:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB setObject:forKeyedSubscript:]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDB beginWriteBatch]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDB commitWriteBatch:]",
              "coverage": 0.9
            },
            {
              "name": "+[APLevelDBIterator iteratorWithLevelDB:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBIterator initWithLevelDB:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBIterator init]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDBIterator dealloc]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBIterator seekToKey:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBIterator seekToFirst]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDBIterator seekToLast]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDBIterator nextKey]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBIterator key]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBIterator valueAsString]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDBIterator valueAsData]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[APLevelDBWriteBatch initWithLevelDB:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBWriteBatch setData:forKey:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBWriteBatch setString:forKey:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBWriteBatch removeKey:]",
              "coverage": 1
            },
            {
              "name": "-[APLevelDBWriteBatch clear]",
              "coverage": 0
            },
            {
              "name": "-[APLevelDBWriteBatch commit]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FSnapshotUtilities.m",
          "coverage": 0.6577946768060836,
          "type": "objc",
          "functions": [
            {
              "name": "+[FSnapshotUtilities nodeFrom:]",
              "coverage": 1
            },
            {
              "name": "+[FSnapshotUtilities nodeFrom:priority:]",
              "coverage": 1
            },
            {
              "name": "+[FSnapshotUtilities nodeFrom:withValidationFrom:]",
              "coverage": 1
            },
            {
              "name": "+[FSnapshotUtilities nodeFrom:priority:withValidationFrom:]",
              "coverage": 1
            },
            {
              "name": "+[FSnapshotUtilities nodeFrom:priority:withValidationFrom:atDepth:path:]",
              "coverage": 1
            },
            {
              "name": "+[FSnapshotUtilities internalNodeFrom:priority:withValidationFrom:atDepth:path:]",
              "coverage": 0.6052631578947368
            },
            {
              "name": "+[FSnapshotUtilities compoundWriteFromDictionary:withValidationFrom:]",
              "coverage": 0
            },
            {
              "name": "__69+[FSnapshotUtilities compoundWriteFromDictionary:withValidationFrom:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FSnapshotUtilities validatePriorityNode:]",
              "coverage": 0.8888888888888888
            },
            {
              "name": "+[FSnapshotUtilities appendHashRepresentationForLeafNode:toString:hashVersion:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "+[FSnapshotUtilities appendHashV2RepresentationForString:toString:]",
              "coverage": 1
            },
            {
              "name": "+[FSnapshotUtilities estimateLeafNodeSize:]",
              "coverage": 0.6086956521739131
            },
            {
              "name": "+[FSnapshotUtilities estimateSerializedNodeSize:]",
              "coverage": 1
            },
            {
              "name": "__49+[FSnapshotUtilities estimateSerializedNodeSize:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FKeyIndex.m",
          "coverage": 0.6984126984126984,
          "type": "objc",
          "functions": [
            {
              "name": "-[FKeyIndex init]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex compareKey:andNode:toOtherKey:andNode:]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex compareKey:andNode:toOtherKey:andNode:reverse:]",
              "coverage": 0
            },
            {
              "name": "-[FKeyIndex compareNamedNode:toNamedNode:]",
              "coverage": 0
            },
            {
              "name": "-[FKeyIndex isDefinedOn:]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex indexedValueChangedBetween:and:]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex minPost]",
              "coverage": 0
            },
            {
              "name": "-[FKeyIndex makePost:name:]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex queryDefinition]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex description]",
              "coverage": 0
            },
            {
              "name": "-[FKeyIndex copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[FKeyIndex isEqual:]",
              "coverage": 1
            },
            {
              "name": "-[FKeyIndex hash]",
              "coverage": 1
            },
            {
              "name": "+[FKeyIndex keyIndex]",
              "coverage": 1
            },
            {
              "name": "__21+[FKeyIndex keyIndex]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FChildChangeAccumulator.m",
          "coverage": 0.7,
          "type": "objc",
          "functions": [
            {
              "name": "-[FChildChangeAccumulator init]",
              "coverage": 1
            },
            {
              "name": "-[FChildChangeAccumulator trackChildChange:]",
              "coverage": 0.625
            },
            {
              "name": "-[FChildChangeAccumulator changes]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FNamedNode.m",
          "coverage": 0.7068965517241379,
          "type": "objc",
          "functions": [
            {
              "name": "+[FNamedNode nodeWithName:node:]",
              "coverage": 1
            },
            {
              "name": "-[FNamedNode initWithName:andNode:]",
              "coverage": 1
            },
            {
              "name": "-[FNamedNode copy]",
              "coverage": 0
            },
            {
              "name": "-[FNamedNode copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "+[FNamedNode min]",
              "coverage": 1
            },
            {
              "name": "__17+[FNamedNode min]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FNamedNode max]",
              "coverage": 0
            },
            {
              "name": "__17+[FNamedNode max]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FNamedNode description]",
              "coverage": 0
            },
            {
              "name": "-[FNamedNode isEqual:]",
              "coverage": 1
            },
            {
              "name": "-[FNamedNode hash]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FUtilities.m",
          "coverage": 0.7151515151515152,
          "type": "objc",
          "functions": [
            {
              "name": "FFIsLoggingEnabled",
              "coverage": 1
            },
            {
              "name": "firebaseJobsTroll",
              "coverage": 0
            },
            {
              "name": "-[FUtilities init]",
              "coverage": 1
            },
            {
              "name": "+[FUtilities setLoggingEnabled:]",
              "coverage": 1
            },
            {
              "name": "+[FUtilities getLoggingEnabled]",
              "coverage": 0
            },
            {
              "name": "+[FUtilities singleton]",
              "coverage": 1
            },
            {
              "name": "__23+[FUtilities singleton]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FUtilities splitString:intoMaxSize:]",
              "coverage": 0
            },
            {
              "name": "+[FUtilities LUIDGenerator]",
              "coverage": 1
            },
            {
              "name": "+[FUtilities decodePath:]",
              "coverage": 0.8
            },
            {
              "name": "+[FUtilities parseUrl:]",
              "coverage": 0.8727272727272727
            },
            {
              "name": "+[FUtilities getJavascriptType:]",
              "coverage": 0.7727272727272727
            },
            {
              "name": "+[FUtilities errorForStatus:andReason:]",
              "coverage": 0
            },
            {
              "name": "__39+[FUtilities errorForStatus:andReason:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FUtilities intForString:]",
              "coverage": 1
            },
            {
              "name": "+[FUtilities ieee754StringForNumber:]",
              "coverage": 1
            },
            {
              "name": "tryParseStringToInt",
              "coverage": 1
            },
            {
              "name": "+[FUtilities maxName]",
              "coverage": 1
            },
            {
              "name": "__21+[FUtilities maxName]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FUtilities minName]",
              "coverage": 1
            },
            {
              "name": "__21+[FUtilities minName]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FUtilities compareKey:toKey:]",
              "coverage": 0.9705882352941176
            },
            {
              "name": "+[FUtilities keyComparator]",
              "coverage": 1
            },
            {
              "name": "__27+[FUtilities keyComparator]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FUtilities stringComparator]",
              "coverage": 1
            },
            {
              "name": "__30+[FUtilities stringComparator]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FUtilities randomDouble]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FAuthTokenProvider.m",
          "coverage": 0.734375,
          "type": "objc",
          "functions": [
            {
              "name": "-[FAuthStateListenerWrapper initWithListener:auth:]",
              "coverage": 1
            },
            {
              "name": "-[FAuthStateListenerWrapper authStateDidChangeNotification:]",
              "coverage": 0
            },
            {
              "name": "__60-[FAuthStateListenerWrapper authStateDidChangeNotification:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FAuthStateListenerWrapper dealloc]",
              "coverage": 0
            },
            {
              "name": "-[FIRFirebaseAuthTokenProvider initWithAuth:]",
              "coverage": 1
            },
            {
              "name": "-[FIRFirebaseAuthTokenProvider fetchTokenForcingRefresh:withCallback:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "__70-[FIRFirebaseAuthTokenProvider fetchTokenForcingRefresh:withCallback:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__70-[FIRFirebaseAuthTokenProvider fetchTokenForcingRefresh:withCallback:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRFirebaseAuthTokenProvider listenForTokenChanges:]",
              "coverage": 1
            },
            {
              "name": "+[FAuthTokenProvider authTokenProviderWithAuth:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FServerValues.m",
          "coverage": 0.7435897435897436,
          "type": "objc",
          "functions": [
            {
              "name": "+[FServerValues generateServerValues:]",
              "coverage": 1
            },
            {
              "name": "+[FServerValues resolveDeferredValue:withServerValues:]",
              "coverage": 0.2857142857142857
            },
            {
              "name": "+[FServerValues resolveDeferredValueCompoundWrite:withServerValues:]",
              "coverage": 1
            },
            {
              "name": "__68+[FServerValues resolveDeferredValueCompoundWrite:withServerValues:]_block_invoke",
              "coverage": 0.7142857142857143
            },
            {
              "name": "+[FServerValues resolveDeferredValueTree:withServerValues:]",
              "coverage": 1
            },
            {
              "name": "__59+[FServerValues resolveDeferredValueTree:withServerValues:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FServerValues resolveDeferredValueSnapshot:withServerValues:]",
              "coverage": 0.8846153846153846
            },
            {
              "name": "__63+[FServerValues resolveDeferredValueSnapshot:withServerValues:]_block_invoke",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FLLRBEmptyNode.m",
          "coverage": 0.75,
          "type": "objc",
          "functions": [
            {
              "name": "-[FLLRBEmptyNode description]",
              "coverage": 0
            },
            {
              "name": "+[FLLRBEmptyNode emptyNode]",
              "coverage": 1
            },
            {
              "name": "__27+[FLLRBEmptyNode emptyNode]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode copyWith:withValue:withColor:withLeft:withRight:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode insertKey:forValue:withComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode remove:withComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode count]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode inorderTraversal:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode reverseTraversal:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode min]",
              "coverage": 0
            },
            {
              "name": "-[FLLRBEmptyNode minKey]",
              "coverage": 0
            },
            {
              "name": "-[FLLRBEmptyNode maxKey]",
              "coverage": 0
            },
            {
              "name": "-[FLLRBEmptyNode isRed]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBEmptyNode check]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FSyncTree.m",
          "coverage": 0.7587719298245614,
          "type": "objc",
          "functions": [
            {
              "name": "-[FListenContainer initWithView:onComplete:]",
              "coverage": 1
            },
            {
              "name": "-[FListenContainer serverCache]",
              "coverage": 0
            },
            {
              "name": "-[FListenContainer compoundHash]",
              "coverage": 0
            },
            {
              "name": "-[FListenContainer simpleHash]",
              "coverage": 0
            },
            {
              "name": "-[FListenContainer includeCompoundHash]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree initWithListenProvider:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree initWithPersistenceManager:listenProvider:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyUserOverwriteAtPath:newData:writeId:isVisible:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyUserMergeAtPath:changedChildren:writeId:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree ackUserWriteWithWriteId:revert:persist:clock:]",
              "coverage": 1
            },
            {
              "name": "__58-[FSyncTree ackUserWriteWithWriteId:revert:persist:clock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyServerOverwriteAtPath:newData:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyServerMergeAtPath:changedChildren:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyServerRangeMergeAtPath:updates:]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree applyListenCompleteAtPath:]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree applyTaggedListenCompleteAtPath:tagId:]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree applyTaggedOperation:atPath:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyTaggedQueryOverwriteAtPath:newData:tagId:]",
              "coverage": 0.7857142857142857
            },
            {
              "name": "-[FSyncTree applyTaggedQueryMergeAtPath:changedChildren:tagId:]",
              "coverage": 0.7857142857142857
            },
            {
              "name": "-[FSyncTree applyTaggedServerRangeMergeAtPath:updates:tagId:]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree addEventRegistration:forQuery:]",
              "coverage": 0.9791666666666666
            },
            {
              "name": "__43-[FSyncTree addEventRegistration:forQuery:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree serverCacheForQuery:]",
              "coverage": 0.975
            },
            {
              "name": "__33-[FSyncTree serverCacheForQuery:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__33-[FSyncTree serverCacheForQuery:]_block_invoke.292",
              "coverage": 1
            },
            {
              "name": "__33-[FSyncTree serverCacheForQuery:]_block_invoke.303",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree removeEventRegistration:forQuery:cancelError:]",
              "coverage": 0.8831168831168831
            },
            {
              "name": "__58-[FSyncTree removeEventRegistration:forQuery:cancelError:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__58-[FSyncTree removeEventRegistration:forQuery:cancelError:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__58-[FSyncTree removeEventRegistration:forQuery:cancelError:]_block_invoke.334",
              "coverage": 0
            },
            {
              "name": "__58-[FSyncTree removeEventRegistration:forQuery:cancelError:]_block_invoke_2.344",
              "coverage": 1
            },
            {
              "name": "__58-[FSyncTree removeEventRegistration:forQuery:cancelError:]_block_invoke.366",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree keepQuery:synced:]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree removeAllWrites]",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree calcCompleteEventCacheAtPath:excludeWriteIds:]",
              "coverage": 0
            },
            {
              "name": "__58-[FSyncTree calcCompleteEventCacheAtPath:excludeWriteIds:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree collectDistinctViewsForSubTree:]",
              "coverage": 1
            },
            {
              "name": "__44-[FSyncTree collectDistinctViewsForSubTree:]_block_invoke",
              "coverage": 0.875
            },
            {
              "name": "__44-[FSyncTree collectDistinctViewsForSubTree:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree removeTags:]",
              "coverage": 1
            },
            {
              "name": "__24-[FSyncTree removeTags:]_block_invoke",
              "coverage": 0.375
            },
            {
              "name": "-[FSyncTree queryForListening:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree setupListenerOnQuery:view:]",
              "coverage": 1
            },
            {
              "name": "__39-[FSyncTree setupListenerOnQuery:view:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__39-[FSyncTree setupListenerOnQuery:view:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree createListenerForView:]",
              "coverage": 1
            },
            {
              "name": "__35-[FSyncTree createListenerForView:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FSyncTree queryForTag:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree tagForQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyOperationToSyncPoints:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyOperationHelper:syncPointTree:serverCache:writesCache:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncTree applyOperationDescendantsHelper:syncPointTree:serverCache:writesCache:]",
              "coverage": 1
            },
            {
              "name": "__83-[FSyncTree applyOperationDescendantsHelper:syncPointTree:serverCache:writesCache:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FWriteTree.m",
          "coverage": 0.7731958762886598,
          "type": "objc",
          "functions": [
            {
              "name": "-[FWriteTree init]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree childWritesForPath:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree addOverwriteAtPath:newData:writeId:isVisible:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree addMergeAtPath:changedChildren:writeId:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree writeForId:]",
              "coverage": 1
            },
            {
              "name": "__25-[FWriteTree writeForId:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree removeWriteId:]",
              "coverage": 1
            },
            {
              "name": "__28-[FWriteTree removeWriteId:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__28-[FWriteTree removeWriteId:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree removeAllWrites]",
              "coverage": 0
            },
            {
              "name": "-[FWriteTree completeWriteDataAtPath:]",
              "coverage": 0
            },
            {
              "name": "-[FWriteTree calculateCompleteEventCacheAtPath:completeServerCache:excludeWriteIds:includeHiddenWrites:]",
              "coverage": 0.46153846153846156
            },
            {
              "name": "__104-[FWriteTree calculateCompleteEventCacheAtPath:completeServerCache:excludeWriteIds:includeHiddenWrites:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FWriteTree calculateCompleteEventChildrenAtPath:completeServerChildren:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "__74-[FWriteTree calculateCompleteEventChildrenAtPath:completeServerChildren:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__74-[FWriteTree calculateCompleteEventChildrenAtPath:completeServerChildren:]_block_invoke.124",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree calculateEventCacheAfterServerOverwriteAtPath:childPath:existingEventSnap:existingServerSnap:]",
              "coverage": 0.88
            },
            {
              "name": "-[FWriteTree calculateCompleteChildAtPath:childKey:cache:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree shadowingWriteAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree calculateNextNodeAfterPost:atPath:completeServerData:reverse:index:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "__81-[FWriteTree calculateNextNodeAfterPost:atPath:completeServerData:reverse:index:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FWriteTree record:containsPath:]",
              "coverage": 0.4166666666666667
            },
            {
              "name": "__34-[FWriteTree record:containsPath:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FWriteTree resetTree]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "+[FWriteTree defaultFilter]",
              "coverage": 1
            },
            {
              "name": "__27+[FWriteTree defaultFilter]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__27+[FWriteTree defaultFilter]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "+[FWriteTree layerTreeFromWrites:filter:treeRoot:]",
              "coverage": 1
            },
            {
              "name": "__50+[FWriteTree layerTreeFromWrites:filter:treeRoot:]_block_invoke",
              "coverage": 0.3684210526315789
            }
          ]
        },
        {
          "name": "FIRMutableData.m",
          "coverage": 0.7831325301204819,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMutableData initWithNode:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData initWithPrefixPath:andSnapshotHolder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData childDataByAppendingPath:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData parent]",
              "coverage": 0
            },
            {
              "name": "-[FIRMutableData setValue:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData setPriority:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData value]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData priority]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData hasChildren]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData hasChildAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData childrenCount]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData key]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData nodeValue]",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData children]",
              "coverage": 1
            },
            {
              "name": "__26-[FIRMutableData children]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMutableData isEqualToData:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMutableData description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FRepoInfo.m",
          "coverage": 0.7931034482758621,
          "type": "objc",
          "functions": [
            {
              "name": "-[FRepoInfo initWithHost:isSecure:withNamespace:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "-[FRepoInfo description]",
              "coverage": 1
            },
            {
              "name": "-[FRepoInfo setInternalHost:]",
              "coverage": 0
            },
            {
              "name": "-[FRepoInfo clearInternalHostCache]",
              "coverage": 1
            },
            {
              "name": "-[FRepoInfo isDemoHost]",
              "coverage": 0
            },
            {
              "name": "-[FRepoInfo isCustomHost]",
              "coverage": 0
            },
            {
              "name": "-[FRepoInfo connectionURL]",
              "coverage": 1
            },
            {
              "name": "-[FRepoInfo connectionURLWithLastSessionID:]",
              "coverage": 1
            },
            {
              "name": "-[FRepoInfo copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FRepoInfo hash]",
              "coverage": 1
            },
            {
              "name": "-[FRepoInfo isEqual:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAuthInteropFake.m",
          "coverage": 0.8,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAuthInteropFake initWithToken:userID:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthInteropFake getTokenForcingRefresh:withCallback:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAuthInteropFake getUserID]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FTrackedQuery.m",
          "coverage": 0.8070175438596491,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTrackedQuery initWithId:query:lastUse:isActive:isComplete:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQuery initWithId:query:lastUse:isActive:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQuery updateLastUse:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQuery setComplete]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQuery setActiveState:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQuery isEqual:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FTrackedQuery hash]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FLevelDBStorageEngine.m",
          "coverage": 0.8074935400516796,
          "type": "objc",
          "functions": [
            {
              "name": "writeRecordKey",
              "coverage": 1
            },
            {
              "name": "serverCacheKey",
              "coverage": 1
            },
            {
              "name": "trackedQueryKey",
              "coverage": 1
            },
            {
              "name": "trackedQueryKeysKeyPrefix",
              "coverage": 1
            },
            {
              "name": "trackedQueryKeysKey",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine initWithPath:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine runMigration]",
              "coverage": 0.7222222222222222
            },
            {
              "name": "-[FLevelDBStorageEngine runLegacyMigration:]",
              "coverage": 0
            },
            {
              "name": "__44-[FLevelDBStorageEngine runLegacyMigration:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FLevelDBStorageEngine openDatabases]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine purgeDatabase:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FLevelDBStorageEngine purgeEverything]",
              "coverage": 1
            },
            {
              "name": "__40-[FLevelDBStorageEngine purgeEverything]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine close]",
              "coverage": 1
            },
            {
              "name": "+[FLevelDBStorageEngine firebaseDir]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine createDB:]",
              "coverage": 0.8636363636363636
            },
            {
              "name": "-[FLevelDBStorageEngine saveUserOverwrite:atPath:writeId:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine saveUserMerge:atPath:writeId:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine removeUserWrite:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine removeAllUserWrites]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "__44-[FLevelDBStorageEngine removeAllUserWrites]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine userWrites]",
              "coverage": 1
            },
            {
              "name": "__35-[FLevelDBStorageEngine userWrites]_block_invoke",
              "coverage": 0.7
            },
            {
              "name": "__35-[FLevelDBStorageEngine userWrites]_block_invoke.287",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FLevelDBStorageEngine serverCacheAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine serverCacheForKeys:atPath:]",
              "coverage": 0
            },
            {
              "name": "__51-[FLevelDBStorageEngine serverCacheForKeys:atPath:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FLevelDBStorageEngine updateServerCache:atPath:merge:]",
              "coverage": 0.72
            },
            {
              "name": "__56-[FLevelDBStorageEngine updateServerCache:atPath:merge:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FLevelDBStorageEngine updateServerCacheWithMerge:atPath:]",
              "coverage": 0.9444444444444444
            },
            {
              "name": "__59-[FLevelDBStorageEngine updateServerCacheWithMerge:atPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine saveNodeInternal:atPath:batch:counter:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine serverCacheEstimatedSizeInBytes]",
              "coverage": 0
            },
            {
              "name": "-[FLevelDBStorageEngine pruneCache:atPath:]",
              "coverage": 0.9629629629629629
            },
            {
              "name": "__43-[FLevelDBStorageEngine pruneCache:atPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine loadTrackedQueries]",
              "coverage": 1
            },
            {
              "name": "__43-[FLevelDBStorageEngine loadTrackedQueries]_block_invoke",
              "coverage": 0.7096774193548387
            },
            {
              "name": "-[FLevelDBStorageEngine removeTrackedQuery:]",
              "coverage": 0.95
            },
            {
              "name": "__44-[FLevelDBStorageEngine removeTrackedQuery:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine saveTrackedQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine setTrackedQueryKeys:forQueryId:]",
              "coverage": 0.972972972972973
            },
            {
              "name": "__56-[FLevelDBStorageEngine setTrackedQueryKeys:forQueryId:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__56-[FLevelDBStorageEngine setTrackedQueryKeys:forQueryId:]_block_invoke.460",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine updateTrackedQueryKeysWithAddedKeys:removedKeys:forQueryId:]",
              "coverage": 0.9375
            },
            {
              "name": "__84-[FLevelDBStorageEngine updateTrackedQueryKeysWithAddedKeys:removedKeys:forQueryId:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__84-[FLevelDBStorageEngine updateTrackedQueryKeysWithAddedKeys:removedKeys:forQueryId:]_block_invoke.477",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine trackedQueryKeysForQuery:]",
              "coverage": 1
            },
            {
              "name": "__50-[FLevelDBStorageEngine trackedQueryKeysForQuery:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine removeAllLeafNodesOnPath:batch:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine removeAllWithPrefix:batch:database:]",
              "coverage": 1
            },
            {
              "name": "__60-[FLevelDBStorageEngine removeAllWithPrefix:batch:database:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine internalSetNestedData:forKey:withBatch:counter:]",
              "coverage": 1
            },
            {
              "name": "__72-[FLevelDBStorageEngine internalSetNestedData:forKey:withBatch:counter:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine internalNestedDataForPath:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine internalNestedDataFromIterator:andKeyPrefix:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine serializePrimitive:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine fixDoubleParsing:]",
              "coverage": 1
            },
            {
              "name": "-[FLevelDBStorageEngine deserializePrimitive:]",
              "coverage": 0.8235294117647058
            },
            {
              "name": "+[FLevelDBStorageEngine ensureDir:markAsDoNotBackup:]",
              "coverage": 0.7619047619047619
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FLeafNode.m",
          "coverage": 0.8435754189944135,
          "type": "objc",
          "functions": [
            {
              "name": "-[FLeafNode initWithValue:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode initWithValue:withPriority:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode isLeafNode]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode getPriority]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode updatePriority:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode getImmediateChild:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode getChild:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode hasChild:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode predecessorChildKey:]",
              "coverage": 0
            },
            {
              "name": "-[FLeafNode updateImmediateChild:withNewChild:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode updateChild:withNewChild:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode val]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode valForExport:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FLeafNode isEqual:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode hash]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode withIndex:]",
              "coverage": 0
            },
            {
              "name": "-[FLeafNode isIndexed:]",
              "coverage": 0
            },
            {
              "name": "-[FLeafNode isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode numChildren]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode enumerateChildrenUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode enumerateChildrenReverse:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FLeafNode childEnumerator]",
              "coverage": 0
            },
            {
              "name": "-[FLeafNode dataHash]",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode compare:]",
              "coverage": 1
            },
            {
              "name": "+[FLeafNode valueTypeOrder]",
              "coverage": 1
            },
            {
              "name": "__27+[FLeafNode valueTypeOrder]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLeafNode compareToLeafNode:]",
              "coverage": 0.9
            },
            {
              "name": "-[FLeafNode description]",
              "coverage": 0
            },
            {
              "name": "-[FLeafNode forEachChildDo:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FImmutableTree.m",
          "coverage": 0.8474114441416893,
          "type": "objc",
          "functions": [
            {
              "name": "-[FImmutableTree initWithValue:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree initWithValue:children:]",
              "coverage": 1
            },
            {
              "name": "+[FImmutableTree emptyChildren]",
              "coverage": 1
            },
            {
              "name": "__31+[FImmutableTree emptyChildren]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FImmutableTree empty]",
              "coverage": 1
            },
            {
              "name": "__23+[FImmutableTree empty]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree findRootMostMatchingPath:predicate:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree findRootMostValueAndPath:]",
              "coverage": 1
            },
            {
              "name": "__43-[FImmutableTree findRootMostValueAndPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree rootMostValueOnPath:]",
              "coverage": 1
            },
            {
              "name": "__38-[FImmutableTree rootMostValueOnPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree rootMostValueOnPath:matching:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree leafMostValueOnPath:]",
              "coverage": 1
            },
            {
              "name": "__38-[FImmutableTree leafMostValueOnPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree leafMostValueOnPath:matching:]",
              "coverage": 1
            },
            {
              "name": "__47-[FImmutableTree leafMostValueOnPath:matching:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree containsValueMatching:]",
              "coverage": 1
            },
            {
              "name": "__40-[FImmutableTree containsValueMatching:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree subtreeAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree setValue:atPath:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree removeValueAtPath:]",
              "coverage": 0.7857142857142857
            },
            {
              "name": "-[FImmutableTree valueAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree setTree:atPath:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree foldWithBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree foldWithPathSoFar:withBlock:]",
              "coverage": 1
            },
            {
              "name": "__46-[FImmutableTree foldWithPathSoFar:withBlock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree findOnPath:andApplyBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree findOnPath:pathSoFar:andApplyBlock:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FImmutableTree forEachOnPath:whileBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree forEachOnPath:pathSoFar:whileBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree forEachOnPath:performBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableTree forEachOnPath:pathSoFar:performBlock:]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableTree forEach:]",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree forEachPathSoFar:withBlock:]",
              "coverage": 1
            },
            {
              "name": "__45-[FImmutableTree forEachPathSoFar:withBlock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree forEachChild:]",
              "coverage": 1
            },
            {
              "name": "__31-[FImmutableTree forEachChild:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FImmutableTree isEqual:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FImmutableTree hash]",
              "coverage": 0
            },
            {
              "name": "-[FImmutableTree description]",
              "coverage": 0
            },
            {
              "name": "__29-[FImmutableTree description]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FImmutableTree debugDescription]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FPriorityIndex.m",
          "coverage": 0.8507462686567164,
          "type": "objc",
          "functions": [
            {
              "name": "-[FPriorityIndex compareKey:andNode:toOtherKey:andNode:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex compareKey:andNode:toOtherKey:andNode:reverse:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex compareNamedNode:toNamedNode:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex isDefinedOn:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex indexedValueChangedBetween:and:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex minPost]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex maxPost]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex makePost:name:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex queryDefinition]",
              "coverage": 0
            },
            {
              "name": "-[FPriorityIndex description]",
              "coverage": 0
            },
            {
              "name": "-[FPriorityIndex copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[FPriorityIndex isEqual:]",
              "coverage": 1
            },
            {
              "name": "-[FPriorityIndex hash]",
              "coverage": 1
            },
            {
              "name": "+[FPriorityIndex priorityIndex]",
              "coverage": 1
            },
            {
              "name": "__31+[FPriorityIndex priorityIndex]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSData+SRB64Additions.m",
          "coverage": 0.8571428571428571,
          "type": "objc",
          "functions": [
            {
              "name": "+[FSRUtilities base64EncodedStringFromData:]",
              "coverage": 0.8571428571428571
            }
          ]
        },
        {
          "name": "FLLRBValueNode.m",
          "coverage": 0.8601036269430051,
          "type": "objc",
          "functions": [
            {
              "name": "-[FLLRBValueNode description]",
              "coverage": 0
            },
            {
              "name": "-[FLLRBValueNode initWithKey:withValue:withColor:withLeft:withRight:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode copyWith:withValue:withColor:withLeft:withRight:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode count]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode inorderTraversal:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode reverseTraversal:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode min]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode minKey]",
              "coverage": 0
            },
            {
              "name": "-[FLLRBValueNode maxKey]",
              "coverage": 0
            },
            {
              "name": "-[FLLRBValueNode insertKey:forValue:withComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode removeMin]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode fixUp]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode moveRedLeft]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode moveRedRight]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode rotateLeft]",
              "coverage": 0.75
            },
            {
              "name": "-[FLLRBValueNode rotateRight]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode colorFlip]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode remove:withComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode isRed]",
              "coverage": 1
            },
            {
              "name": "-[FLLRBValueNode checkMaxDepth]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FLLRBValueNode check]",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FView.m",
          "coverage": 0.8642857142857143,
          "type": "objc",
          "functions": [
            {
              "name": "-[FViewOperationResult initWithChanges:events:]",
              "coverage": 1
            },
            {
              "name": "-[FView initWithQuery:initialViewCache:]",
              "coverage": 1
            },
            {
              "name": "-[FView serverCache]",
              "coverage": 0
            },
            {
              "name": "-[FView eventCache]",
              "coverage": 1
            },
            {
              "name": "-[FView completeServerCacheFor:]",
              "coverage": 1
            },
            {
              "name": "-[FView isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FView addEventRegistration:]",
              "coverage": 1
            },
            {
              "name": "-[FView removeEventRegistration:cancelError:]",
              "coverage": 0.5357142857142857
            },
            {
              "name": "-[FView applyOperation:writesCache:serverCache:]",
              "coverage": 1
            },
            {
              "name": "-[FView initialEvents:]",
              "coverage": 1
            },
            {
              "name": "__23-[FView initialEvents:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FView generateEventsForChanges:eventCache:registration:]",
              "coverage": 1
            },
            {
              "name": "-[FView description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FPathIndex.m",
          "coverage": 0.8714285714285714,
          "type": "objc",
          "functions": [
            {
              "name": "-[FPathIndex initWithPath:]",
              "coverage": 0.8
            },
            {
              "name": "-[FPathIndex compareKey:andNode:toOtherKey:andNode:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex compareKey:andNode:toOtherKey:andNode:reverse:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex compareNamedNode:toNamedNode:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex isDefinedOn:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex indexedValueChangedBetween:and:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex minPost]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex maxPost]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex makePost:name:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex queryDefinition]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex description]",
              "coverage": 0
            },
            {
              "name": "-[FPathIndex copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[FPathIndex isEqual:]",
              "coverage": 1
            },
            {
              "name": "-[FPathIndex hash]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FQuerySpec.m",
          "coverage": 0.8723404255319149,
          "type": "objc",
          "functions": [
            {
              "name": "-[FQuerySpec initWithPath:params:]",
              "coverage": 1
            },
            {
              "name": "+[FQuerySpec defaultQueryAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FQuerySpec copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FQuerySpec index]",
              "coverage": 1
            },
            {
              "name": "-[FQuerySpec isDefault]",
              "coverage": 1
            },
            {
              "name": "-[FQuerySpec loadsAllData]",
              "coverage": 1
            },
            {
              "name": "-[FQuerySpec isEqual:]",
              "coverage": 0.6470588235294118
            },
            {
              "name": "-[FQuerySpec hash]",
              "coverage": 1
            },
            {
              "name": "-[FQuerySpec description]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FOverwrite.m",
          "coverage": 0.875,
          "type": "objc",
          "functions": [
            {
              "name": "-[FOverwrite initWithSource:path:snap:]",
              "coverage": 1
            },
            {
              "name": "-[FOverwrite operationForChild:]",
              "coverage": 1
            },
            {
              "name": "-[FOverwrite description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRRetryHelper.m",
          "coverage": 0.8809523809523809,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRRetryHelperTask initWithBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRRetryHelperTask isCanceled]",
              "coverage": 1
            },
            {
              "name": "-[FIRRetryHelperTask cancel]",
              "coverage": 0
            },
            {
              "name": "-[FIRRetryHelperTask execute]",
              "coverage": 1
            },
            {
              "name": "-[FIRRetryHelper initWithDispatchQueue:minRetryDelayAfterFailure:maxRetryDelay:retryExponent:jitterFactor:]",
              "coverage": 1
            },
            {
              "name": "-[FIRRetryHelper retry:]",
              "coverage": 0.8823529411764706
            },
            {
              "name": "__24-[FIRRetryHelper retry:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRRetryHelper signalSuccess]",
              "coverage": 1
            },
            {
              "name": "-[FIRRetryHelper cancel]",
              "coverage": 0.7
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FChange.m",
          "coverage": 0.8888888888888888,
          "type": "objc",
          "functions": [
            {
              "name": "-[FChange initWithType:indexedNode:]",
              "coverage": 1
            },
            {
              "name": "-[FChange initWithType:indexedNode:childKey:]",
              "coverage": 1
            },
            {
              "name": "-[FChange initWithType:indexedNode:childKey:oldIndexedNode:]",
              "coverage": 1
            },
            {
              "name": "-[FChange changeWithPrevKey:]",
              "coverage": 1
            },
            {
              "name": "-[FChange description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FAckUserWrite.m",
          "coverage": 0.8888888888888888,
          "type": "objc",
          "functions": [
            {
              "name": "-[FAckUserWrite initWithPath:affectedTree:revert:]",
              "coverage": 1
            },
            {
              "name": "-[FAckUserWrite operationForChild:]",
              "coverage": 1
            },
            {
              "name": "-[FAckUserWrite description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FOperationSource.m",
          "coverage": 0.8974358974358975,
          "type": "objc",
          "functions": [
            {
              "name": "-[FOperationSource initWithFromUser:fromServer:queryParams:tagged:]",
              "coverage": 1
            },
            {
              "name": "+[FOperationSource userInstance]",
              "coverage": 1
            },
            {
              "name": "__32+[FOperationSource userInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FOperationSource serverInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FOperationSource serverInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FOperationSource forServerTaggedQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FOperationSource description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FMerge.m",
          "coverage": 0.9,
          "type": "objc",
          "functions": [
            {
              "name": "-[FMerge initWithSource:path:children:]",
              "coverage": 1
            },
            {
              "name": "-[FMerge operationForChild:]",
              "coverage": 1
            },
            {
              "name": "-[FMerge description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDataSnapshot.m",
          "coverage": 0.9016393442622951,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDataSnapshot initWithRef:indexedNode:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot value]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot valueInExportFormat]",
              "coverage": 0
            },
            {
              "name": "-[FIRDataSnapshot childSnapshotForPath:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot hasChild:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot priority]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot hasChildren]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot exists]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot key]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot childrenCount]",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot children]",
              "coverage": 1
            },
            {
              "name": "__27-[FIRDataSnapshot children]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRDataSnapshot description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FPruneForest.m",
          "coverage": 0.9041095890410958,
          "type": "objc",
          "functions": [
            {
              "name": "kFPrunePredicate_block_invoke",
              "coverage": 1
            },
            {
              "name": "kFKeepPredicate_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "+[FPruneForest pruneTree]",
              "coverage": 1
            },
            {
              "name": "__25+[FPruneForest pruneTree]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FPruneForest keepTree]",
              "coverage": 1
            },
            {
              "name": "__24+[FPruneForest keepTree]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest initWithForest:]",
              "coverage": 1
            },
            {
              "name": "+[FPruneForest empty]",
              "coverage": 1
            },
            {
              "name": "__21+[FPruneForest empty]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest prunesAnything]",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest shouldPruneUnkeptDescendantsAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest shouldKeepPath:]",
              "coverage": 0
            },
            {
              "name": "-[FPruneForest affectsPath:]",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest child:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[FPruneForest childAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest prunePath:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FPruneForest keepPath:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FPruneForest keepAll:atPath:]",
              "coverage": 0.75
            },
            {
              "name": "-[FPruneForest pruneAll:atPath:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FPruneForest setPruneValue:forAll:atPath:]",
              "coverage": 1
            },
            {
              "name": "__44-[FPruneForest setPruneValue:forAll:atPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FPruneForest enumarateKeptNodesUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "__45-[FPruneForest enumarateKeptNodesUsingBlock:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FChildrenNode.m",
          "coverage": 0.9064171122994652,
          "type": "objc",
          "functions": [
            {
              "name": "-[FChildrenNode init]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode initWithChildren:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode initWithPriority:children:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FChildrenNode description]",
              "coverage": 0
            },
            {
              "name": "-[FChildrenNode isLeafNode]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode getPriority]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode updatePriority:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode getImmediateChild:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode getChild:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode hasChild:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode updateImmediateChild:withNewChild:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode updateChild:withNewChild:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode numChildren]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode val]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode valForExport:]",
              "coverage": 0.7627118644067796
            },
            {
              "name": "__30-[FChildrenNode valForExport:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode dataHash]",
              "coverage": 1
            },
            {
              "name": "__25-[FChildrenNode dataHash]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__25-[FChildrenNode dataHash]_block_invoke.123",
              "coverage": 1
            },
            {
              "name": "__25-[FChildrenNode dataHash]_block_invoke.130",
              "coverage": 1
            },
            {
              "name": "__25-[FChildrenNode dataHash]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__25-[FChildrenNode dataHash]_block_invoke.158",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode compare:]",
              "coverage": 0.5294117647058824
            },
            {
              "name": "-[FChildrenNode isEqual:]",
              "coverage": 0.9655172413793104
            },
            {
              "name": "__25-[FChildrenNode isEqual:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode hash]",
              "coverage": 1
            },
            {
              "name": "__21-[FChildrenNode hash]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode enumerateChildrenAndPriorityUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "__56-[FChildrenNode enumerateChildrenAndPriorityUsingBlock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode enumerateChildrenUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode enumerateChildrenReverse:usingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode childEnumerator]",
              "coverage": 1
            },
            {
              "name": "__32-[FChildrenNode childEnumerator]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode predecessorChildKey:]",
              "coverage": 1
            },
            {
              "name": "-[FChildrenNode childrenGetter:]",
              "coverage": 0
            },
            {
              "name": "-[FChildrenNode firstChild]",
              "coverage": 0.75
            },
            {
              "name": "-[FChildrenNode lastChild]",
              "coverage": 0.75
            }
          ]
        },
        {
          "name": "FCompoundWrite.m",
          "coverage": 0.908675799086758,
          "type": "objc",
          "functions": [
            {
              "name": "-[FCompoundWrite initWithWriteTree:]",
              "coverage": 1
            },
            {
              "name": "+[FCompoundWrite compoundWriteWithValueDictionary:]",
              "coverage": 1
            },
            {
              "name": "__51+[FCompoundWrite compoundWriteWithValueDictionary:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FCompoundWrite compoundWriteWithNodeDictionary:]",
              "coverage": 0
            },
            {
              "name": "__50+[FCompoundWrite compoundWriteWithNodeDictionary:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FCompoundWrite emptyWrite]",
              "coverage": 1
            },
            {
              "name": "__28+[FCompoundWrite emptyWrite]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite addWrite:atPath:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite addWrite:atKey:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite addCompoundWrite:atPath:]",
              "coverage": 1
            },
            {
              "name": "__42-[FCompoundWrite addCompoundWrite:atPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite removeWriteAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite hasCompleteWriteAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite completeNodeAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite completeChildren]",
              "coverage": 1
            },
            {
              "name": "__34-[FCompoundWrite completeChildren]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__34-[FCompoundWrite completeChildren]_block_invoke.73",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite childCompoundWrites]",
              "coverage": 1
            },
            {
              "name": "__37-[FCompoundWrite childCompoundWrites]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite childCompoundWriteAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite applySubtreeWrite:atPath:toNode:]",
              "coverage": 1
            },
            {
              "name": "__50-[FCompoundWrite applySubtreeWrite:atPath:toNode:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite enumerateWrites:]",
              "coverage": 1
            },
            {
              "name": "__34-[FCompoundWrite enumerateWrites:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite applyToNode:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite rootWrite]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite isEqual:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FCompoundWrite hash]",
              "coverage": 0
            },
            {
              "name": "-[FCompoundWrite valForExport:]",
              "coverage": 1
            },
            {
              "name": "__31-[FCompoundWrite valForExport:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundWrite description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIndex.m",
          "coverage": 0.9090909090909091,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIndex indexFromQueryDefinition:]",
              "coverage": 0.9090909090909091
            }
          ]
        },
        {
          "name": "FTrackedQueryManager.m",
          "coverage": 0.9108635097493036,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTrackedQueryManager initWithStorageEngine:clock:]",
              "coverage": 1
            },
            {
              "name": "__52-[FTrackedQueryManager initWithStorageEngine:clock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FTrackedQueryManager assertValidTrackedQuery:]",
              "coverage": 1
            },
            {
              "name": "+[FTrackedQueryManager normalizeQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager findTrackedQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager removeTrackedQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager setQueryActive:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager setQueryInactive:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager setQueryActive:forQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager setQueryComplete:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FTrackedQueryManager setQueriesCompleteAtPath:]",
              "coverage": 1
            },
            {
              "name": "__49-[FTrackedQueryManager setQueriesCompleteAtPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__49-[FTrackedQueryManager setQueriesCompleteAtPath:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager isQueryComplete:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager hasActiveDefaultQueryAtPath:]",
              "coverage": 1
            },
            {
              "name": "__52-[FTrackedQueryManager hasActiveDefaultQueryAtPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager ensureCompleteTrackedQueryAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager isIncludedInDefaultCompleteQuery:]",
              "coverage": 1
            },
            {
              "name": "__57-[FTrackedQueryManager isIncludedInDefaultCompleteQuery:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager cacheTrackedQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager numberOfQueriesToPrune:prunableCount:]",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager pruneOldQueries:]",
              "coverage": 1
            },
            {
              "name": "__40-[FTrackedQueryManager pruneOldQueries:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__40-[FTrackedQueryManager pruneOldQueries:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__40-[FTrackedQueryManager pruneOldQueries:]_block_invoke.149",
              "coverage": 0.8888888888888888
            },
            {
              "name": "__40-[FTrackedQueryManager pruneOldQueries:]_block_invoke.168",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager numberOfPrunableQueries]",
              "coverage": 0
            },
            {
              "name": "__47-[FTrackedQueryManager numberOfPrunableQueries]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__47-[FTrackedQueryManager numberOfPrunableQueries]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FTrackedQueryManager filteredQueryIdsAtPath:]",
              "coverage": 1
            },
            {
              "name": "__47-[FTrackedQueryManager filteredQueryIdsAtPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager knownCompleteChildrenAtPath:]",
              "coverage": 1
            },
            {
              "name": "__52-[FTrackedQueryManager knownCompleteChildrenAtPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__52-[FTrackedQueryManager knownCompleteChildrenAtPath:]_block_invoke.206",
              "coverage": 1
            },
            {
              "name": "-[FTrackedQueryManager verifyCache]",
              "coverage": 0.9130434782608695
            },
            {
              "name": "__35-[FTrackedQueryManager verifyCache]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__35-[FTrackedQueryManager verifyCache]_block_invoke.220",
              "coverage": 0.7777777777777778
            }
          ]
        },
        {
          "name": "FRangedFilter.m",
          "coverage": 0.9130434782608695,
          "type": "objc",
          "functions": [
            {
              "name": "-[FRangedFilter initWithQueryParams:]",
              "coverage": 1
            },
            {
              "name": "+[FRangedFilter startPostFromQueryParams:]",
              "coverage": 1
            },
            {
              "name": "+[FRangedFilter endPostFromQueryParams:]",
              "coverage": 1
            },
            {
              "name": "-[FRangedFilter matchesKey:andNode:]",
              "coverage": 1
            },
            {
              "name": "-[FRangedFilter updateChildIn:forChildKey:newChild:affectedPath:fromSource:accumulator:]",
              "coverage": 1
            },
            {
              "name": "-[FRangedFilter updateFullNode:withNewNode:accumulator:]",
              "coverage": 0.875
            },
            {
              "name": "__56-[FRangedFilter updateFullNode:withNewNode:accumulator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FRangedFilter updatePriority:forNode:]",
              "coverage": 0
            },
            {
              "name": "-[FRangedFilter filtersNodes]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FSyncPoint.m",
          "coverage": 0.915,
          "type": "objc",
          "functions": [
            {
              "name": "-[FSyncPoint initWithPersistenceManager:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint applyOperation:toView:writesCache:serverCache:]",
              "coverage": 1
            },
            {
              "name": "__60-[FSyncPoint applyOperation:toView:writesCache:serverCache:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint applyOperation:writesCache:serverCache:]",
              "coverage": 1
            },
            {
              "name": "__53-[FSyncPoint applyOperation:writesCache:serverCache:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint addEventRegistration:forNonExistingViewForQuery:writesCache:serverCache:]",
              "coverage": 1
            },
            {
              "name": "__86-[FSyncPoint addEventRegistration:forNonExistingViewForQuery:writesCache:serverCache:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint addEventRegistration:forExistingViewForQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint removeEventRegistration:forQuery:cancelError:]",
              "coverage": 0.6341463414634146
            },
            {
              "name": "__59-[FSyncPoint removeEventRegistration:forQuery:cancelError:]_block_invoke",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FSyncPoint queryViews]",
              "coverage": 1
            },
            {
              "name": "__24-[FSyncPoint queryViews]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint completeServerCacheAtPath:]",
              "coverage": 1
            },
            {
              "name": "__40-[FSyncPoint completeServerCacheAtPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint viewForQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint viewExistsForQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint hasCompleteView]",
              "coverage": 1
            },
            {
              "name": "-[FSyncPoint completeView]",
              "coverage": 1
            },
            {
              "name": "__26-[FSyncPoint completeView]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FViewProcessor.m",
          "coverage": 0.923728813559322,
          "type": "objc",
          "functions": [
            {
              "name": "+[FNoCompleteChildSource instance]",
              "coverage": 1
            },
            {
              "name": "__34+[FNoCompleteChildSource instance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FNoCompleteChildSource completeChild:]",
              "coverage": 0
            },
            {
              "name": "-[FNoCompleteChildSource childByIndex:afterChild:isReverse:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeCompleteChildSource initWithWrites:viewCache:serverCache:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeCompleteChildSource completeChild:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeCompleteChildSource childByIndex:afterChild:isReverse:]",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor initWithFilter:]",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor applyOperationOn:operation:writesCache:completeCache:]",
              "coverage": 0.875
            },
            {
              "name": "-[FViewProcessor maybeAddValueFromOldViewCache:newViewCache:changes:]",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor generateEventCacheAfterServerEvent:path:writesCache:source:accumulator:]",
              "coverage": 0.918918918918919
            },
            {
              "name": "-[FViewProcessor applyServerOverwriteTo:changePath:snap:writesCache:completeCache:filterServerNode:accumulator:]",
              "coverage": 0.8367346938775511
            },
            {
              "name": "-[FViewProcessor applyUserOverwriteTo:changePath:changedSnap:writesCache:completeCache:accumulator:]",
              "coverage": 0.9464285714285714
            },
            {
              "name": "+[FViewProcessor cache:hasChild:]",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor applyUserMergeTo:path:changedChildren:writesCache:completeCache:accumulator:]",
              "coverage": 1
            },
            {
              "name": "__94-[FViewProcessor applyUserMergeTo:path:changedChildren:writesCache:completeCache:accumulator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__94-[FViewProcessor applyUserMergeTo:path:changedChildren:writesCache:completeCache:accumulator:]_block_invoke.268",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor applyServerMergeTo:path:changedChildren:writesCache:completeCache:filterServerNode:accumulator:]",
              "coverage": 1
            },
            {
              "name": "__113-[FViewProcessor applyServerMergeTo:path:changedChildren:writesCache:completeCache:filterServerNode:accumulator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__113-[FViewProcessor applyServerMergeTo:path:changedChildren:writesCache:completeCache:filterServerNode:accumulator:]_block_invoke.292",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor ackUserWriteOn:ackPath:affectedTree:writesCache:completeCache:accumulator:]",
              "coverage": 0.9111111111111111
            },
            {
              "name": "__92-[FViewProcessor ackUserWriteOn:ackPath:affectedTree:writesCache:completeCache:accumulator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FViewProcessor revertUserWriteOn:path:writesCache:completeCache:accumulator:]",
              "coverage": 0.9298245614035088
            },
            {
              "name": "-[FViewProcessor listenCompleteOldCache:path:writesCache:serverCache:accumulator:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FLimitedFilter.m",
          "coverage": 0.9504950495049505,
          "type": "objc",
          "functions": [
            {
              "name": "-[FLimitedFilter initWithQueryParams:]",
              "coverage": 1
            },
            {
              "name": "-[FLimitedFilter updateChildIn:forChildKey:newChild:affectedPath:fromSource:accumulator:]",
              "coverage": 1
            },
            {
              "name": "-[FLimitedFilter fullLimitUpdateNode:forChildKey:newChild:fromSource:accumulator:]",
              "coverage": 0.9368421052631579
            },
            {
              "name": "-[FLimitedFilter updateFullNode:withNewNode:accumulator:]",
              "coverage": 1
            },
            {
              "name": "__57-[FLimitedFilter updateFullNode:withNewNode:accumulator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FLimitedFilter updatePriority:forNode:]",
              "coverage": 0
            },
            {
              "name": "-[FLimitedFilter filtersNodes]",
              "coverage": 1
            },
            {
              "name": "-[FLimitedFilter indexedFilter]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FEventGenerator.m",
          "coverage": 0.9534883720930233,
          "type": "objc",
          "functions": [
            {
              "name": "-[FEventGenerator initWithQuery:]",
              "coverage": 1
            },
            {
              "name": "-[FEventGenerator generateEventsForChanges:eventCache:eventRegistrations:]",
              "coverage": 1
            },
            {
              "name": "-[FEventGenerator generateEvents:forType:changes:eventCache:eventRegistrations:]",
              "coverage": 1
            },
            {
              "name": "__80-[FEventGenerator generateEvents:forType:changes:eventCache:eventRegistrations:]_block_invoke",
              "coverage": 0.6363636363636364
            },
            {
              "name": "-[FEventGenerator generateEventForChange:registration:eventCache:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FRangeMerge.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "-[FRangeMerge initWithStart:end:updates:]",
              "coverage": 1
            },
            {
              "name": "-[FRangeMerge applyToNode:]",
              "coverage": 1
            },
            {
              "name": "-[FRangeMerge updateRangeInNode:node:updates:]",
              "coverage": 1
            },
            {
              "name": "__46-[FRangeMerge updateRangeInNode:node:updates:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__46-[FRangeMerge updateRangeInNode:node:updates:]_block_invoke.41",
              "coverage": 1
            },
            {
              "name": "__46-[FRangeMerge updateRangeInNode:node:updates:]_block_invoke.45",
              "coverage": 1
            },
            {
              "name": "-[FRangeMerge description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FTreeSortedDictionary.m",
          "coverage": 0.96415770609319,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTreeSortedDictionary initWithComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary initWithComparator:withRoot:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary insertKey:withValue:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary removeKey:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary get:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary getPredecessorKey:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary count]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary minKey]",
              "coverage": 0
            },
            {
              "name": "-[FTreeSortedDictionary maxKey]",
              "coverage": 0
            },
            {
              "name": "-[FTreeSortedDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary enumerateKeysAndObjectsReverse:usingBlock:]",
              "coverage": 1
            },
            {
              "name": "__67-[FTreeSortedDictionary enumerateKeysAndObjectsReverse:usingBlock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__67-[FTreeSortedDictionary enumerateKeysAndObjectsReverse:usingBlock:]_block_invoke.60",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary contains:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary keyEnumerator]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary keyEnumeratorFrom:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary reverseKeyEnumerator]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionary reverseKeyEnumeratorFrom:]",
              "coverage": 1
            },
            {
              "name": "log_base2",
              "coverage": 1
            },
            {
              "name": "base1_2List_next",
              "coverage": 1
            },
            {
              "name": "bit_mask",
              "coverage": 1
            },
            {
              "name": "base1_2List_new",
              "coverage": 1
            },
            {
              "name": "base1_2List_free",
              "coverage": 1
            },
            {
              "name": "+[FTreeSortedDictionary buildBalancedTree:dictionary:subArrayStartIndex:length:]",
              "coverage": 1
            },
            {
              "name": "+[FTreeSortedDictionary rootFrom12List:keyList:dictionary:]",
              "coverage": 1
            },
            {
              "name": "__59+[FTreeSortedDictionary rootFrom12List:keyList:dictionary:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FTreeSortedDictionary fromDictionary:withComparator:]",
              "coverage": 0.9411764705882353
            },
            {
              "name": "__55+[FTreeSortedDictionary fromDictionary:withComparator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__55+[FTreeSortedDictionary fromDictionary:withComparator:]_block_invoke.99",
              "coverage": 0.7142857142857143
            }
          ]
        },
        {
          "name": "FPath.m",
          "coverage": 0.9644444444444444,
          "type": "objc",
          "functions": [
            {
              "name": "+[FPath relativePathFrom:to:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "+[FPath pathWithString:]",
              "coverage": 1
            },
            {
              "name": "-[FPath initWith:]",
              "coverage": 1
            },
            {
              "name": "-[FPath initWithPieces:andPieceNum:]",
              "coverage": 1
            },
            {
              "name": "-[FPath copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[FPath description]",
              "coverage": 1
            },
            {
              "name": "-[FPath getFront]",
              "coverage": 1
            },
            {
              "name": "-[FPath length]",
              "coverage": 1
            },
            {
              "name": "-[FPath popFront]",
              "coverage": 1
            },
            {
              "name": "-[FPath getBack]",
              "coverage": 1
            },
            {
              "name": "-[FPath toString]",
              "coverage": 1
            },
            {
              "name": "-[FPath toStringWithTrailingSlash]",
              "coverage": 1
            },
            {
              "name": "-[FPath toStringWithTrailingSlash:]",
              "coverage": 1
            },
            {
              "name": "-[FPath wireFormat]",
              "coverage": 1
            },
            {
              "name": "-[FPath parent]",
              "coverage": 1
            },
            {
              "name": "-[FPath child:]",
              "coverage": 1
            },
            {
              "name": "-[FPath childFromString:]",
              "coverage": 1
            },
            {
              "name": "-[FPath isEmpty]",
              "coverage": 1
            },
            {
              "name": "+[FPath empty]",
              "coverage": 1
            },
            {
              "name": "__14+[FPath empty]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FPath contains:]",
              "coverage": 1
            },
            {
              "name": "-[FPath enumerateComponentsUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FPath compare:]",
              "coverage": 1
            },
            {
              "name": "-[FPath isEqual:]",
              "coverage": 0.8888888888888888
            },
            {
              "name": "-[FPath hash]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FQueryParams.m",
          "coverage": 0.9703703703703703,
          "type": "objc",
          "functions": [
            {
              "name": "+[FQueryParams defaultInstance]",
              "coverage": 1
            },
            {
              "name": "__31+[FQueryParams defaultInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams init]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams indexStartValue]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams indexStartKey]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams indexEndValue]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams indexEndKey]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams hasAnchoredLimit]",
              "coverage": 0
            },
            {
              "name": "-[FQueryParams limit]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams hasStart]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams hasEnd]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams mutableCopy]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams limitTo:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams limitToFirst:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams limitToLast:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams startAt:childKey:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams startAt:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams endAt:childKey:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams endAt:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams orderBy:]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams wireProtocolParams]",
              "coverage": 0.9772727272727273
            },
            {
              "name": "+[FQueryParams fromQueryObject:]",
              "coverage": 0.95
            },
            {
              "name": "-[FQueryParams isViewFromLeft]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams nodeFilter]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams isValid]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams loadsAllData]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams isDefault]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams description]",
              "coverage": 1
            },
            {
              "name": "-[FQueryParams isEqual:]",
              "coverage": 0.8947368421052632
            },
            {
              "name": "-[FQueryParams hash]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FSparseSnapshotTree.m",
          "coverage": 0.9736842105263158,
          "type": "objc",
          "functions": [
            {
              "name": "-[FSparseSnapshotTree init]",
              "coverage": 1
            },
            {
              "name": "-[FSparseSnapshotTree findPath:]",
              "coverage": 1
            },
            {
              "name": "-[FSparseSnapshotTree rememberData:onPath:]",
              "coverage": 1
            },
            {
              "name": "-[FSparseSnapshotTree forgetPath:]",
              "coverage": 0.9318181818181818
            },
            {
              "name": "__34-[FSparseSnapshotTree forgetPath:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSparseSnapshotTree forEachTreeAtPath:do:]",
              "coverage": 1
            },
            {
              "name": "__44-[FSparseSnapshotTree forEachTreeAtPath:do:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FSparseSnapshotTree forEachChild:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIndexedNode.m",
          "coverage": 0.9736842105263158,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIndexedNode fallbackIndex]",
              "coverage": 1
            },
            {
              "name": "__29+[FIndexedNode fallbackIndex]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIndexedNode indexedNodeWithNode:]",
              "coverage": 1
            },
            {
              "name": "+[FIndexedNode indexedNodeWithNode:index:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode initWithNode:index:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode initWithNode:index:indexed:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode ensureIndexed]",
              "coverage": 1
            },
            {
              "name": "__29-[FIndexedNode ensureIndexed]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__29-[FIndexedNode ensureIndexed]_block_invoke.35",
              "coverage": 1
            },
            {
              "name": "__29-[FIndexedNode ensureIndexed]_block_invoke.47",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode hasIndex:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode updateChild:withNewChild:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode updatePriority:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode firstChild]",
              "coverage": 0.9166666666666666
            },
            {
              "name": "-[FIndexedNode lastChild]",
              "coverage": 0.9166666666666666
            },
            {
              "name": "-[FIndexedNode predecessorForChildKey:childNode:index:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIndexedNode enumerateChildrenReverse:usingBlock:]",
              "coverage": 1
            },
            {
              "name": "__52-[FIndexedNode enumerateChildrenReverse:usingBlock:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIndexedNode childEnumerator]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIndexedFilter.m",
          "coverage": 0.9758064516129032,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIndexedFilter initWithIndex:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedFilter updateChildIn:forChildKey:newChild:affectedPath:fromSource:accumulator:]",
              "coverage": 0.9375
            },
            {
              "name": "-[FIndexedFilter updateFullNode:withNewNode:accumulator:]",
              "coverage": 1
            },
            {
              "name": "__57-[FIndexedFilter updateFullNode:withNewNode:accumulator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__57-[FIndexedFilter updateFullNode:withNewNode:accumulator:]_block_invoke.52",
              "coverage": 1
            },
            {
              "name": "-[FIndexedFilter updatePriority:forNode:]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedFilter filtersNodes]",
              "coverage": 1
            },
            {
              "name": "-[FIndexedFilter indexedFilter]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FArraySortedDictionary.m",
          "coverage": 0.9759615384615384,
          "type": "objc",
          "functions": [
            {
              "name": "-[FArraySortedDictionaryEnumerator initWithKeys:startPos:isReverse:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionaryEnumerator nextObject]",
              "coverage": 1
            },
            {
              "name": "+[FArraySortedDictionary fromDictionary:withComparator:]",
              "coverage": 1
            },
            {
              "name": "__56+[FArraySortedDictionary fromDictionary:withComparator:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__56+[FArraySortedDictionary fromDictionary:withComparator:]_block_invoke.43",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FArraySortedDictionary initWithComparator:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary initWithComparator:keys:values:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary findInsertPositionForKey:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary findKey:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary insertKey:withValue:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary removeKey:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary get:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary getPredecessorKey:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary count]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary minKey]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary maxKey]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary enumerateKeysAndObjectsReverse:usingBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary contains:]",
              "coverage": 0
            },
            {
              "name": "-[FArraySortedDictionary keyEnumerator]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary keyEnumeratorFrom:]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary reverseKeyEnumerator]",
              "coverage": 1
            },
            {
              "name": "-[FArraySortedDictionary reverseKeyEnumeratorFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FCompoundHash.m",
          "coverage": 0.9883040935672515,
          "type": "objc",
          "functions": [
            {
              "name": "-[FCompoundHashBuilder initWithSplitStrategy:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder isBuildingRange]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder currentHashLength]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder currentPath]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder currentPathWithDepth:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder enumerateCurrentPathToDepth:withBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder appendKey:toString:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder ensureRange]",
              "coverage": 1
            },
            {
              "name": "__35-[FCompoundHashBuilder ensureRange]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder processLeaf:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder startChild:]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder endChild]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder finishHashing]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHashBuilder endRange]",
              "coverage": 1
            },
            {
              "name": "-[FCompoundHash initWithPosts:hashes:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "+[FCompoundHash simpleSizeSplitStrategyForNode:]",
              "coverage": 1
            },
            {
              "name": "__48+[FCompoundHash simpleSizeSplitStrategyForNode:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FCompoundHash fromNode:]",
              "coverage": 1
            },
            {
              "name": "+[FCompoundHash fromNode:splitStrategy:]",
              "coverage": 1
            },
            {
              "name": "+[FCompoundHash processNode:builder:]",
              "coverage": 1
            },
            {
              "name": "__37+[FCompoundHash processNode:builder:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FTransformedEnumerator.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTransformedEnumerator initWithEnumerator:andTransform:]",
              "coverage": 1
            },
            {
              "name": "-[FTransformedEnumerator nextObject]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FClock.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FSystemClock currentTime]",
              "coverage": 1
            },
            {
              "name": "+[FSystemClock clock]",
              "coverage": 1
            },
            {
              "name": "__21+[FSystemClock clock]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FOffsetClock currentTime]",
              "coverage": 1
            },
            {
              "name": "-[FOffsetClock initWithClock:offset:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FEmptyNode.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FEmptyNode emptyNode]",
              "coverage": 1
            },
            {
              "name": "__23+[FEmptyNode emptyNode]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FViewCache.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FViewCache initWithEventCache:serverCache:]",
              "coverage": 1
            },
            {
              "name": "-[FViewCache updateEventSnap:isComplete:isFiltered:]",
              "coverage": 1
            },
            {
              "name": "-[FViewCache updateServerSnap:isComplete:isFiltered:]",
              "coverage": 1
            },
            {
              "name": "-[FViewCache completeEventSnap]",
              "coverage": 1
            },
            {
              "name": "-[FViewCache completeServerSnap]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FAtomicNumber.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FAtomicNumber init]",
              "coverage": 1
            },
            {
              "name": "-[FAtomicNumber getAndIncrement]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FCacheNode.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FCacheNode initWithIndexedNode:isFullyInitialized:isFiltered:]",
              "coverage": 1
            },
            {
              "name": "-[FCacheNode isCompleteForPath:]",
              "coverage": 1
            },
            {
              "name": "-[FCacheNode isCompleteForChild:]",
              "coverage": 1
            },
            {
              "name": "-[FCacheNode node]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FTreeNode.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTreeNode init]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FWriteTreeRef.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FWriteTreeRef initWithPath:writeTree:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef calculateCompleteEventCacheWithCompleteServerCache:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef calculateCompleteEventChildrenWithCompleteServerChildren:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef calculateEventCacheAfterServerOverwriteWithChildPath:existingEventSnap:existingServerSnap:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef shadowingWriteAtPath:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef calculateNextNodeAfterPost:completeServerData:reverse:index:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef calculateCompleteChild:cache:]",
              "coverage": 1
            },
            {
              "name": "-[FWriteTreeRef childWriteTreeRef:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FSnapshotHolder.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FSnapshotHolder init]",
              "coverage": 1
            },
            {
              "name": "-[FSnapshotHolder getNode:]",
              "coverage": 1
            },
            {
              "name": "-[FSnapshotHolder updateSnapshot:withNewSnapshot:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FTuplePathValue.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTuplePathValue initWithPath:value:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FTupleRemovedQueriesEvents.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTupleRemovedQueriesEvents initWithRemovedQueries:cancelEvents:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FTreeSortedDictionaryEnumerator.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FTreeSortedDictionaryEnumerator initWithImmutableSortedDictionary:startKey:isReverse:]",
              "coverage": 1
            },
            {
              "name": "-[FTreeSortedDictionaryEnumerator nextObject]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "slice.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Slice::Slice()",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::Slice(char const*, unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::Slice(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::Slice(char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::data() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::size() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::empty() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::operator[](unsigned long) const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::clear()",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::remove_prefix(unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::ToString() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::starts_with(leveldb::Slice const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::operator==(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::operator!=(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::compare(leveldb::Slice const&amp;) const",
              "coverage": 1
            }
          ]
        },
        {
          "name": "options.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::ReadOptions::ReadOptions()",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteOptions::WriteOptions()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FViewProcessorResult.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FViewProcessorResult initWithViewCache:changes:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "DynamicLinks_Example_iOS.app",
      "coverage": 0.7375878853434289,
      "files": [
        {
          "name": "GINArgument.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[GINArgument argumentWithObject:]",
              "coverage": 0
            },
            {
              "name": "+[GINArgument argumentWithInteger:]",
              "coverage": 0
            },
            {
              "name": "+[GINArgument setNextArgumentInList:atIndex:inInvocation:]",
              "coverage": 0
            },
            {
              "name": "-[GINArgument setArgumentInInvocation:atIndex:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GINInvocation.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[GINInvocation objectByPerformingSelector:onTarget:numberOfArguments:]",
              "coverage": 0
            },
            {
              "name": "+[GINInvocation doubleByPerformingSelector:onTarget:numberOfArguments:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDLDefaultRetrievalProcessV2.m",
          "coverage": 0.11191335740072202,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 initWithNetworkingService:clientID:URLScheme:APIKey:FDLSDKVersion:delegate:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLink]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 isCompleted]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 javaScriptExecutor:completedExecutionWithResult:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 javaScriptExecutor:failedWithError:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLinkInternal]",
              "coverage": 0
            },
            {
              "name": "__68-[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLinkInternal]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 foundResultsWithDynamicLinks]",
              "coverage": 0
            },
            {
              "name": "__62-[FIRDLDefaultRetrievalProcessV2 foundResultsWithDynamicLinks]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 resultsWithErrors]",
              "coverage": 0
            },
            {
              "name": "__51-[FIRDLDefaultRetrievalProcessV2 resultsWithErrors]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 results]",
              "coverage": 0
            },
            {
              "name": "__41-[FIRDLDefaultRetrievalProcessV2 results]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 resultWithUniqueMatchedDynamicLink]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 handleRequestResultsUpdated]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 markCompleted]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 uniqueMatchLinkToCheck]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 clearUsedUniqueMatchLinkToCheckFromClipboard]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLDefaultRetrievalProcessV2 fetchLocaleFromWebView]",
              "coverage": 0.8
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenDeleteOperation.m",
          "coverage": 0.12643678160919541,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation initWithAuthorizedEntity:scope:checkinPreferences:keyPair:action:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation performTokenOperation]",
              "coverage": 0
            },
            {
              "name": "__58-[FIRInstanceIDTokenDeleteOperation performTokenOperation]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation handleResponseWithData:response:error:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDLJavaScriptExecutor.m",
          "coverage": 0.1736111111111111,
          "type": "objc",
          "functions": [
            {
              "name": "FIRDLTypeofFingerprintJSMethodNameString",
              "coverage": 0
            },
            {
              "name": "__FIRDLTypeofFingerprintJSMethodNameString_block_invoke",
              "coverage": 0
            },
            {
              "name": "GINFingerprintJSMethodString",
              "coverage": 0
            },
            {
              "name": "__GINFingerprintJSMethodString_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor initWithDelegate:script:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDLJavaScriptExecutor start]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRDLJavaScriptExecutor handleExecutionResult:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor handleExecutionError:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor cleanup]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor webView:didFinishNavigation:]",
              "coverage": 0
            },
            {
              "name": "__55-[FIRDLJavaScriptExecutor webView:didFinishNavigation:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__55-[FIRDLJavaScriptExecutor webView:didFinishNavigation:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor webView:didFailNavigation:withError:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor webViewDidFinishLoad:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDLJavaScriptExecutor webView:didFailLoadWithError:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.2413793103448276,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDynamicLinkNetworking.m",
          "coverage": 0.30670103092783507,
          "type": "objc",
          "functions": [
            {
              "name": "FIRURLParameterString",
              "coverage": 0.6666666666666666
            },
            {
              "name": "FIRDynamicLinkAPIKeyParameter",
              "coverage": 1
            },
            {
              "name": "FIRMakeHTTPRequest",
              "coverage": 1
            },
            {
              "name": "__FIRMakeHTTPRequest_block_invoke",
              "coverage": 0
            },
            {
              "name": "FIRDataWithDictionary",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkNetworking initWithAPIKey:clientID:URLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkNetworking resolveShortLink:FDLSDKVersion:completion:]",
              "coverage": 0.9387755102040817
            },
            {
              "name": "__70-[FIRDynamicLinkNetworking resolveShortLink:FDLSDKVersion:completion:]_block_invoke",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRDynamicLinkNetworking retrievePendingDynamicLinkWithIOSVersion:resolutionHeight:resolutionWidth:locale:localeRaw:localeFromWebView:timezone:modelName:FDLSDKVersion:appInstallationDate:uniqueMatchVisualStyle:retrievalProcessType:uniqueMatchLinkToCheck:handler:]",
              "coverage": 0
            },
            {
              "name": "__265-[FIRDynamicLinkNetworking retrievePendingDynamicLinkWithIOSVersion:resolutionHeight:resolutionWidth:locale:localeRaw:localeFromWebView:timezone:modelName:FDLSDKVersion:appInstallationDate:uniqueMatchVisualStyle:retrievalProcessType:uniqueMatchLinkToCheck:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinkNetworking convertInvitation:handler:]",
              "coverage": 0
            },
            {
              "name": "__54-[FIRDynamicLinkNetworking convertInvitation:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__54-[FIRDynamicLinkNetworking convertInvitation:handler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinkNetworking sendRequestWithBaseURLString:requestBody:endpointPath:parserBlock:completion:]",
              "coverage": 0
            },
            {
              "name": "__105-[FIRDynamicLinkNetworking sendRequestWithBaseURLString:requestBody:endpointPath:parserBlock:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__105-[FIRDynamicLinkNetworking sendRequestWithBaseURLString:requestBody:endpointPath:parserBlock:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__105-[FIRDynamicLinkNetworking sendRequestWithBaseURLString:requestBody:endpointPath:parserBlock:completion:]_block_invoke.201",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinkNetworking executeOnePlatformRequest:forURL:completionHandler:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceID+Private.m",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceID(Private) cachedCheckinPreferences]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID(Private) fetchCheckinInfoWithHandler:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID(Private) appInstanceID:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSError+FIRInstanceID.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSError(FIRInstanceID) instanceIDErrorCode]",
              "coverage": 0
            },
            {
              "name": "+[NSError(FIRInstanceID) errorWithFIRInstanceIDErrorCode:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRInstanceID) errorWithFIRInstanceIDErrorCode:userInfo:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRInstanceID) FIRInstanceIDErrorMissingCheckin]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDStringEncoding.m",
          "coverage": 0.5308641975308642,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDStringEncoding rfc4648Base64WebsafeStringEncoding]",
              "coverage": 1
            },
            {
              "name": "lcm",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStringEncoding stringEncodingWithString:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding initWithString:]",
              "coverage": 0.6896551724137931
            },
            {
              "name": "-[FIRInstanceIDStringEncoding description]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDStringEncoding doPad]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDStringEncoding setDoPad:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding setPaddingChar:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding encode:]",
              "coverage": 0.8444444444444444
            },
            {
              "name": "-[FIRInstanceIDStringEncoding decode:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDynamicLinkComponentsKeyProvider.m",
          "coverage": 0.6,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDynamicLinkComponentsKeyProvider APIKey]",
              "coverage": 0.6
            }
          ]
        },
        {
          "name": "FIRDynamicLinks.m",
          "coverage": 0.6314878892733564,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDynamicLinks load]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinks componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__39+[FIRDynamicLinks componentsToRegister]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinks configureWithApp:]",
              "coverage": 0.6
            },
            {
              "name": "-[FIRDynamicLinks configureDynamicLinks:]",
              "coverage": 0.391304347826087
            },
            {
              "name": "-[FIRDynamicLinks initWithAnalytics:]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinks dynamicLinks]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks setUpWithLaunchOptions:apiKey:clientID:urlScheme:userDefaults:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks checkForPendingDynamicLinkUsingExperimentalRetrievalProcess]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks checkForPendingDynamicLink]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinks sharedInstance]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks checkForPendingDeepLink]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks deepLinkFromCustomSchemeURL:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks deepLinkFromUniversalLinkURL:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks shouldHandleDeepLinkFromCustomSchemeURL:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks shouldHandleDynamicLinkFromCustomSchemeURL:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks dynamicLinkFromCustomSchemeURL:]",
              "coverage": 0.9444444444444444
            },
            {
              "name": "-[FIRDynamicLinks dynamicLinkFromUniversalLinkURL:]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRDynamicLinks dynamicLinkFromUniversalLinkURL:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks handleUniversalLink:completion:]",
              "coverage": 1
            },
            {
              "name": "__50-[FIRDynamicLinks handleUniversalLink:completion:]_block_invoke",
              "coverage": 0.8181818181818182
            },
            {
              "name": "__50-[FIRDynamicLinks handleUniversalLink:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks resolveShortLink:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks matchesShortLinkFormat:]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinks isAutomaticRetrievalEnabled]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRDynamicLinks dynamicLinkNetworking]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks canParseCustomSchemeURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks canParseUniversalLinkURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinks handleIncomingCustomSchemeDeepLink:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks passRetrievedDynamicLinkToApplication:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks handlePendingDynamicLinkRetrievalFailureWithErrorCode:errorDescription:underlyingError:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLinks retrievalProcess:completedWithResult:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDynamicLinks genericDiagnosticInformation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinks diagnosticAnalyzeEntitlements]",
              "coverage": 0
            },
            {
              "name": "+[FIRDynamicLinks performDiagnosticsIncludingHeaderFooter:detectedErrors:]",
              "coverage": 0.7671232876712328
            },
            {
              "name": "+[FIRDynamicLinks performDiagnosticsWithCompletion:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenManager.m",
          "coverage": 0.7067039106145251,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenManager init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager configureTokenOperations]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke.52",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke_2.53",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager cachedTokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]",
              "coverage": 0.9166666666666666
            },
            {
              "name": "__83-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__83-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke.86",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteAllTokensLocallyWithHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager stopAllTokenOperations]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager store:didDeleteFCMScopedTokensForCheckin:]",
              "coverage": 0
            },
            {
              "name": "__70-[FIRInstanceIDTokenManager store:didDeleteFCMScopedTokensForCheckin:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager createFetchOperationWithAuthorizedEntity:scope:options:keyPair:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager createDeleteOperationWithAuthorizedEntity:scope:checkinPreferences:keyPair:action:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager checkForTokenRefreshPolicy]",
              "coverage": 0.8125
            },
            {
              "name": "-[FIRInstanceIDTokenManager updateTokensToAPNSDeviceToken:isSandbox:]",
              "coverage": 0.9333333333333333
            }
          ]
        },
        {
          "name": "FIRInstanceIDLogger.m",
          "coverage": 0.72,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDLogger formatMessageCode:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncDebug:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncInfo:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncNotice:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncWarning:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncError:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDSharedLogger",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDSharedLogger_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceID.m",
          "coverage": 0.7266414141414141,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDResult copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID instanceID]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRInstanceID initPrivately]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID instanceIDForTests]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID token]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID instanceIDWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceID instanceIDWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceID instanceIDWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID cachedTokenIfAvailable]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setDefaultFCMToken:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]",
              "coverage": 0.8584905660377359
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke.163",
              "coverage": 0.9302325581395349
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke_2.171",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]",
              "coverage": 0.84375
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke",
              "coverage": 0.8
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke.195",
              "coverage": 0.8695652173913043
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke_2.196",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID asyncLoadKeyPairWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__45-[FIRInstanceID asyncLoadKeyPairWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__45-[FIRInstanceID asyncLoadKeyPairWithHandler:]_block_invoke_2",
              "coverage": 0.7222222222222222
            },
            {
              "name": "-[FIRInstanceID getIDWithHandler:]",
              "coverage": 0.7837837837837838
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke.223",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteIDWithHandler:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke",
              "coverage": 0.5555555555555556
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke.240",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke_2.241",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke.250",
              "coverage": 0.8
            },
            {
              "name": "-[FIRInstanceID notifyIdentityReset]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteIdentityWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke",
              "coverage": 0.9137931034482759
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_4",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID load]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__37+[FIRInstanceID componentsToRegister]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID configureWithApp:]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[FIRInstanceID configureInstanceIDWithOptions:app:]",
              "coverage": 0.7222222222222222
            },
            {
              "name": "+[FIRInstanceID configureErrorWithReason:]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID exitWithReason:forFirebaseApp:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID didCompleteConfigure]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID isFCMAutoInitEnabled]",
              "coverage": 0.8709677419354839
            },
            {
              "name": "-[FIRInstanceID start]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FIRInstanceID setupTokenManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setupKeyPairManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setupNotificationListeners]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID maxRetryCountForDefaultToken]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID minIntervalForDefaultTokenRetry]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID maxRetryIntervalForDefaultTokenInSeconds]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID retryIntervalToFetchDefaultToken]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRInstanceID fetchDefaultToken]",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID fetchDefaultToken]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID defaultTokenWithHandler:]",
              "coverage": 0.89
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke",
              "coverage": 0.8133333333333334
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke.406",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID notifyAPNSTokenIsSet:]",
              "coverage": 0
            },
            {
              "name": "__38-[FIRInstanceID notifyAPNSTokenIsSet:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__38-[FIRInstanceID notifyAPNSTokenIsSet:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID isSandboxApp]",
              "coverage": 1
            },
            {
              "name": "__29-[FIRInstanceID isSandboxApp]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID isProductionApp]",
              "coverage": 0.22556390977443608
            },
            {
              "name": "-[FIRInstanceID logAPNSConfigurationError:]",
              "coverage": 0.875
            }
          ]
        },
        {
          "name": "FDLUtilities.m",
          "coverage": 0.7358490566037735,
          "type": "objc",
          "functions": [
            {
              "name": "FIRDLCookieRetrievalURL",
              "coverage": 1
            },
            {
              "name": "FIRDLURLQueryStringFromDictionary",
              "coverage": 1
            },
            {
              "name": "__FIRDLURLQueryStringFromDictionary_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRDLDictionaryFromQuery",
              "coverage": 1
            },
            {
              "name": "FIRDLDeepLinkURLWithInviteID",
              "coverage": 0.926829268292683
            },
            {
              "name": "FIRDLOSVersionSupported",
              "coverage": 1
            },
            {
              "name": "FIRDLAppInstallationDate",
              "coverage": 0
            },
            {
              "name": "FIRDLDeviceModelName",
              "coverage": 0
            },
            {
              "name": "__FIRDLDeviceModelName_block_invoke",
              "coverage": 0
            },
            {
              "name": "FIRDLDeviceLocale",
              "coverage": 1
            },
            {
              "name": "FIRDLDeviceLocaleRaw",
              "coverage": 1
            },
            {
              "name": "FIRDLDeviceTimezone",
              "coverage": 1
            },
            {
              "name": "FIRDLIsURLForWhiteListedCustomDomain",
              "coverage": 1
            },
            {
              "name": "FIRDLCanParseUniversalLinkURL",
              "coverage": 1
            },
            {
              "name": "FIRDLMatchesShortLinkFormat",
              "coverage": 1
            },
            {
              "name": "FIRDLMatchTypeStringFromServerString",
              "coverage": 0
            },
            {
              "name": "__FIRDLMatchTypeStringFromServerString_block_invoke",
              "coverage": 0
            },
            {
              "name": "FIRDLAddToAllowListForCustomDomainsArray",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenFetchOperation.m",
          "coverage": 0.75,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenFetchOperation initWithAuthorizedEntity:scope:options:checkinPreferences:keyPair:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation performTokenOperation]",
              "coverage": 0.9206349206349206
            },
            {
              "name": "__57-[FIRInstanceIDTokenFetchOperation performTokenOperation]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation handleResponseWithData:response:error:]",
              "coverage": 0.5454545454545454
            },
            {
              "name": "__74-[FIRInstanceIDTokenFetchOperation handleResponseWithData:response:error:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation parseFetchTokenResponse:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDVersionUtilities.m",
          "coverage": 0.775,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDParseCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDParseCurrentLibraryVersion_block_invoke",
              "coverage": 0.9285714285714286
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionMajor",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionMinor",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionPatch",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionIsBeta",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDURLQueryItem.m",
          "coverage": 0.78125,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDURLQueryItem queryItemWithName:value:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDURLQueryItem initWithName:value:]",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDQueryFromQueryItems",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRInstanceIDBackupExcludedPlist.m",
          "coverage": 0.7816901408450704,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist initWithFileName:subDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist writeDictionary:error:]",
              "coverage": 0.696969696969697
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist deleteFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist contentAsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist moveToApplicationSupportSubDirectory:]",
              "coverage": 0.5428571428571428
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist doesFileExist]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist plistDirectory]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist plistPathInDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist pathWithName:inDirectory:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist doesFileExistInDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist supportedDirectory]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinStore.m",
          "coverage": 0.7874396135265701,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinStore initWithCheckinPlistFileName:subDirectoryName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore initWithCheckinPlist:keychain:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore hasCheckinPlist]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore bundleIdentifierForKeychainAccount]",
              "coverage": 1
            },
            {
              "name": "__63-[FIRInstanceIDCheckinStore bundleIdentifierForKeychainAccount]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore saveCheckinPreferences:handler:]",
              "coverage": 0.5573770491803278
            },
            {
              "name": "__60-[FIRInstanceIDCheckinStore saveCheckinPreferences:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore removeCheckinPreferencesWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceIDCheckinStore removeCheckinPreferencesWithHandler:]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRInstanceIDCheckinStore cachedCheckinPreferences]",
              "coverage": 0.7073170731707317
            },
            {
              "name": "-[FIRInstanceIDCheckinStore migrateCheckinItemIfNeeded]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDynamicLink.m",
          "coverage": 0.8,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDynamicLink description]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLink initWithParametersDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLink setUrl:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLink setMinimumAppVersion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLink setInviteId:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLink setWeakMatchEndpoint:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLink setMatchType:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLink setMatchMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRDynamicLink setParametersDictionaryValue:forKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLink matchConfidence]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLink stringWithMatchType:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "+[FIRDynamicLink matchTypeWithString:]",
              "coverage": 1
            },
            {
              "name": "__38+[FIRDynamicLink matchTypeWithString:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FDLLogging.m",
          "coverage": 0.8064516129032258,
          "type": "objc",
          "functions": [
            {
              "name": "FDLMessageCodeForLogIdentifier",
              "coverage": 1
            },
            {
              "name": "FDLLog",
              "coverage": 0.7692307692307693
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDLRetrievalProcessResult.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDLRetrievalProcessResult initWithDynamicLink:error:message:matchSource:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDLRetrievalProcessResult URLWithCustomURLScheme:]",
              "coverage": 0.7058823529411765
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenOperation.m",
          "coverage": 0.8323353293413174,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDTokenOperation sharedURLSession]",
              "coverage": 0
            },
            {
              "name": "__47+[FIRInstanceIDTokenOperation sharedURLSession]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenOperation initWithAction:forAuthorizedEntity:scope:options:checkinPreferences:keyPair:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation addCompletionHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isAsynchronous]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isExecuting]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation setExecuting:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isFinished]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation setFinished:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation start]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRInstanceIDTokenOperation finishWithResult:token:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation cancel]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation performTokenOperation]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceIDTokenOperation requestWithAuthHeader:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenOperation standardQueryItemsWithDeviceID:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation queryItemsWithKeyPair:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenOperation HTTPAuthHeaderFromCheckin:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPairStore.m",
          "coverage": 0.8351449275362319,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDKeyDataWithTag",
              "coverage": 0.8333333333333334
            },
            {
              "name": "FIRInstanceIDCachedKeyRefWithTag",
              "coverage": 0.7777777777777778
            },
            {
              "name": "FIRInstanceIDHasMigratedKeyPair",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDLegacyPublicTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDLegacyPrivateTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDPublicTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDPublicTagWithSubtype_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDPrivateTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDPrivateTagWithSubtype_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCreationTimeKeyWithSubtype",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore invalidateKeyPairsIfNeeded]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore hasCachedKeyPairs]",
              "coverage": 0.29411764705882354
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore appIdentityWithError:]",
              "coverage": 0.6
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore loadKeyPairWithError:]",
              "coverage": 0.78125
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore generateAndSaveKeyWithSubtype:creationTime:error:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore validCachedKeyPairWithSubtype:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore cachedKeyPairWithSubtype:error:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore keyPairForPrivateKeyTag:publicKeyTag:error:]",
              "coverage": 0.8387096774193549
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]",
              "coverage": 0.8771929824561403
            },
            {
              "name": "__68-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]_block_invoke",
              "coverage": 0.8636363636363636
            },
            {
              "name": "__68-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]_block_invoke_2",
              "coverage": 0.6428571428571429
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]_block_invoke",
              "coverage": 0.7619047619047619
            },
            {
              "name": "__58-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore deleteSavedKeyPairWithSubtype:handler:]",
              "coverage": 0.9375
            },
            {
              "name": "__67-[FIRInstanceIDKeyPairStore deleteSavedKeyPairWithSubtype:handler:]_block_invoke",
              "coverage": 0.76
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]",
              "coverage": 1
            },
            {
              "name": "__75+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]_block_invoke",
              "coverage": 0.7619047619047619
            },
            {
              "name": "__75+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]_block_invoke_2",
              "coverage": 0.5454545454545454
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore removeKeyPairCreationTimePlistWithError:]",
              "coverage": 0.5
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore keyStoreFileName]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDUtilities.m",
          "coverage": 0.8547008547008547,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDRegisterServer",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentTimestampInSeconds",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentTimestampInMilliseconds",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentAppVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAppIdentifier",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDFirebaseAppID",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDDeviceModel",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDDeviceModel_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDOperatingSystemVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDHasLocaleChanged",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDIsValidGCMScope",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDStringForAPNSDeviceToken",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAPNSTupleStringForTokenAndServerType",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentGCMVersion",
              "coverage": 0.6
            },
            {
              "name": "FIRInstanceIDCurrentLocale",
              "coverage": 0.4583333333333333
            }
          ]
        },
        {
          "name": "FDLURLComponents.m",
          "coverage": 0.8563922942206655,
          "type": "objc",
          "functions": [
            {
              "name": "FDLSafelyAddKeyValuePairToDictionary",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkGoogleAnalyticsParameters parameters]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkGoogleAnalyticsParameters parametersWithSource:medium:campaign:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters init]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters initWithSource:medium:campaign:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters setSource:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters source]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters setMedium:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters medium]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters setCampaign:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters campaign]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters setTerm:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters term]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters setContent:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters content]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkGoogleAnalyticsParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkIOSParameters parametersWithBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters initWithBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters setAppStoreID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters appStoreID]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters setFallbackURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters fallbackURL]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters setCustomScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters customScheme]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters setMinimumAppVersion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters minimumAppVersion]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters setIPadBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters iPadBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters setIPadFallbackURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters iPadFallbackURL]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkIOSParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkItunesConnectAnalyticsParameters parameters]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters init]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters setAffiliateToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters affiliateToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters setCampaignToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters campaignToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters setProviderToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters providerToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkItunesConnectAnalyticsParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkAndroidParameters parametersWithPackageName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters initWithPackageName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters packageName]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters setMinimumVersion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters minimumVersion]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters setFallbackURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters fallbackURL]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkAndroidParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkSocialMetaTagParameters parameters]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters init]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters setTitle:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters title]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters setDescriptionText:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters descriptionText]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters setImageURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters imageURL]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkSocialMetaTagParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkNavigationInfoParameters parameters]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkNavigationInfoParameters init]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkNavigationInfoParameters isForcedRedirectEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkNavigationInfoParameters setForcedRedirectEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkNavigationInfoParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkOtherPlatformParameters parameters]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkOtherPlatformParameters init]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkOtherPlatformParameters fallbackUrl]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkOtherPlatformParameters setFallbackUrl:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkOtherPlatformParameters dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkComponentsOptions options]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkComponentsOptions init]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkComponents componentsWithLink:domain:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkComponents initWithLink:domain:]",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkComponents componentsWithLink:domainURIPrefix:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkComponents initWithLink:domainURIPrefix:]",
              "coverage": 0.8
            },
            {
              "name": "+[FIRDynamicLinkComponents shortenURL:options:completion:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "__58+[FIRDynamicLinkComponents shortenURL:options:completion:]_block_invoke",
              "coverage": 0.3088235294117647
            },
            {
              "name": "__58+[FIRDynamicLinkComponents shortenURL:options:completion:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRDynamicLinkComponents shortenWithCompletion:]",
              "coverage": 0.3333333333333333
            },
            {
              "name": "-[FIRDynamicLinkComponents url]",
              "coverage": 1
            },
            {
              "name": "__31-[FIRDynamicLinkComponents url]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRDynamicLinkComponents sendHTTPRequest:completion:]",
              "coverage": 0
            },
            {
              "name": "__55+[FIRDynamicLinkComponents sendHTTPRequest:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FIRDynamicLinkComponents shorteningRequestForLongURL:options:]",
              "coverage": 0.9512195121951219
            }
          ]
        },
        {
          "name": "FIRInstanceIDStore.m",
          "coverage": 0.8579234972677595,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDStore initWithDelegate:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore initWithCheckinStore:tokenStore:delegate:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore hasSubDirectory:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "+[FIRInstanceIDStore supportedDirectory]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore pathForSupportSubDirectory:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore createSubDirectory:]",
              "coverage": 0.6
            },
            {
              "name": "+[FIRInstanceIDStore removeSubDirectory:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore resetCredentialsIfNeeded]",
              "coverage": 1
            },
            {
              "name": "__46-[FIRInstanceIDStore resetCredentialsIfNeeded]_block_invoke",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRInstanceIDStore tokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRInstanceIDStore cachedTokenInfos]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore saveTokenInfo:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore removeCachedTokenWithAuthorizedEntity:scope:]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[FIRInstanceIDStore removeAllCachedTokensWithHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore saveCheckinPreferences:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore cachedCheckinPreferences]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore removeCheckinPreferencesWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRInstanceIDStore removeCheckinPreferencesWithHandler:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenInfo.m",
          "coverage": 0.889763779527559,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenInfo initWithAuthorizedEntity:scope:token:appVersion:firebaseAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenInfo isFresh]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenInfo initWithCoder:]",
              "coverage": 0.78125
            },
            {
              "name": "-[FIRInstanceIDTokenInfo encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinPreferences.m",
          "coverage": 0.8913043478260869,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinPreferences checkinPlistContents]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences hasCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences hasValidCheckinInfo]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences setHasPreCachedAuthCredentials:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinService.m",
          "coverage": 0.896414342629482,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinService init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService checkinWithExistingCheckin:completion:]",
              "coverage": 0.9649122807017544
            },
            {
              "name": "__69-[FIRInstanceIDCheckinService checkinWithExistingCheckin:completion:]_block_invoke",
              "coverage": 0.7105263157894737
            },
            {
              "name": "-[FIRInstanceIDCheckinService stopFetching]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService checkinParametersWithExistingCheckin:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinService setCheckinTestBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDAPNSInfo.m",
          "coverage": 0.9090909090909091,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithDeviceToken:isSandbox:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithTokenOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithCoder:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo encodeWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo isEqualToAPNSInfo:]",
              "coverage": 0.7142857142857143
            }
          ]
        },
        {
          "name": "FIRInstanceIDAuthService.m",
          "coverage": 0.9166666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAuthService initWithCheckinService:store:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService initWithStore:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService scheduleCheckin:]",
              "coverage": 0.7
            },
            {
              "name": "-[FIRInstanceIDAuthService startCheckinTimerWithDuration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService clearScheduledCheckinTimer]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService onScheduledCheckinTimerFired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService performScheduledCheckin]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRInstanceIDAuthService performScheduledCheckin]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__51-[FIRInstanceIDAuthService performScheduledCheckin]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService calculateNextCheckinRetryIntervalInSeconds]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRInstanceIDAuthService hasValidCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService checkinPreferences]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService stopCheckinRequest]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService resetCheckinWithHandler:]",
              "coverage": 0
            },
            {
              "name": "__52-[FIRInstanceIDAuthService resetCheckinWithHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDAuthService notifyCheckinHandlersWithCheckin:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService cachedCheckinMatchesCheckin:]",
              "coverage": 0.5714285714285714
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeychain.m",
          "coverage": 0.9227053140096618,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDKeychain sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__39+[FIRInstanceIDKeychain sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain itemWithQuery:]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceIDKeychain itemWithQuery:]_block_invoke",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRInstanceIDKeychain removeItemWithQuery:handler:]",
              "coverage": 1
            },
            {
              "name": "__53-[FIRInstanceIDKeychain removeItemWithQuery:handler:]_block_invoke",
              "coverage": 0.8260869565217391
            },
            {
              "name": "__53-[FIRInstanceIDKeychain removeItemWithQuery:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain addItemWithQuery:handler:]",
              "coverage": 1
            },
            {
              "name": "__50-[FIRInstanceIDKeychain addItemWithQuery:handler:]_block_invoke",
              "coverage": 0.6470588235294118
            },
            {
              "name": "__50-[FIRInstanceIDKeychain addItemWithQuery:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain generateKeyPairWithPrivateTag:publicTag:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceIDKeychain generateKeyPairWithPrivateTag:publicTag:]_block_invoke",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRInstanceIDAuthKeyChain.m",
          "coverage": 0.9405405405405406,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAuthKeychain initWithIdentifier:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDAuthKeychain keychainQueryForService:account:generic:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain keychainQueryForService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain itemsMatchingService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain dataForService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain removeItemsMatchingService:account:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain setData:forService:accessibility:account:handler:]",
              "coverage": 0.9183673469387755
            },
            {
              "name": "__78-[FIRInstanceIDAuthKeychain setData:forService:accessibility:account:handler:]_block_invoke",
              "coverage": 0.72
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinPreferences+Internal.m",
          "coverage": 0.9692307692307692,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) preferencesFromKeychainContents:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) initWithDeviceID:secretToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) reset]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) updateWithCheckinPlistContents:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) checkinKeychainContent]",
              "coverage": 0.75
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinDeviceIDFromKeychainContent:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinSecretFromKeychainContent:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinKeychainContent:forIndex:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDLScionLogging.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "FIRDLLogEventToScion",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDLRetrievalProcessFactory.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRDLRetrievalProcessFactory initWithNetworkingService:clientID:URLScheme:APIKey:FDLSDKVersion:delegate:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDLRetrievalProcessFactory automaticRetrievalProcess]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPair.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDKeyPair initWithPrivateKey:publicKey:publicKeyData:privateKeyData:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair isValid]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair publicKey]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair privateKey]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPairUtilities.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDWebSafeBase64",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDSHA1",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDKeyPairQuery",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAppIdentity",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenStore.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDTokenStore defaultStore]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore initWithKeychain:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenStore serviceKeyForAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore tokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore cachedTokenInfos]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenStore tokenInfoFromKeychainItem:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore saveTokenInfo:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore removeTokenWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore removeAllTokensWithHandler:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "GTMSessionFetcher.framework",
      "coverage": 0.26761433868974044,
      "files": [
        {
          "name": "GTMSessionFetcherLogging.m",
          "coverage": 0.006242197253433208,
          "type": "objc",
          "functions": [
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) setLoggingDirectory:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) loggingDirectory]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) setLogDirectoryForCurrentRun:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) logDirectoryForCurrentRun]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) setLoggingEnabled:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) isLoggingEnabled]",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) setLoggingToFileEnabled:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) isLoggingToFileEnabled]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) setLoggingProcessName:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) loggingProcessName]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) setLoggingDateStamp:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) loggingDateStamp]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) processNameLogPrefix]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) symlinkNameSuffix]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) htmlFileName]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLogging) deleteLogDirectoriesOlderThanDate:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionFetcherLogging) formattedStringFromData:contentType:JSON:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionFetcherLogging) stringFromStreamData:contentType:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionFetcherLogging) logFetchWithError:]",
              "coverage": 0.004866180048661801
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionFetcherLogging) loggedInputStreamForInputStream:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionFetcherLogging) loggedStreamProviderForStreamProvider:]",
              "coverage": 0
            },
            {
              "name": "__85-[GTMSessionFetcher(GTMSessionFetcherLogging) loggedStreamProviderForStreamProvider:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__85-[GTMSessionFetcher(GTMSessionFetcherLogging) loggedStreamProviderForStreamProvider:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionFetcherLoggingUtilities) inputStream:readIntoBuffer:length:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLoggingUtilities) snipSubstringOfString:betweenStartString:endString:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher(GTMSessionFetcherLoggingUtilities) headersStringForDictionary:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GTMSessionUploadFetcher.m",
          "coverage": 0.01529535864978903,
          "type": "objc",
          "functions": [
            {
              "name": "+[GTMSessionUploadFetcher load]",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetcherWithRequest:uploadMIMEType:chunkSize:fetcherService:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetcherWithLocation:uploadMIMEType:chunkSize:fetcherService:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetcherForSessionIdentifierMetadata:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetcherWithRequest:fetcherService:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetcherPointerArrayForBackgroundSessions]",
              "coverage": 1
            },
            {
              "name": "__73+[GTMSessionUploadFetcher uploadFetcherPointerArrayForBackgroundSessions]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetcherForSessionIdentifier:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadFetchersForBackgroundSessions]",
              "coverage": 0.2857142857142857
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadData:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadData]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadFileHandle:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadFileHandle]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadFileURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadFileURL]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadFileLength:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadDataLength:provider:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadDataProvider]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadMIMEType:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadMIMEType]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setChunkSize:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher chunkSize]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setupRequestHeaders]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setLocationURL:uploadMIMEType:chunkSize:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher fullUploadLength]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher generateChunkSubdataWithOffset:length:response:]",
              "coverage": 0
            },
            {
              "name": "__74-[GTMSessionUploadFetcher generateChunkSubdataWithOffset:length:response:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__74-[GTMSessionUploadFetcher generateChunkSubdataWithOffset:length:response:]_block_invoke.237",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher generateChunkSubdataFromFileHandle:offset:length:response:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher generateChunkSubdataFromFileURL:offset:length:response:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadChunkUnavailableErrorWithDescription:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher prematureFailureErrorWithUserInfo:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher uploadStatusFromResponseHeaders:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setCompletionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setDelegateCallbackQueue:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher delegateCallbackQueue]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher isRestartedUpload]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher chunkFetcher]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setChunkFetcher:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setFetcherInFlight:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher fetcherInFlight]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setCancellationHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher cancellationHandler]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher beginFetchForRetry]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher beginFetchWithCompletionHandler:]",
              "coverage": 0
            },
            {
              "name": "__59-[GTMSessionUploadFetcher beginFetchWithCompletionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__59-[GTMSessionUploadFetcher beginFetchWithCompletionHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher beginChunkFetches]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher shouldReleaseCallbacksUponCompletion]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher invokeFinalCallbackWithData:error:shouldInvalidateLocation:]",
              "coverage": 0
            },
            {
              "name": "__86-[GTMSessionUploadFetcher invokeFinalCallbackWithData:error:shouldInvalidateLocation:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher releaseUploadAndBaseCallbacks:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher stopFetchReleasingCallbacks:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadNextChunkWithOffset:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher sendQueryForUploadOffsetWithFetcherProperties:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher queryFetcher:finishedWithData:error:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher sendCancelUploadWithFetcherProperties:]",
              "coverage": 0
            },
            {
              "name": "__65-[GTMSessionUploadFetcher sendCancelUploadWithFetcherProperties:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadNextChunkWithOffset:fetcherProperties:]",
              "coverage": 0
            },
            {
              "name": "__71-[GTMSessionUploadFetcher uploadNextChunkWithOffset:fetcherProperties:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__71-[GTMSessionUploadFetcher uploadNextChunkWithOffset:fetcherProperties:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher beginChunkFetcher:offset:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher attachSendProgressBlockToChunkFetcher:]",
              "coverage": 0
            },
            {
              "name": "__65-[GTMSessionUploadFetcher attachSendProgressBlockToChunkFetcher:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadSessionIdentifierMetadata]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadFetcherWithProperties:isQueryFetch:]",
              "coverage": 0
            },
            {
              "name": "__68-[GTMSessionUploadFetcher uploadFetcherWithProperties:isQueryFetch:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__68-[GTMSessionUploadFetcher uploadFetcherWithProperties:isQueryFetch:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher chunkFetcher:finishedWithData:error:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher destroyChunkFetcher]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher invokeDelegateWithDidSendBytes:totalBytesSent:totalBytesExpectedToSend:]",
              "coverage": 0
            },
            {
              "name": "__98-[GTMSessionUploadFetcher invokeDelegateWithDidSendBytes:totalBytesSent:totalBytesExpectedToSend:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher retrieveUploadChunkGranularityFromResponseHeaders:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher isPaused]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher pauseFetching]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher resumeFetching]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher stopFetching]",
              "coverage": 0
            },
            {
              "name": "__39-[GTMSessionUploadFetcher stopFetching]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher triggerCancellationHandlerForFetch:data:error:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher updateChunkFetcher:forChunkAtOffset:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionUploadFetcher removePointer:fromPointerArray:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher useBackgroundSession]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUseBackgroundSession:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher canFetchWithBackgroundSession]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher responseHeaders]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher statusCodeUnsynchronized]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setStatusCode:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher initialBodyLength]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setInitialBodyLength:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher initialBodySent]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setInitialBodySent:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher uploadLocationURL]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher setUploadLocationURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher activeFetcher]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher isFetching]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionUploadFetcher waitForCompletionWithTimeout:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(GTMSessionUploadFetcherMethods) parentUploadFetcher]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GTMSessionFetcher.m",
          "coverage": 0.3696453247351451,
          "type": "objc",
          "functions": [
            {
              "name": "InitialMinRetryInterval",
              "coverage": 1
            },
            {
              "name": "IsLocalhost",
              "coverage": 0
            },
            {
              "name": "GTMErrorUserInfoForData",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher load]",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionFetcher fetcherWithRequest:]",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionFetcher fetcherWithURL:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher fetcherWithURLString:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher fetcherWithDownloadResumeData:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher fetcherWithSessionIdentifier:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher sessionIdentifierToFetcherMap]",
              "coverage": 1
            },
            {
              "name": "__50+[GTMSessionFetcher sessionIdentifierToFetcherMap]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionFetcher appAllowsInsecureRequests]",
              "coverage": 1
            },
            {
              "name": "__46+[GTMSessionFetcher appAllowsInsecureRequests]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher init]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher initWithRequest:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher initWithRequest:configuration:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher description]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher beginFetchWithCompletionHandler:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher beginFetchForRetry]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher completionHandlerWithTarget:didFinishSelector:]",
              "coverage": 0
            },
            {
              "name": "__67-[GTMSessionFetcher completionHandlerWithTarget:didFinishSelector:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher beginFetchWithDelegate:didFinishSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher beginFetchMayDelay:mayAuthorize:]",
              "coverage": 0.5222222222222223
            },
            {
              "name": "__53-[GTMSessionFetcher beginFetchMayDelay:mayAuthorize:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__53-[GTMSessionFetcher beginFetchMayDelay:mayAuthorize:]_block_invoke.276",
              "coverage": 0
            },
            {
              "name": "__53-[GTMSessionFetcher beginFetchMayDelay:mayAuthorize:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__53-[GTMSessionFetcher beginFetchMayDelay:mayAuthorize:]_block_invoke.377",
              "coverage": 0
            },
            {
              "name": "GTMDataFromInputStream",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher simulateFetchForTestBlock]",
              "coverage": 1
            },
            {
              "name": "__46-[GTMSessionFetcher simulateFetchForTestBlock]_block_invoke",
              "coverage": 0.44642857142857145
            },
            {
              "name": "__46-[GTMSessionFetcher simulateFetchForTestBlock]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__46-[GTMSessionFetcher simulateFetchForTestBlock]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__46-[GTMSessionFetcher simulateFetchForTestBlock]_block_invoke_4",
              "coverage": 0
            },
            {
              "name": "__46-[GTMSessionFetcher simulateFetchForTestBlock]_block_invoke.434",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher simulateByteTransferReportWithDataLength:block:]",
              "coverage": 0
            },
            {
              "name": "__68-[GTMSessionFetcher simulateByteTransferReportWithDataLength:block:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]",
              "coverage": 0.40718562874251496
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.457",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke_2.471",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.478",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke_2.479",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.486",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.493",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.499",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.509",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke_2.510",
              "coverage": 0
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke.517",
              "coverage": 1
            },
            {
              "name": "__95-[GTMSessionFetcher simulateDataCallbacksForTestBlockWithBodyData:response:responseData:error:]_block_invoke_2.522",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher simulateByteTransferWithData:block:]",
              "coverage": 0
            },
            {
              "name": "__56-[GTMSessionFetcher simulateByteTransferWithData:block:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setSessionTask:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[GTMSessionFetcher sessionTask]",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionFetcher fetcherUserDefaults]",
              "coverage": 1
            },
            {
              "name": "__40+[GTMSessionFetcher fetcherUserDefaults]_block_invoke",
              "coverage": 0.875
            },
            {
              "name": "-[GTMSessionFetcher addPersistedBackgroundSessionToDefaults]",
              "coverage": 0.2631578947368421
            },
            {
              "name": "-[GTMSessionFetcher removePersistedBackgroundSessionFromDefaults]",
              "coverage": 0.11538461538461539
            },
            {
              "name": "+[GTMSessionFetcher activePersistedBackgroundSessions]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher fetchersForBackgroundSessions]",
              "coverage": 0.4090909090909091
            },
            {
              "name": "+[GTMSessionFetcher application:handleEventsForBackgroundURLSession:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher sessionIdentifier]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setSessionIdentifier:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setSessionIdentifierInternal:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher sessionUserInfo]",
              "coverage": 0
            },
            {
              "name": "__36-[GTMSessionFetcher sessionUserInfo]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setSessionUserInfo:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher sessionIdentifierDefaultMetadata]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher restoreDefaultStateForSessionIdentifierMetadata]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher sessionIdentifierMetadata]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher sessionIdentifierMetadataUnsynchronized]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher createSessionIdentifierWithMetadata:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher failToBeginFetchWithError:]",
              "coverage": 0.8095238095238095
            },
            {
              "name": "+[GTMSessionFetcher staticCookieStorage]",
              "coverage": 1
            },
            {
              "name": "__40+[GTMSessionFetcher staticCookieStorage]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher endBackgroundTask]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher authorizeRequest]",
              "coverage": 0.65
            },
            {
              "name": "-[GTMSessionFetcher authorizer:request:finishedWithError:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher canFetchWithBackgroundSession]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher isFetching]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher isFetchingUnsynchronized]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher response]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher responseUnsynchronized]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher statusCode]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher statusCodeUnsynchronized]",
              "coverage": 0.7333333333333333
            },
            {
              "name": "-[GTMSessionFetcher responseHeaders]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher responseHeadersUnsynchronized]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher releaseCallbacks]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher forgetSessionIdentifierForFetcher]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher forgetSessionIdentifierForFetcherWithoutSyncCheck]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[GTMSessionFetcher stopFetching]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher stopFetchReleasingCallbacks:]",
              "coverage": 0.8269230769230769
            },
            {
              "name": "__49-[GTMSessionFetcher stopFetchReleasingCallbacks:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__49-[GTMSessionFetcher stopFetchReleasingCallbacks:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setStopNotificationNeeded:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher sendStopNotificationIfNeeded]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher retryFetch]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher waitForCompletionWithTimeout:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher setGlobalTestBlock:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher setSubstituteUIApplication:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher substituteUIApplication]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher fetcherUIApplication]",
              "coverage": 1
            },
            {
              "name": "__41+[GTMSessionFetcher fetcherUIApplication]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__93-[GTMSessionFetcher URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__93-[GTMSessionFetcher URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:dataTask:didReceiveResponse:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__78-[GTMSessionFetcher URLSession:dataTask:didReceiveResponse:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__78-[GTMSessionFetcher URLSession:dataTask:didReceiveResponse:completionHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__78-[GTMSessionFetcher URLSession:dataTask:didReceiveResponse:completionHandler:]_block_invoke.804",
              "coverage": 0
            },
            {
              "name": "__78-[GTMSessionFetcher URLSession:dataTask:didReceiveResponse:completionHandler:]_block_invoke_2.805",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:dataTask:didBecomeDownloadTask:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:task:didReceiveChallenge:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__75-[GTMSessionFetcher URLSession:task:didReceiveChallenge:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher respondToChallenge:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__58-[GTMSessionFetcher respondToChallenge:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher redirectURLWithOriginalRequestURL:redirectRequestURL:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher evaluateServerTrust:forRequest:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__70+[GTMSessionFetcher evaluateServerTrust:forRequest:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher invokeOnCallbackQueueUnlessStopped:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher invokeOnCallbackQueueAfterUserStopped:block:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher invokeOnCallbackUnsynchronizedQueueAfterUserStopped:block:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher invokeOnCallbackQueue:afterUserStopped:block:]",
              "coverage": 1
            },
            {
              "name": "__66-[GTMSessionFetcher invokeOnCallbackQueue:afterUserStopped:block:]_block_invoke",
              "coverage": 0.8076923076923077
            },
            {
              "name": "-[GTMSessionFetcher invokeFetchCallbacksOnCallbackQueueWithData:error:]",
              "coverage": 1
            },
            {
              "name": "__71-[GTMSessionFetcher invokeFetchCallbacksOnCallbackQueueWithData:error:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher postNotificationOnMainThreadWithName:userInfo:requireAsync:]",
              "coverage": 1
            },
            {
              "name": "__80-[GTMSessionFetcher postNotificationOnMainThreadWithName:userInfo:requireAsync:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher URLSession:task:needNewBodyStream:]",
              "coverage": 0
            },
            {
              "name": "__55-[GTMSessionFetcher URLSession:task:needNewBodyStream:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]",
              "coverage": 0
            },
            {
              "name": "__93-[GTMSessionFetcher URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:dataTask:didReceiveData:]",
              "coverage": 0
            },
            {
              "name": "__56-[GTMSessionFetcher URLSession:dataTask:didReceiveData:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__56-[GTMSessionFetcher URLSession:dataTask:didReceiveData:]_block_invoke.895",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:dataTask:willCacheResponse:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__77-[GTMSessionFetcher URLSession:dataTask:willCacheResponse:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]",
              "coverage": 0
            },
            {
              "name": "__102-[GTMSessionFetcher URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:downloadTask:didFinishDownloadingToURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:task:didCompleteWithError:]",
              "coverage": 0.23880597014925373
            },
            {
              "name": "__58-[GTMSessionFetcher URLSession:task:didCompleteWithError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSessionDidFinishEventsForBackgroundURLSession:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher URLSession:didBecomeInvalidWithError:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher finishWithError:shouldRetry:]",
              "coverage": 0.6165413533834586
            },
            {
              "name": "__49-[GTMSessionFetcher finishWithError:shouldRetry:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher shouldReleaseCallbacksUponCompletion]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher logNowWithError:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher isRetryError:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher shouldRetryNowForStatus:error:forceAssumeRetry:response:]",
              "coverage": 0.4025974025974026
            },
            {
              "name": "__77-[GTMSessionFetcher shouldRetryNowForStatus:error:forceAssumeRetry:response:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher hasRetryAfterInterval]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher retryAfterInterval]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher beginRetryTimer]",
              "coverage": 0
            },
            {
              "name": "__36-[GTMSessionFetcher beginRetryTimer]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher retryTimerFired:]",
              "coverage": 0
            },
            {
              "name": "__37-[GTMSessionFetcher retryTimerFired:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher destroyRetryTimer]",
              "coverage": 0.5789473684210527
            },
            {
              "name": "-[GTMSessionFetcher retryCount]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher nextRetryInterval]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher nextRetryIntervalUnsynchronized]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher retryTimer]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher isRetryEnabled]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher isRetryEnabledUnsynchronized]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setRetryEnabled:]",
              "coverage": 0.45
            },
            {
              "name": "-[GTMSessionFetcher maxRetryInterval]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setMaxRetryInterval:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[GTMSessionFetcher minRetryInterval]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setMinRetryInterval:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "-[GTMSessionFetcher systemCompletionHandler]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setSystemCompletionHandler:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher setSystemCompletionHandler:forSessionIdentifier:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcher systemCompletionHandlerForSessionIdentifier:]",
              "coverage": 0.5
            },
            {
              "name": "-[GTMSessionFetcher request]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setRequest:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher mutableRequestForTesting]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher updateMutableRequest:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setRequestValue:forHTTPHeaderField:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[GTMSessionFetcher updateRequestValue:forHTTPHeaderField:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setResponse:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher bodyLength]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher useUploadTask]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setUseUploadTask:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher bodyFileURL]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setBodyFileURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher bodyStreamProvider]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setBodyStreamProvider:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher authorizer]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setAuthorizer:]",
              "coverage": 0.9230769230769231
            },
            {
              "name": "-[GTMSessionFetcher downloadedData]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setDownloadedData:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher downloadedLength]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setDownloadedLength:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher callbackQueue]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setCallbackQueue:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher session]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher servicePriority]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setServicePriority:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setSession:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher canShareSession]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setCanShareSession:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher useBackgroundSession]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setUseBackgroundSession:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher isUsingBackgroundSession]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setUsingBackgroundSession:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher sessionNeedingInvalidation]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setSessionNeedingInvalidation:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher sessionDelegateQueue]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setSessionDelegateQueue:]",
              "coverage": 0.9230769230769231
            },
            {
              "name": "-[GTMSessionFetcher userStoppedFetching]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher userData]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setUserData:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher destinationFileURL]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher setDestinationFileURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setProperties:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcher properties]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setProperty:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher propertyForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher addPropertiesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setCommentWithFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher loggedStreamData]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher appendLoggedStreamData:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher clearLoggedStreamData]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher setDeferResponseBodyLogging:]",
              "coverage": 0
            },
            {
              "name": "__49-[GTMSessionFetcher setDeferResponseBodyLogging:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher deferResponseBodyLogging]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcher(BackwardsCompatibilityOnly) setCookieStorageMethod:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage init]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionCookieStorage cookies]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage setCookie:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage internalSetCookie:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage setCookies:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage setCookies:forURL:mainDocumentURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage deleteCookie:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage cookiesForURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage storeCookies:forTask:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage getCookiesForTask:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage cookieMatchingCookie:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage removeExpiredCookies]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionCookieStorage hasCookieExpired:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage removeAllCookies]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage cookieAcceptPolicy]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionCookieStorage setCookieAcceptPolicy:]",
              "coverage": 0
            },
            {
              "name": "GTMSessionFetcherAssertValidSelector",
              "coverage": 0
            },
            {
              "name": "GTMFetcherCleanedUserAgentString",
              "coverage": 0.9230769230769231
            },
            {
              "name": "GTMFetcherSystemVersionString",
              "coverage": 1
            },
            {
              "name": "__GTMFetcherSystemVersionString_block_invoke",
              "coverage": 1
            },
            {
              "name": "GTMFetcherStandardUserAgentString",
              "coverage": 1
            },
            {
              "name": "GTMFetcherApplicationIdentifier",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionSyncMonitorInternal initWithSynchronizationObject:allowRecursive:functionName:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionSyncMonitorInternal dealloc]",
              "coverage": 1
            },
            {
              "name": "+[GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "GTMSessionFetcherService.m",
          "coverage": 0.5004757373929591,
          "type": "objc",
          "functions": [
            {
              "name": "-[GTMSessionFetcherService init]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService fetcherWithRequest:fetcherClass:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "-[GTMSessionFetcherService fetcherWithRequest:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService fetcherWithURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService fetcherWithURLString:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService session]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService sessionForFetcherCreation]",
              "coverage": 0.9142857142857143
            },
            {
              "name": "-[GTMSessionFetcherService sessionDelegate]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService addRunningFetcher:forHost:]",
              "coverage": 0.8
            },
            {
              "name": "-[GTMSessionFetcherService addDelayedFetcher:forHost:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService isDelayingFetcher:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService fetcherShouldBeginFetching:]",
              "coverage": 0.75
            },
            {
              "name": "-[GTMSessionFetcherService startFetcher:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService delegateDispatcherForFetcher:]",
              "coverage": 0.8
            },
            {
              "name": "-[GTMSessionFetcherService fetcherDidCreateSession:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService fetcherDidBeginFetching:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService stopFetcher:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService fetcherDidStop:]",
              "coverage": 0.6621621621621622
            },
            {
              "name": "-[GTMSessionFetcherService numberOfFetchers]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService numberOfRunningFetchers]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService numberOfDelayedFetchers]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService issuedFetchers]",
              "coverage": 0
            },
            {
              "name": "__42-[GTMSessionFetcherService issuedFetchers]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService issuedFetchersWithRequestURL:]",
              "coverage": 0
            },
            {
              "name": "__57-[GTMSessionFetcherService issuedFetchersWithRequestURL:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService stopAllFetchers]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService stoppedAllFetchersDate]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService reuseSession]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService setReuseSession:]",
              "coverage": 0.8235294117647058
            },
            {
              "name": "-[GTMSessionFetcherService resetSession]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService resetSessionInternal]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService resetSessionForDispatcherDiscardTimer:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService unusedSessionTimeout]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService setUnusedSessionTimeout:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService abandonDispatcher]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService runningFetchersByHost]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService setRunningFetchersByHost:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService delayedFetchersByHost]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService setDelayedFetchersByHost:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService authorizer]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService setAuthorizer:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService detachAuthorizer]",
              "coverage": 0.8888888888888888
            },
            {
              "name": "-[GTMSessionFetcherService callbackQueue]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService setCallbackQueue:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService sessionDelegateQueue]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService setSessionDelegateQueue:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService delegateQueue]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcherService numberOfNonBackgroundSessionFetchers:]",
              "coverage": 0.5555555555555556
            },
            {
              "name": "+[GTMSessionFetcherService(TestingSupport) mockFetcherServiceWithFakedData:fakedError:]",
              "coverage": 0
            },
            {
              "name": "+[GTMSessionFetcherService(TestingSupport) mockFetcherServiceWithFakedData:fakedResponse:fakedError:]",
              "coverage": 0
            },
            {
              "name": "__101+[GTMSessionFetcherService(TestingSupport) mockFetcherServiceWithFakedData:fakedResponse:fakedError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService(TestingSupport) waitForCompletionOfAllFetchersWithTimeout:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherService(BackwardsCompatibilityOnly) cookieStorageMethod]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherService(BackwardsCompatibilityOnly) setCookieStorageMethod:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher init]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher initWithParentService:sessionDiscardInterval:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher description]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher discardTimer]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher startDiscardTimer]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher destroyDiscardTimer]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher discardTimerFired:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher abandon]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher startSessionUsage]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher destroySessionAndTimer]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher setFetcher:forTask:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher removeFetcher:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher fetcherForTask:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher removeTaskFromMap:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher setSession:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher session]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher discardInterval]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher setDiscardInterval:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:didBecomeInvalidWithError:]",
              "coverage": 1
            },
            {
              "name": "__83-[GTMSessionFetcherSessionDelegateDispatcher URLSession:didBecomeInvalidWithError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:task:didReceiveChallenge:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:task:needNewBodyStream:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:task:didCompleteWithError:]",
              "coverage": 1
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:dataTask:didReceiveResponse:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:dataTask:didBecomeDownloadTask:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:dataTask:didReceiveData:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:dataTask:willCacheResponse:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:downloadTask:didFinishDownloadingToURL:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]",
              "coverage": 0
            },
            {
              "name": "-[GTMSessionFetcherSessionDelegateDispatcher URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:]",
              "coverage": 0
            }
          ]
        }
      ]
    },
    {
      "name": "GoogleUtilities.framework",
      "coverage": 0.3882390135946886,
      "files": [
        {
          "name": "GULRuntimeClassDiff.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "IsEqual",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassDiff hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassDiff isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassDiff description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeStateHelper.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULRuntimeStateHelper snapshotCache]",
              "coverage": 0
            },
            {
              "name": "__38+[GULRuntimeStateHelper snapshotCache]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GULRuntimeStateHelper captureRuntimeState]",
              "coverage": 0
            },
            {
              "name": "+[GULRuntimeStateHelper captureRuntimeStateOfClasses:]",
              "coverage": 0
            },
            {
              "name": "+[GULRuntimeStateHelper diffBetween:secondSnapshot:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULObjectSwizzler.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULObjectSwizzler setAssociatedObject:key:value:association:]",
              "coverage": 0
            },
            {
              "name": "+[GULObjectSwizzler getAssociatedObject:key:]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler initWithObject:]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler copySelector:fromClass:isClassSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler setAssociatedObjectWithKey:value:association:]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler getAssociatedObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler swizzle]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GULObjectSwizzler isSwizzlingProxyObject]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULSwizzledObject.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULSwizzledObject copyDonorSelectorsUsingObjectSwizzler:]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzledObject init]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzledObject gul_objectSwizzler]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzledObject gul_class]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzledObject respondsToSelector:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeSnapshot.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULRuntimeSnapshot init]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot initWithClasses:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot description]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot capture]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot diff:]",
              "coverage": 0
            },
            {
              "name": "__27-[GULRuntimeSnapshot diff:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__27-[GULRuntimeSnapshot diff:]_block_invoke.34",
              "coverage": 0
            },
            {
              "name": "__27-[GULRuntimeSnapshot diff:]_block_invoke.43",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeDiff.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "IsEqual",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeDiff hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeDiff isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeDiff description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeClassSnapshot.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULRuntimeClassSnapshot init]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot initWithClass:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot capture]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot diff:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot description]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot captureProperties]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot captureSelectorsAndImps]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot computeDiffOfProperties:withClassDiff:]",
              "coverage": 0
            },
            {
              "name": "__65-[GULRuntimeClassSnapshot computeDiffOfProperties:withClassDiff:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__65-[GULRuntimeClassSnapshot computeDiffOfProperties:withClassDiff:]_block_invoke.46",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]",
              "coverage": 0
            },
            {
              "name": "__71-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__71-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]_block_invoke.57",
              "coverage": 0
            },
            {
              "name": "__71-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]_block_invoke.63",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULProxy.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULProxy initWithDelegate:]",
              "coverage": 0
            },
            {
              "name": "+[GULProxy proxyWithDelegate:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy forwardingTargetForSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy forwardInvocation:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy methodSignatureForSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy respondsToSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy hash]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy superclass]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy class]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isKindOfClass:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isMemberOfClass:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy conformsToProtocol:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isProxy]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy description]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy debugDescription]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULNetwork.m",
          "coverage": 0.31044776119402984,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULNetwork init]",
              "coverage": 1
            },
            {
              "name": "-[GULNetwork initWithReachabilityHost:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[GULNetwork dealloc]",
              "coverage": 0
            },
            {
              "name": "+[GULNetwork handleEventsForBackgroundURLSessionID:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetwork postURL:payload:queue:usingBackgroundSession:completionHandler:]",
              "coverage": 0.7215189873417721
            },
            {
              "name": "__77-[GULNetwork postURL:payload:queue:usingBackgroundSession:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__77-[GULNetwork postURL:payload:queue:usingBackgroundSession:completionHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GULNetwork getURL:headers:queue:usingBackgroundSession:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__76-[GULNetwork getURL:headers:queue:usingBackgroundSession:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__76-[GULNetwork getURL:headers:queue:usingBackgroundSession:completionHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[GULNetwork hasUploadInProgress]",
              "coverage": 1
            },
            {
              "name": "-[GULNetwork reachability:statusChanged:]",
              "coverage": 1
            },
            {
              "name": "-[GULNetwork setLoggerDelegate:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[GULNetwork handleErrorWithCode:queue:withHandler:]",
              "coverage": 0
            },
            {
              "name": "__52-[GULNetwork handleErrorWithCode:queue:withHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULNetwork GULNetwork_logWithLevel:messageCode:message:contexts:]",
              "coverage": 0.3684210526315789
            },
            {
              "name": "-[GULNetwork GULNetwork_logWithLevel:messageCode:message:context:]",
              "coverage": 0.45454545454545453
            },
            {
              "name": "-[GULNetwork GULNetwork_logWithLevel:messageCode:message:]",
              "coverage": 0
            },
            {
              "name": "GULLogLevelDescriptionFromLogLevel",
              "coverage": 0
            },
            {
              "name": "__GULLogLevelDescriptionFromLogLevel_block_invoke",
              "coverage": 0
            },
            {
              "name": "GULStringWithLogMessage",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULNSData+zlib.m",
          "coverage": 0.3163841807909605,
          "type": "objc",
          "functions": [
            {
              "name": "+[NSData(GULGzip) gul_dataByInflatingGzippedData:error:]",
              "coverage": 0
            },
            {
              "name": "+[NSData(GULGzip) gul_dataByGzippingData:error:]",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "GULNetworkURLSession.m",
          "coverage": 0.3446054750402576,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULNetworkURLSession initWithNetworkLoggerDelegate:]",
              "coverage": 1
            },
            {
              "name": "+[GULNetworkURLSession handleEventsForBackgroundURLSessionID:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession sessionIDFromAsyncPOSTRequest:completionHandler:]",
              "coverage": 0.6216216216216216
            },
            {
              "name": "-[GULNetworkURLSession sessionIDFromAsyncGETRequest:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession URLSession:downloadTask:didFinishDownloadingToURL:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession URLSessionDidFinishEventsForBackgroundURLSession:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession URLSession:task:didCompleteWithError:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession URLSession:task:didReceiveChallenge:completionHandler:]",
              "coverage": 0.788235294117647
            },
            {
              "name": "__78-[GULNetworkURLSession URLSession:task:didReceiveChallenge:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__78-[GULNetworkURLSession URLSession:task:didReceiveChallenge:completionHandler:]_block_invoke.147",
              "coverage": 0.8148148148148148
            },
            {
              "name": "-[GULNetworkURLSession addSystemCompletionHandler:forSession:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession callSystemCompletionHandler:]",
              "coverage": 0
            },
            {
              "name": "__52-[GULNetworkURLSession callSystemCompletionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession setSessionID:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession backgroundSessionConfigWithSessionID:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession maybeRemoveTempFilesAtURL:expiringTime:]",
              "coverage": 0.40476190476190477
            },
            {
              "name": "-[GULNetworkURLSession removeTempItemAtURL:]",
              "coverage": 0
            },
            {
              "name": "+[GULNetworkURLSession fetcherWithSessionIdentifier:]",
              "coverage": 0
            },
            {
              "name": "+[GULNetworkURLSession sessionIDToFetcherMap]",
              "coverage": 1
            },
            {
              "name": "__45+[GULNetworkURLSession sessionIDToFetcherMap]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULNetworkURLSession sessionIDToFetcherMapReadWriteLock]",
              "coverage": 1
            },
            {
              "name": "__58+[GULNetworkURLSession sessionIDToFetcherMapReadWriteLock]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULNetworkURLSession sessionIDToSystemCompletionHandlerDictionary]",
              "coverage": 0
            },
            {
              "name": "__68+[GULNetworkURLSession sessionIDToSystemCompletionHandlerDictionary]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession temporaryFilePathWithSessionID:]",
              "coverage": 1
            },
            {
              "name": "-[GULNetworkURLSession ensureTemporaryDirectoryExists]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession excludeFromBackupForURL:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "+[GULNetworkURLSession setSessionInFetcherMap:forSessionID:]",
              "coverage": 0.5
            },
            {
              "name": "+[GULNetworkURLSession sessionFromFetcherMapForSessionID:]",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession callCompletionHandler:withResponse:data:error:]",
              "coverage": 0
            },
            {
              "name": "__70-[GULNetworkURLSession callCompletionHandler:withResponse:data:error:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULNetworkURLSession populateSessionConfig:withRequest:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "GULUserDefaults.m",
          "coverage": 0.423841059602649,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULUserDefaults standardUserDefaults]",
              "coverage": 1
            },
            {
              "name": "__39+[GULUserDefaults standardUserDefaults]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULUserDefaults init]",
              "coverage": 1
            },
            {
              "name": "-[GULUserDefaults initWithSuiteName:]",
              "coverage": 1
            },
            {
              "name": "-[GULUserDefaults dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults objectForKey:]",
              "coverage": 0.5
            },
            {
              "name": "-[GULUserDefaults setObject:forKey:]",
              "coverage": 0.4482758620689655
            },
            {
              "name": "-[GULUserDefaults removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults integerForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults floatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults doubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults boolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults stringForKey:]",
              "coverage": 1
            },
            {
              "name": "-[GULUserDefaults arrayForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults dictionaryForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults setInteger:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults synchronize]",
              "coverage": 0.42857142857142855
            },
            {
              "name": "-[GULUserDefaults clearAllData]",
              "coverage": 0
            },
            {
              "name": "-[GULUserDefaults scheduleSynchronize]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "GULAppDelegateSwizzler.m",
          "coverage": 0.4431818181818182,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULAppDelegateObserver sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__40+[GULAppDelegateObserver sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULAppDelegateObserver observeUIApplication]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[GULAppDelegateObserver observeValueForKeyPath:ofObject:change:context:]",
              "coverage": 0
            },
            {
              "name": "+[GULAppDelegateSwizzler isAppDelegateProxyEnabled]",
              "coverage": 0.8260869565217391
            },
            {
              "name": "+[GULAppDelegateSwizzler registerAppDelegateInterceptor:]",
              "coverage": 0.47058823529411764
            },
            {
              "name": "+[GULAppDelegateSwizzler unregisterAppDelegateInterceptorWithID:]",
              "coverage": 0
            },
            {
              "name": "+[GULAppDelegateSwizzler proxyOriginalDelegate]",
              "coverage": 1
            },
            {
              "name": "__47+[GULAppDelegateSwizzler proxyOriginalDelegate]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULAppDelegateSwizzler sharedApplication]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "+[GULAppDelegateSwizzler createSubclassWithObject:]",
              "coverage": 0.7172413793103448
            },
            {
              "name": "+[GULAppDelegateSwizzler interceptors]",
              "coverage": 1
            },
            {
              "name": "__38+[GULAppDelegateSwizzler interceptors]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULAppDelegateSwizzler addInstanceMethodWithSelector:fromClass:toClass:]",
              "coverage": 1
            },
            {
              "name": "+[GULAppDelegateSwizzler addInstanceMethodWithDestinationSelector:withImplementationFromSourceSelector:fromClass:toClass:]",
              "coverage": 0.5
            },
            {
              "name": "+[GULAppDelegateSwizzler implementationOfMethodSelector:fromClass:]",
              "coverage": 1
            },
            {
              "name": "+[GULAppDelegateSwizzler notifyInterceptorsWithMethodSelector:callback:]",
              "coverage": 0
            },
            {
              "name": "__72+[GULAppDelegateSwizzler notifyInterceptorsWithMethodSelector:callback:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULAppDelegateSwizzler fakeDescription]",
              "coverage": 1
            },
            {
              "name": "-[GULAppDelegateSwizzler application:openURL:options:]",
              "coverage": 0
            },
            {
              "name": "__54-[GULAppDelegateSwizzler application:openURL:options:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULAppDelegateSwizzler application:openURL:sourceApplication:annotation:]",
              "coverage": 0
            },
            {
              "name": "__75-[GULAppDelegateSwizzler application:openURL:sourceApplication:annotation:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULAppDelegateSwizzler application:handleEventsForBackgroundURLSession:completionHandler:]",
              "coverage": 0
            },
            {
              "name": "__92-[GULAppDelegateSwizzler application:handleEventsForBackgroundURLSession:completionHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULAppDelegateSwizzler application:continueUserActivity:restorationHandler:]",
              "coverage": 0
            },
            {
              "name": "__78-[GULAppDelegateSwizzler application:continueUserActivity:restorationHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GULAppDelegateSwizzler proxyAppDelegate:]",
              "coverage": 0.5625
            },
            {
              "name": "+[GULAppDelegateSwizzler correctAppDelegateProxyKey]",
              "coverage": 1
            },
            {
              "name": "+[GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULMutableDictionary.m",
          "coverage": 0.5609756097560976,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULMutableDictionary init]",
              "coverage": 1
            },
            {
              "name": "-[GULMutableDictionary description]",
              "coverage": 0
            },
            {
              "name": "__35-[GULMutableDictionary description]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULMutableDictionary objectForKey:]",
              "coverage": 1
            },
            {
              "name": "__37-[GULMutableDictionary objectForKey:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULMutableDictionary setObject:forKey:]",
              "coverage": 1
            },
            {
              "name": "__41-[GULMutableDictionary setObject:forKey:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULMutableDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "__43-[GULMutableDictionary removeObjectForKey:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULMutableDictionary removeAllObjects]",
              "coverage": 0
            },
            {
              "name": "__40-[GULMutableDictionary removeAllObjects]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GULMutableDictionary count]",
              "coverage": 1
            },
            {
              "name": "__29-[GULMutableDictionary count]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULMutableDictionary objectForKeyedSubscript:]",
              "coverage": 1
            },
            {
              "name": "-[GULMutableDictionary setObject:forKeyedSubscript:]",
              "coverage": 1
            },
            {
              "name": "-[GULMutableDictionary dictionary]",
              "coverage": 0
            },
            {
              "name": "__34-[GULMutableDictionary dictionary]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULAppEnvironmentUtil.m",
          "coverage": 0.5681818181818182,
          "type": "objc",
          "functions": [
            {
              "name": "IsAppEncrypted",
              "coverage": 0.7209302325581395
            },
            {
              "name": "HasSCInfoFolder",
              "coverage": 0
            },
            {
              "name": "HasEmbeddedMobileProvision",
              "coverage": 0
            },
            {
              "name": "+[GULAppEnvironmentUtil isFromAppStore]",
              "coverage": 0.3548387096774194
            },
            {
              "name": "__39+[GULAppEnvironmentUtil isFromAppStore]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil isAppStoreReceiptSandbox]",
              "coverage": 0
            },
            {
              "name": "+[GULAppEnvironmentUtil isSimulator]",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil deviceModel]",
              "coverage": 1
            },
            {
              "name": "__36+[GULAppEnvironmentUtil deviceModel]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil systemVersion]",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil isAppExtension]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "GULReachabilityChecker.m",
          "coverage": 0.58,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULReachabilityChecker reachabilityApi]",
              "coverage": 0
            },
            {
              "name": "-[GULReachabilityChecker setReachabilityApi:]",
              "coverage": 0
            },
            {
              "name": "-[GULReachabilityChecker isActive]",
              "coverage": 0
            },
            {
              "name": "-[GULReachabilityChecker setReachabilityDelegate:]",
              "coverage": 0.5
            },
            {
              "name": "-[GULReachabilityChecker initWithReachabilityDelegate:withHost:]",
              "coverage": 0.7222222222222222
            },
            {
              "name": "-[GULReachabilityChecker dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GULReachabilityChecker start]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[GULReachabilityChecker stop]",
              "coverage": 1
            },
            {
              "name": "-[GULReachabilityChecker statusForFlags:]",
              "coverage": 0.6190476190476191
            },
            {
              "name": "-[GULReachabilityChecker reachabilityFlagsChanged:]",
              "coverage": 0.95
            },
            {
              "name": "ReachabilityCallback",
              "coverage": 1
            },
            {
              "name": "GULReachabilityStatusString",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULSwizzler.m",
          "coverage": 0.7844036697247706,
          "type": "objc",
          "functions": [
            {
              "name": "GetGULSwizzlingQueue",
              "coverage": 1
            },
            {
              "name": "__GetGULSwizzlingQueue_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULSwizzler swizzleClass:selector:isClassSelector:withBlock:]",
              "coverage": 1
            },
            {
              "name": "__63+[GULSwizzler swizzleClass:selector:isClassSelector:withBlock:]_block_invoke",
              "coverage": 0.9512195121951219
            },
            {
              "name": "+[GULSwizzler unswizzleClass:selector:isClassSelector:]",
              "coverage": 1
            },
            {
              "name": "__55+[GULSwizzler unswizzleClass:selector:isClassSelector:]_block_invoke",
              "coverage": 0.9047619047619048
            },
            {
              "name": "+[GULSwizzler originalImplementationForClass:selector:isClassSelector:]",
              "coverage": 0
            },
            {
              "name": "__71+[GULSwizzler originalImplementationForClass:selector:isClassSelector:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GULSwizzler currentImplementationForClass:selector:isClassSelector:]",
              "coverage": 0.92
            },
            {
              "name": "__70+[GULSwizzler currentImplementationForClass:selector:isClassSelector:]_block_invoke",
              "coverage": 0.8125
            },
            {
              "name": "+[GULSwizzler selector:existsInClass:isClassSelector:]",
              "coverage": 0
            },
            {
              "name": "+[GULSwizzler ivarObjectsForObject:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULSwizzlingCache.m",
          "coverage": 0.8157894736842105,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULSwizzlingCache sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__35+[GULSwizzlingCache sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache init]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzlingCache cacheCurrentIMP:forNewIMP:forClass:withSelector:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache cachedIMPForClass:withSelector:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache clearCacheForSwizzledIMP:selector:aClass:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache originalIMPOfCurrentIMP:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache clearCache]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzlingCache originalImps]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzlingCache newToOriginalImps]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULLogger.m",
          "coverage": 0.8333333333333334,
          "type": "objc",
          "functions": [
            {
              "name": "GULLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__GULLoggerInitializeASL_block_invoke",
              "coverage": 1
            },
            {
              "name": "GULLoggerEnableSTDERR",
              "coverage": 0
            },
            {
              "name": "GULLoggerForceDebug",
              "coverage": 1
            },
            {
              "name": "GULSetLoggerLevel",
              "coverage": 0.6470588235294118
            },
            {
              "name": "__GULSetLoggerLevel_block_invoke",
              "coverage": 1
            },
            {
              "name": "GULIsLoggableLevel",
              "coverage": 0.7142857142857143
            },
            {
              "name": "GULResetLogger",
              "coverage": 1
            },
            {
              "name": "getGULLoggerClient",
              "coverage": 0
            },
            {
              "name": "getGULClientQueue",
              "coverage": 0
            },
            {
              "name": "getGULLoggerDebugMode",
              "coverage": 0
            },
            {
              "name": "GULLoggerRegisterVersion",
              "coverage": 1
            },
            {
              "name": "GULLogBasic",
              "coverage": 1
            },
            {
              "name": "__GULLogBasic_block_invoke",
              "coverage": 1
            },
            {
              "name": "Definition at 182:46",
              "coverage": 1
            },
            {
              "name": "+[GULLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        }
      ]
    },
    {
      "name": "GoogleUtilities.framework",
      "coverage": 0.4294416243654822,
      "files": [
        {
          "name": "GULRuntimeDiff.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "IsEqual",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeDiff hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeDiff isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeDiff description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeStateHelper.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULRuntimeStateHelper snapshotCache]",
              "coverage": 0
            },
            {
              "name": "__38+[GULRuntimeStateHelper snapshotCache]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GULRuntimeStateHelper captureRuntimeState]",
              "coverage": 0
            },
            {
              "name": "+[GULRuntimeStateHelper captureRuntimeStateOfClasses:]",
              "coverage": 0
            },
            {
              "name": "+[GULRuntimeStateHelper diffBetween:secondSnapshot:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeSnapshot.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULRuntimeSnapshot init]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot initWithClasses:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot description]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot capture]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeSnapshot diff:]",
              "coverage": 0
            },
            {
              "name": "__27-[GULRuntimeSnapshot diff:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__27-[GULRuntimeSnapshot diff:]_block_invoke.34",
              "coverage": 0
            },
            {
              "name": "__27-[GULRuntimeSnapshot diff:]_block_invoke.43",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULProxy.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULProxy initWithDelegate:]",
              "coverage": 0
            },
            {
              "name": "+[GULProxy proxyWithDelegate:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy forwardingTargetForSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy forwardInvocation:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy methodSignatureForSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy respondsToSelector:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy hash]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy superclass]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy class]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isKindOfClass:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isMemberOfClass:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy conformsToProtocol:]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy isProxy]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy description]",
              "coverage": 0
            },
            {
              "name": "-[GULProxy debugDescription]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeClassDiff.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "IsEqual",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassDiff hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassDiff isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassDiff description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULRuntimeClassSnapshot.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GULRuntimeClassSnapshot init]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot initWithClass:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot capture]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot diff:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot hash]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot description]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot captureProperties]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot captureSelectorsAndImps]",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot computeDiffOfProperties:withClassDiff:]",
              "coverage": 0
            },
            {
              "name": "__65-[GULRuntimeClassSnapshot computeDiffOfProperties:withClassDiff:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__65-[GULRuntimeClassSnapshot computeDiffOfProperties:withClassDiff:]_block_invoke.46",
              "coverage": 0
            },
            {
              "name": "-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]",
              "coverage": 0
            },
            {
              "name": "__71-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__71-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]_block_invoke.57",
              "coverage": 0
            },
            {
              "name": "__71-[GULRuntimeClassSnapshot computeDiffOfSelectorsAndImps:withClassDiff:]_block_invoke.63",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULAppEnvironmentUtil.m",
          "coverage": 0.5681818181818182,
          "type": "objc",
          "functions": [
            {
              "name": "IsAppEncrypted",
              "coverage": 0.7209302325581395
            },
            {
              "name": "HasSCInfoFolder",
              "coverage": 0
            },
            {
              "name": "HasEmbeddedMobileProvision",
              "coverage": 0
            },
            {
              "name": "+[GULAppEnvironmentUtil isFromAppStore]",
              "coverage": 0.3548387096774194
            },
            {
              "name": "__39+[GULAppEnvironmentUtil isFromAppStore]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil isAppStoreReceiptSandbox]",
              "coverage": 0
            },
            {
              "name": "+[GULAppEnvironmentUtil isSimulator]",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil deviceModel]",
              "coverage": 1
            },
            {
              "name": "__36+[GULAppEnvironmentUtil deviceModel]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil systemVersion]",
              "coverage": 1
            },
            {
              "name": "+[GULAppEnvironmentUtil isAppExtension]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "GULSwizzler.m",
          "coverage": 0.7844036697247706,
          "type": "objc",
          "functions": [
            {
              "name": "GetGULSwizzlingQueue",
              "coverage": 1
            },
            {
              "name": "__GetGULSwizzlingQueue_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[GULSwizzler swizzleClass:selector:isClassSelector:withBlock:]",
              "coverage": 1
            },
            {
              "name": "__63+[GULSwizzler swizzleClass:selector:isClassSelector:withBlock:]_block_invoke",
              "coverage": 0.9512195121951219
            },
            {
              "name": "+[GULSwizzler unswizzleClass:selector:isClassSelector:]",
              "coverage": 1
            },
            {
              "name": "__55+[GULSwizzler unswizzleClass:selector:isClassSelector:]_block_invoke",
              "coverage": 0.9047619047619048
            },
            {
              "name": "+[GULSwizzler originalImplementationForClass:selector:isClassSelector:]",
              "coverage": 0
            },
            {
              "name": "__71+[GULSwizzler originalImplementationForClass:selector:isClassSelector:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GULSwizzler currentImplementationForClass:selector:isClassSelector:]",
              "coverage": 0.92
            },
            {
              "name": "__70+[GULSwizzler currentImplementationForClass:selector:isClassSelector:]_block_invoke",
              "coverage": 0.8125
            },
            {
              "name": "+[GULSwizzler selector:existsInClass:isClassSelector:]",
              "coverage": 0
            },
            {
              "name": "+[GULSwizzler ivarObjectsForObject:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULSwizzlingCache.m",
          "coverage": 0.8157894736842105,
          "type": "objc",
          "functions": [
            {
              "name": "+[GULSwizzlingCache sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__35+[GULSwizzlingCache sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache init]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzlingCache cacheCurrentIMP:forNewIMP:forClass:withSelector:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache cachedIMPForClass:withSelector:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache clearCacheForSwizzledIMP:selector:aClass:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache originalIMPOfCurrentIMP:]",
              "coverage": 1
            },
            {
              "name": "-[GULSwizzlingCache clearCache]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzlingCache originalImps]",
              "coverage": 0
            },
            {
              "name": "-[GULSwizzlingCache newToOriginalImps]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GULLogger.m",
          "coverage": 0.8333333333333334,
          "type": "objc",
          "functions": [
            {
              "name": "GULLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__GULLoggerInitializeASL_block_invoke",
              "coverage": 1
            },
            {
              "name": "GULLoggerEnableSTDERR",
              "coverage": 0
            },
            {
              "name": "GULLoggerForceDebug",
              "coverage": 1
            },
            {
              "name": "GULSetLoggerLevel",
              "coverage": 0.6470588235294118
            },
            {
              "name": "__GULSetLoggerLevel_block_invoke",
              "coverage": 1
            },
            {
              "name": "GULIsLoggableLevel",
              "coverage": 0.7142857142857143
            },
            {
              "name": "GULResetLogger",
              "coverage": 1
            },
            {
              "name": "getGULLoggerClient",
              "coverage": 0
            },
            {
              "name": "getGULClientQueue",
              "coverage": 0
            },
            {
              "name": "getGULLoggerDebugMode",
              "coverage": 0
            },
            {
              "name": "GULLoggerRegisterVersion",
              "coverage": 1
            },
            {
              "name": "GULLogBasic",
              "coverage": 1
            },
            {
              "name": "__GULLogBasic_block_invoke",
              "coverage": 1
            },
            {
              "name": "Definition at 182:46",
              "coverage": 1
            },
            {
              "name": "+[GULLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        }
      ]
    },
    {
      "name": "InstanceID_Example_iOS.app",
      "coverage": 0.8083930704898447,
      "files": [
        {
          "name": "FIRInstanceIDTokenDeleteOperation.m",
          "coverage": 0.12643678160919541,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation initWithAuthorizedEntity:scope:checkinPreferences:keyPair:action:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation performTokenOperation]",
              "coverage": 0
            },
            {
              "name": "__58-[FIRInstanceIDTokenDeleteOperation performTokenOperation]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation handleResponseWithData:response:error:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.2413793103448276,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceID+Private.m",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceID(Private) cachedCheckinPreferences]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID(Private) fetchCheckinInfoWithHandler:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID(Private) appInstanceID:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSError+FIRInstanceID.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSError(FIRInstanceID) instanceIDErrorCode]",
              "coverage": 0
            },
            {
              "name": "+[NSError(FIRInstanceID) errorWithFIRInstanceIDErrorCode:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRInstanceID) errorWithFIRInstanceIDErrorCode:userInfo:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRInstanceID) FIRInstanceIDErrorMissingCheckin]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDStringEncoding.m",
          "coverage": 0.5308641975308642,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDStringEncoding rfc4648Base64WebsafeStringEncoding]",
              "coverage": 1
            },
            {
              "name": "lcm",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStringEncoding stringEncodingWithString:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding initWithString:]",
              "coverage": 0.6896551724137931
            },
            {
              "name": "-[FIRInstanceIDStringEncoding description]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDStringEncoding doPad]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDStringEncoding setDoPad:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding setPaddingChar:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding encode:]",
              "coverage": 0.8444444444444444
            },
            {
              "name": "-[FIRInstanceIDStringEncoding decode:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenManager.m",
          "coverage": 0.7067039106145251,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenManager init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager configureTokenOperations]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke.52",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke_2.53",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager cachedTokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]",
              "coverage": 0.9166666666666666
            },
            {
              "name": "__83-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__83-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke.86",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteAllTokensLocallyWithHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager stopAllTokenOperations]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager store:didDeleteFCMScopedTokensForCheckin:]",
              "coverage": 0
            },
            {
              "name": "__70-[FIRInstanceIDTokenManager store:didDeleteFCMScopedTokensForCheckin:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager createFetchOperationWithAuthorizedEntity:scope:options:keyPair:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager createDeleteOperationWithAuthorizedEntity:scope:checkinPreferences:keyPair:action:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager checkForTokenRefreshPolicy]",
              "coverage": 0.8125
            },
            {
              "name": "-[FIRInstanceIDTokenManager updateTokensToAPNSDeviceToken:isSandbox:]",
              "coverage": 0.9333333333333333
            }
          ]
        },
        {
          "name": "FIRInstanceIDLogger.m",
          "coverage": 0.72,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDLogger formatMessageCode:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncDebug:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncInfo:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncNotice:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncWarning:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncError:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDSharedLogger",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDSharedLogger_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceID.m",
          "coverage": 0.7266414141414141,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDResult copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID instanceID]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRInstanceID initPrivately]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID instanceIDForTests]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID token]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID instanceIDWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceID instanceIDWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceID instanceIDWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID cachedTokenIfAvailable]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setDefaultFCMToken:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]",
              "coverage": 0.8584905660377359
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke.163",
              "coverage": 0.9302325581395349
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke_2.171",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]",
              "coverage": 0.84375
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke",
              "coverage": 0.8
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke.195",
              "coverage": 0.8695652173913043
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke_2.196",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID asyncLoadKeyPairWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__45-[FIRInstanceID asyncLoadKeyPairWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__45-[FIRInstanceID asyncLoadKeyPairWithHandler:]_block_invoke_2",
              "coverage": 0.7222222222222222
            },
            {
              "name": "-[FIRInstanceID getIDWithHandler:]",
              "coverage": 0.7837837837837838
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke.223",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteIDWithHandler:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke",
              "coverage": 0.5555555555555556
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke.240",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke_2.241",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke.250",
              "coverage": 0.8
            },
            {
              "name": "-[FIRInstanceID notifyIdentityReset]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteIdentityWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke",
              "coverage": 0.9137931034482759
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_4",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID load]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__37+[FIRInstanceID componentsToRegister]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID configureWithApp:]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[FIRInstanceID configureInstanceIDWithOptions:app:]",
              "coverage": 0.7222222222222222
            },
            {
              "name": "+[FIRInstanceID configureErrorWithReason:]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID exitWithReason:forFirebaseApp:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID didCompleteConfigure]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID isFCMAutoInitEnabled]",
              "coverage": 0.8709677419354839
            },
            {
              "name": "-[FIRInstanceID start]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FIRInstanceID setupTokenManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setupKeyPairManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setupNotificationListeners]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID maxRetryCountForDefaultToken]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID minIntervalForDefaultTokenRetry]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID maxRetryIntervalForDefaultTokenInSeconds]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID retryIntervalToFetchDefaultToken]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRInstanceID fetchDefaultToken]",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID fetchDefaultToken]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID defaultTokenWithHandler:]",
              "coverage": 0.89
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke",
              "coverage": 0.8133333333333334
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke.406",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID notifyAPNSTokenIsSet:]",
              "coverage": 0
            },
            {
              "name": "__38-[FIRInstanceID notifyAPNSTokenIsSet:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__38-[FIRInstanceID notifyAPNSTokenIsSet:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID isSandboxApp]",
              "coverage": 1
            },
            {
              "name": "__29-[FIRInstanceID isSandboxApp]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID isProductionApp]",
              "coverage": 0.22556390977443608
            },
            {
              "name": "-[FIRInstanceID logAPNSConfigurationError:]",
              "coverage": 0.875
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenFetchOperation.m",
          "coverage": 0.75,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenFetchOperation initWithAuthorizedEntity:scope:options:checkinPreferences:keyPair:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation performTokenOperation]",
              "coverage": 0.9206349206349206
            },
            {
              "name": "__57-[FIRInstanceIDTokenFetchOperation performTokenOperation]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation handleResponseWithData:response:error:]",
              "coverage": 0.5454545454545454
            },
            {
              "name": "__74-[FIRInstanceIDTokenFetchOperation handleResponseWithData:response:error:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation parseFetchTokenResponse:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDVersionUtilities.m",
          "coverage": 0.775,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDParseCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDParseCurrentLibraryVersion_block_invoke",
              "coverage": 0.9285714285714286
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionMajor",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionMinor",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionPatch",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionIsBeta",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDURLQueryItem.m",
          "coverage": 0.78125,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDURLQueryItem queryItemWithName:value:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDURLQueryItem initWithName:value:]",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDQueryFromQueryItems",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRInstanceIDBackupExcludedPlist.m",
          "coverage": 0.7816901408450704,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist initWithFileName:subDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist writeDictionary:error:]",
              "coverage": 0.696969696969697
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist deleteFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist contentAsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist moveToApplicationSupportSubDirectory:]",
              "coverage": 0.5428571428571428
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist doesFileExist]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist plistDirectory]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist plistPathInDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist pathWithName:inDirectory:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist doesFileExistInDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist supportedDirectory]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinStore.m",
          "coverage": 0.7874396135265701,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinStore initWithCheckinPlistFileName:subDirectoryName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore initWithCheckinPlist:keychain:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore hasCheckinPlist]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore bundleIdentifierForKeychainAccount]",
              "coverage": 1
            },
            {
              "name": "__63-[FIRInstanceIDCheckinStore bundleIdentifierForKeychainAccount]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore saveCheckinPreferences:handler:]",
              "coverage": 0.5573770491803278
            },
            {
              "name": "__60-[FIRInstanceIDCheckinStore saveCheckinPreferences:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore removeCheckinPreferencesWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceIDCheckinStore removeCheckinPreferencesWithHandler:]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRInstanceIDCheckinStore cachedCheckinPreferences]",
              "coverage": 0.7073170731707317
            },
            {
              "name": "-[FIRInstanceIDCheckinStore migrateCheckinItemIfNeeded]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenOperation.m",
          "coverage": 0.8323353293413174,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDTokenOperation sharedURLSession]",
              "coverage": 0
            },
            {
              "name": "__47+[FIRInstanceIDTokenOperation sharedURLSession]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenOperation initWithAction:forAuthorizedEntity:scope:options:checkinPreferences:keyPair:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation addCompletionHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isAsynchronous]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isExecuting]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation setExecuting:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isFinished]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation setFinished:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation start]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRInstanceIDTokenOperation finishWithResult:token:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation cancel]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation performTokenOperation]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceIDTokenOperation requestWithAuthHeader:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenOperation standardQueryItemsWithDeviceID:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation queryItemsWithKeyPair:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenOperation HTTPAuthHeaderFromCheckin:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPairStore.m",
          "coverage": 0.8351449275362319,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDKeyDataWithTag",
              "coverage": 0.8333333333333334
            },
            {
              "name": "FIRInstanceIDCachedKeyRefWithTag",
              "coverage": 0.7777777777777778
            },
            {
              "name": "FIRInstanceIDHasMigratedKeyPair",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDLegacyPublicTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDLegacyPrivateTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDPublicTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDPublicTagWithSubtype_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDPrivateTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDPrivateTagWithSubtype_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCreationTimeKeyWithSubtype",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore invalidateKeyPairsIfNeeded]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore hasCachedKeyPairs]",
              "coverage": 0.29411764705882354
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore appIdentityWithError:]",
              "coverage": 0.6
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore loadKeyPairWithError:]",
              "coverage": 0.78125
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore generateAndSaveKeyWithSubtype:creationTime:error:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore validCachedKeyPairWithSubtype:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore cachedKeyPairWithSubtype:error:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore keyPairForPrivateKeyTag:publicKeyTag:error:]",
              "coverage": 0.8387096774193549
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]",
              "coverage": 0.8771929824561403
            },
            {
              "name": "__68-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]_block_invoke",
              "coverage": 0.8636363636363636
            },
            {
              "name": "__68-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]_block_invoke_2",
              "coverage": 0.6428571428571429
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]_block_invoke",
              "coverage": 0.7619047619047619
            },
            {
              "name": "__58-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore deleteSavedKeyPairWithSubtype:handler:]",
              "coverage": 0.9375
            },
            {
              "name": "__67-[FIRInstanceIDKeyPairStore deleteSavedKeyPairWithSubtype:handler:]_block_invoke",
              "coverage": 0.76
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]",
              "coverage": 1
            },
            {
              "name": "__75+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]_block_invoke",
              "coverage": 0.7619047619047619
            },
            {
              "name": "__75+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]_block_invoke_2",
              "coverage": 0.5454545454545454
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore removeKeyPairCreationTimePlistWithError:]",
              "coverage": 0.5
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore keyStoreFileName]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDUtilities.m",
          "coverage": 0.8547008547008547,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDRegisterServer",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentTimestampInSeconds",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentTimestampInMilliseconds",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentAppVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAppIdentifier",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDFirebaseAppID",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDDeviceModel",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDDeviceModel_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDOperatingSystemVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDHasLocaleChanged",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDIsValidGCMScope",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDStringForAPNSDeviceToken",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAPNSTupleStringForTokenAndServerType",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentGCMVersion",
              "coverage": 0.6
            },
            {
              "name": "FIRInstanceIDCurrentLocale",
              "coverage": 0.4583333333333333
            }
          ]
        },
        {
          "name": "FIRInstanceIDStore.m",
          "coverage": 0.8579234972677595,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDStore initWithDelegate:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore initWithCheckinStore:tokenStore:delegate:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore hasSubDirectory:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "+[FIRInstanceIDStore supportedDirectory]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore pathForSupportSubDirectory:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore createSubDirectory:]",
              "coverage": 0.6
            },
            {
              "name": "+[FIRInstanceIDStore removeSubDirectory:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore resetCredentialsIfNeeded]",
              "coverage": 1
            },
            {
              "name": "__46-[FIRInstanceIDStore resetCredentialsIfNeeded]_block_invoke",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRInstanceIDStore tokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRInstanceIDStore cachedTokenInfos]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore saveTokenInfo:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore removeCachedTokenWithAuthorizedEntity:scope:]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[FIRInstanceIDStore removeAllCachedTokensWithHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore saveCheckinPreferences:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore cachedCheckinPreferences]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore removeCheckinPreferencesWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRInstanceIDStore removeCheckinPreferencesWithHandler:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenInfo.m",
          "coverage": 0.889763779527559,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenInfo initWithAuthorizedEntity:scope:token:appVersion:firebaseAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenInfo isFresh]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenInfo initWithCoder:]",
              "coverage": 0.78125
            },
            {
              "name": "-[FIRInstanceIDTokenInfo encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinPreferences.m",
          "coverage": 0.8913043478260869,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinPreferences checkinPlistContents]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences hasCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences hasValidCheckinInfo]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences setHasPreCachedAuthCredentials:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinService.m",
          "coverage": 0.896414342629482,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinService init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService checkinWithExistingCheckin:completion:]",
              "coverage": 0.9649122807017544
            },
            {
              "name": "__69-[FIRInstanceIDCheckinService checkinWithExistingCheckin:completion:]_block_invoke",
              "coverage": 0.7105263157894737
            },
            {
              "name": "-[FIRInstanceIDCheckinService stopFetching]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService checkinParametersWithExistingCheckin:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinService setCheckinTestBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDAPNSInfo.m",
          "coverage": 0.9090909090909091,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithDeviceToken:isSandbox:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithTokenOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithCoder:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo encodeWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo isEqualToAPNSInfo:]",
              "coverage": 0.7142857142857143
            }
          ]
        },
        {
          "name": "FIRInstanceIDAuthService.m",
          "coverage": 0.9166666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAuthService initWithCheckinService:store:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService initWithStore:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService scheduleCheckin:]",
              "coverage": 0.7
            },
            {
              "name": "-[FIRInstanceIDAuthService startCheckinTimerWithDuration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService clearScheduledCheckinTimer]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService onScheduledCheckinTimerFired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService performScheduledCheckin]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRInstanceIDAuthService performScheduledCheckin]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__51-[FIRInstanceIDAuthService performScheduledCheckin]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService calculateNextCheckinRetryIntervalInSeconds]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRInstanceIDAuthService hasValidCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService checkinPreferences]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService stopCheckinRequest]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService resetCheckinWithHandler:]",
              "coverage": 0
            },
            {
              "name": "__52-[FIRInstanceIDAuthService resetCheckinWithHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDAuthService notifyCheckinHandlersWithCheckin:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService cachedCheckinMatchesCheckin:]",
              "coverage": 0.5714285714285714
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeychain.m",
          "coverage": 0.9227053140096618,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDKeychain sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__39+[FIRInstanceIDKeychain sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain itemWithQuery:]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceIDKeychain itemWithQuery:]_block_invoke",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRInstanceIDKeychain removeItemWithQuery:handler:]",
              "coverage": 1
            },
            {
              "name": "__53-[FIRInstanceIDKeychain removeItemWithQuery:handler:]_block_invoke",
              "coverage": 0.8260869565217391
            },
            {
              "name": "__53-[FIRInstanceIDKeychain removeItemWithQuery:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain addItemWithQuery:handler:]",
              "coverage": 1
            },
            {
              "name": "__50-[FIRInstanceIDKeychain addItemWithQuery:handler:]_block_invoke",
              "coverage": 0.6470588235294118
            },
            {
              "name": "__50-[FIRInstanceIDKeychain addItemWithQuery:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain generateKeyPairWithPrivateTag:publicTag:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceIDKeychain generateKeyPairWithPrivateTag:publicTag:]_block_invoke",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRInstanceIDAuthKeyChain.m",
          "coverage": 0.9405405405405406,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAuthKeychain initWithIdentifier:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDAuthKeychain keychainQueryForService:account:generic:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain keychainQueryForService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain itemsMatchingService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain dataForService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain removeItemsMatchingService:account:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain setData:forService:accessibility:account:handler:]",
              "coverage": 0.9183673469387755
            },
            {
              "name": "__78-[FIRInstanceIDAuthKeychain setData:forService:accessibility:account:handler:]_block_invoke",
              "coverage": 0.72
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinPreferences+Internal.m",
          "coverage": 0.9692307692307692,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) preferencesFromKeychainContents:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) initWithDeviceID:secretToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) reset]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) updateWithCheckinPlistContents:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) checkinKeychainContent]",
              "coverage": 0.75
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinDeviceIDFromKeychainContent:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinSecretFromKeychainContent:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinKeychainContent:forIndex:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPair.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDKeyPair initWithPrivateKey:publicKey:publicKeyData:privateKeyData:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair isValid]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair publicKey]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair privateKey]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenStore.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDTokenStore defaultStore]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore initWithKeychain:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenStore serviceKeyForAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore tokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore cachedTokenInfos]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenStore tokenInfoFromKeychainItem:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore saveTokenInfo:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore removeTokenWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore removeAllTokensWithHandler:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPairUtilities.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDWebSafeBase64",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDSHA1",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDKeyPairQuery",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAppIdentity",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "Messaging_Example_iOS.app",
      "coverage": 0.6270501835985313,
      "files": [
        {
          "name": "GtalkExtensions.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GtalkGtalkExtensionsRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GtalkRosterQuery descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkRosterItem descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkRosterItem_SubscriptionType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkRosterItem_SubscriptionType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GtalkRosterItem_AskType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkRosterItem_AskType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GtalkRosterItem_DisplayType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkRosterItem_DisplayType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkRmqLastId descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkRmqAck descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkVCard descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkPhoto descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkChatRead descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkChatClosed descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkCapabilities descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkSharedStatus descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkSharedStatus_ShowType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkSharedStatus_ShowType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkSharedStatus_StatusList descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkOtrQuery descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkOtrItem descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkIdle descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkPostAuthBatchQuery descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkPostAuthBatchQuery_CapabilitiesExtFlags_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkPostAuthBatchQuery_CapabilitiesExtFlags_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkStreamAck descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkSelectiveAck descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingTopicOperation.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "FIRMessagingSubscriptionsServer",
              "coverage": 0
            },
            {
              "name": "__FIRMessagingSubscriptionsServer_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingTopicOperation sharedSession]",
              "coverage": 0
            },
            {
              "name": "__43+[FIRMessagingTopicOperation sharedSession]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation initWithTopic:action:token:options:checkinService:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation dealloc]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation isAsynchronous]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation isExecuting]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation setExecuting:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation isFinished]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation setFinished:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation start]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation finishWithError:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation cancel]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicOperation performSubscriptionChange]",
              "coverage": 0
            },
            {
              "name": "__55-[FIRMessagingTopicOperation performSubscriptionChange]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenDeleteOperation.m",
          "coverage": 0.12643678160919541,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation initWithAuthorizedEntity:scope:checkinPreferences:keyPair:action:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation performTokenOperation]",
              "coverage": 0
            },
            {
              "name": "__58-[FIRInstanceIDTokenDeleteOperation performTokenOperation]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenDeleteOperation handleResponseWithData:response:error:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingReceiver.m",
          "coverage": 0.2012987012987013,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingReceiver initWithUserDefaults:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingReceiver didReceiveMessage:withIdentifier:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingReceiver willSendDataMessageWithID:error:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingReceiver didSendDataMessageWithID:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingReceiver didDeleteMessagesOnServer]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingReceiver scheduleIos10NotificationForMessage:withIdentifier:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingReceiver scheduleNotificationForMessage:]",
              "coverage": 0
            },
            {
              "name": "__55-[FIRMessagingReceiver scheduleNotificationForMessage:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__55-[FIRMessagingReceiver scheduleNotificationForMessage:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingReceiver nextMessageID]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingReceiver useDirectChannel]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingReceiver setUseDirectChannel:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.2413793103448276,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "NSDictionary+FIRMessaging.m",
          "coverage": 0.2857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSDictionary(FIRMessaging) fcm_string]",
              "coverage": 0
            },
            {
              "name": "-[NSDictionary(FIRMessaging) fcm_hasNonStringKeysOrValues]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[NSDictionary(FIRMessaging) fcm_trimNonStringValues]",
              "coverage": 0.5454545454545454
            }
          ]
        },
        {
          "name": "FIRMessagingCheckinService.m",
          "coverage": 0.3058823529411765,
          "type": "objc",
          "functions": [
            {
              "name": "FIRMessagingCheckinService_hasValidCheckinInfo",
              "coverage": 0
            },
            {
              "name": "FIRMessagingCheckinService_propertyNamed",
              "coverage": 0.5
            },
            {
              "name": "-[FIRMessagingCheckinService tryToLoadPrefetchedCheckinPreferences]",
              "coverage": 0.35714285714285715
            },
            {
              "name": "-[FIRMessagingCheckinService deviceAuthID]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingCheckinService secretToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingCheckinService versionInfo]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingCheckinService digest]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingCheckinService hasValidCheckinInfo]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceID+Private.m",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceID(Private) cachedCheckinPreferences]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID(Private) fetchCheckinInfoWithHandler:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID(Private) appInstanceID:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSError+FIRInstanceID.m",
          "coverage": 0.375,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSError(FIRInstanceID) instanceIDErrorCode]",
              "coverage": 0
            },
            {
              "name": "+[NSError(FIRInstanceID) errorWithFIRInstanceIDErrorCode:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRInstanceID) errorWithFIRInstanceIDErrorCode:userInfo:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRInstanceID) FIRInstanceIDErrorMissingCheckin]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingPersistentSyncMessage.m",
          "coverage": 0.4,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingPersistentSyncMessage init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPersistentSyncMessage initWithRMQID:expirationTime:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPersistentSyncMessage description]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPersistentSyncMessage debugDescription]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBUtilities_PackagePrivate.h",
          "coverage": 0.4166666666666667,
          "type": "objc",
          "functions": [
            {
              "name": "Definition at 54:52",
              "coverage": 0
            },
            {
              "name": "Definition at 65:47",
              "coverage": 0
            },
            {
              "name": "Definition at 73:54",
              "coverage": 0
            },
            {
              "name": "Definition at 79:52",
              "coverage": 0
            },
            {
              "name": "Definition at 85:54",
              "coverage": 0
            },
            {
              "name": "Definition at 91:52",
              "coverage": 0
            },
            {
              "name": "Definition at 97:74",
              "coverage": 1
            },
            {
              "name": "Definition at 101:74",
              "coverage": 1
            },
            {
              "name": "Definition at 109:50",
              "coverage": 0
            },
            {
              "name": "Definition at 117:50",
              "coverage": 0
            },
            {
              "name": "Definition at 125:50",
              "coverage": 0
            },
            {
              "name": "Definition at 134:50",
              "coverage": 0
            },
            {
              "name": "Definition at 143:55",
              "coverage": 1
            },
            {
              "name": "Definition at 155:56",
              "coverage": 1
            },
            {
              "name": "Definition at 165:70",
              "coverage": 1
            },
            {
              "name": "Definition at 169:69",
              "coverage": 1
            },
            {
              "name": "Definition at 173:68",
              "coverage": 0
            },
            {
              "name": "Definition at 178:65",
              "coverage": 0
            },
            {
              "name": "Definition at 192:65",
              "coverage": 1
            },
            {
              "name": "Definition at 197:48",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingPubSubRegistrar.m",
          "coverage": 0.42424242424242425,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingPubSubRegistrar init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSubRegistrar initWithCheckinService:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPubSubRegistrar stopAllSubscriptionRequests]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPubSubRegistrar updateSubscriptionToTopic:withToken:options:shouldDelete:handler:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GtalkCore.pbobjc.m",
          "coverage": 0.4363238512035011,
          "type": "objc",
          "functions": [
            {
              "name": "GtalkGtalkCoreRoot_FileDescriptor",
              "coverage": 1
            },
            {
              "name": "+[GtalkHeartbeatPing descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkHeartbeatAck descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkErrorInfo descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkSetting descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkHeartbeatStat descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkHeartbeatConfig descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkLoginRequest descriptor]",
              "coverage": 1
            },
            {
              "name": "GtalkLoginRequest_AuthService_EnumDescriptor",
              "coverage": 0.9130434782608695
            },
            {
              "name": "GtalkLoginRequest_AuthService_IsValidValue",
              "coverage": 0.9
            },
            {
              "name": "+[GtalkLoginResponse descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkBindAccountRequest descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkBindAccountResponse descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkStreamErrorStanza descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkClose descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkExtension descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkMessageStanza descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkMessageStanza_MessageType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkMessageStanza_MessageType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkPresenceStanza descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_PresenceType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_PresenceType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_ShowType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_ShowType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_ClientType_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_ClientType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_CapabilitiesFlags_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkPresenceStanza_CapabilitiesFlags_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkBatchPresenceStanza descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkBatchPresenceStanza_Type_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkBatchPresenceStanza_Type_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkIqStanza descriptor]",
              "coverage": 1
            },
            {
              "name": "GtalkIqStanza_IqType_EnumDescriptor",
              "coverage": 0.9130434782608695
            },
            {
              "name": "GtalkIqStanza_IqType_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GtalkAppData descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkDataMessageStanza descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GtalkTalkMetadata descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkCellTower descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GtalkClientEvent descriptor]",
              "coverage": 0
            },
            {
              "name": "GtalkClientEvent_Type_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkClientEvent_Type_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GtalkClientEvent_McsReconnectAction_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GtalkClientEvent_McsReconnectAction_IsValidValue",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingConnection.m",
          "coverage": 0.5072727272727273,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingD2SInfo initWithStreamId:d2sId:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingD2SInfo isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingD2SInfo hash]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection initWithAuthID:token:host:port:runLoop:rmq2Manager:fcmManager:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection description]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection signIn]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection setupConnectionSocket]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection connectToSocket:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection signOut]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection teardown]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection secureSocketDidConnect:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection didDisconnectWithSecureSocket:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection secureSocket:didReceiveData:withTag:]",
              "coverage": 0.7368421052631579
            },
            {
              "name": "-[FIRMessagingConnection secureSocket:didSendProtoWithTag:rmqId:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection sendProto:]",
              "coverage": 0.5714285714285714
            },
            {
              "name": "-[FIRMessagingConnection sendOnConnectOrDrop:]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingConnection loginRequestWithToken:authID:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingConnection currentNetworkType]",
              "coverage": 0.7894736842105263
            },
            {
              "name": "-[FIRMessagingConnection sendLoginRequest:token:]",
              "coverage": 0.6296296296296297
            },
            {
              "name": "-[FIRMessagingConnection sendHeartbeatAck]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection sendHeartbeatPing]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingConnection createStreamAck]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection sendStreamAck]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection sendClose]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection handleIqStanza:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection didReceiveLoginResponse:]",
              "coverage": 0.7083333333333334
            },
            {
              "name": "-[FIRMessagingConnection didReceiveHeartbeatPing:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection didReceiveHeartbeatAck:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection didReceiveDataMessageStanza:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection didReceiveUnhandledProto:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection didReceiveStreamAck:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection didReceiveSelectiveAck:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection didReceiveClose:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection willProcessProto:]",
              "coverage": 0.5945945945945946
            },
            {
              "name": "-[FIRMessagingConnection willSendProto:]",
              "coverage": 0.625
            },
            {
              "name": "-[FIRMessagingConnection confirmAckedD2sIdsWithStreamId:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection didReceiveAckForRmqIds:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection confirmAckedS2dIdsWithStreamId:]",
              "coverage": 0
            },
            {
              "name": "__57-[FIRMessagingConnection confirmAckedS2dIdsWithStreamId:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection resetUnconfirmedAcks]",
              "coverage": 1
            },
            {
              "name": "__46-[FIRMessagingConnection resetUnconfirmedAcks]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection disconnect]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection connectionTimedOut]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection scheduleConnectionTimeoutTask]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection cancelConnectionTimeoutTask]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingConnection logMessage:messageType:isOut:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingConnection connectionTimeoutInterval]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingClient.m",
          "coverage": 0.5215311004784688,
          "type": "objc",
          "functions": [
            {
              "name": "FIRMessagingServerHost",
              "coverage": 1
            },
            {
              "name": "__FIRMessagingServerHost_block_invoke",
              "coverage": 0.9
            },
            {
              "name": "FIRMessagingServerPort",
              "coverage": 1
            },
            {
              "name": "__FIRMessagingServerPort_block_invoke",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FIRMessagingClient init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient initWithDelegate:reachability:rmq2Manager:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient teardown]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient cancelAllRequests]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient updateSubscriptionWithToken:topic:options:shouldDelete:handler:]",
              "coverage": 0
            },
            {
              "name": "__85-[FIRMessagingClient updateSubscriptionWithToken:topic:options:shouldDelete:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient isConnected]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient isConnectionActive]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient shouldStayConnected]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient retryConnectionImmediately:]",
              "coverage": 0
            },
            {
              "name": "__49-[FIRMessagingClient retryConnectionImmediately:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient connectWithHandler:]",
              "coverage": 0.46153846153846156
            },
            {
              "name": "-[FIRMessagingClient connect]",
              "coverage": 0.43478260869565216
            },
            {
              "name": "-[FIRMessagingClient disconnect]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient disconnectWithTryToConnectLater:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient checkinFetched:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient sendMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient sendOnConnectOrDrop:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient connection:didCloseForReason:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient didLoginWithConnection:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient connectionDidRecieveMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient connectionDidReceiveAckForRmqIds:]",
              "coverage": 0
            },
            {
              "name": "__55-[FIRMessagingClient connectionDidReceiveAckForRmqIds:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingClient setupConnectionAndConnect]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient setupConnection]",
              "coverage": 0.7894736842105263
            },
            {
              "name": "-[FIRMessagingClient tryToConnect]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FIRMessagingClient didConnectTimeout]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient scheduleConnectRetry]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingClient nextRetryInterval]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDStringEncoding.m",
          "coverage": 0.5308641975308642,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDStringEncoding rfc4648Base64WebsafeStringEncoding]",
              "coverage": 1
            },
            {
              "name": "lcm",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStringEncoding stringEncodingWithString:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding initWithString:]",
              "coverage": 0.6896551724137931
            },
            {
              "name": "-[FIRInstanceIDStringEncoding description]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDStringEncoding doPad]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDStringEncoding setDoPad:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding setPaddingChar:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStringEncoding encode:]",
              "coverage": 0.8444444444444444
            },
            {
              "name": "-[FIRInstanceIDStringEncoding decode:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessaging.m",
          "coverage": 0.5459032576505429,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingMessageInfo init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingMessageInfo initWithStatus:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRemoteMessage init]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging messaging]",
              "coverage": 1
            },
            {
              "name": "__25+[FIRMessaging messaging]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging extensionHelper]",
              "coverage": 0
            },
            {
              "name": "__31+[FIRMessaging extensionHelper]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging initWithAnalytics:withInstanceID:withUserDefaults:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging dealloc]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging load]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging componentsToRegister]",
              "coverage": 0
            },
            {
              "name": "__36+[FIRMessaging componentsToRegister]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging configureWithApp:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging configureMessaging:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging start]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupFileManagerSubDirectory]",
              "coverage": 0.6
            },
            {
              "name": "-[FIRMessaging setupNotificationListeners]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupReceiver]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupClient]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupDataMessageManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupRmqManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupTopics]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setupSyncMessageManager]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRMessaging setupSyncMessageManager]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging teardown]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging appDidReceiveMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging handleContextManagerMessage:]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging isAPNSSyncMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging handleIncomingLinkIfNeededFromMessage:]",
              "coverage": 0
            },
            {
              "name": "__54-[FIRMessaging handleIncomingLinkIfNeededFromMessage:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__54-[FIRMessaging handleIncomingLinkIfNeededFromMessage:]_block_invoke.322",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging linkURLFromMessage:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging APNSToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setAPNSToken:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging setAPNSToken:type:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging isAutoInitEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging setAutoInitEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging FCMToken]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging retrieveFCMTokenForSenderID:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging deleteFCMTokenForSenderID:completion:]",
              "coverage": 0.7647058823529411
            },
            {
              "name": "-[FIRMessaging setDelegate:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging validateDelegateConformsToTokenAvailabilityMethods]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging notifyDelegateOfFCMTokenAvailability]",
              "coverage": 0
            },
            {
              "name": "__52-[FIRMessaging notifyDelegateOfFCMTokenAvailability]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging setUseMessagingDelegateForDirectChannel:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging useMessagingDelegateForDirectChannel]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging applicationStateChanged]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging setShouldEstablishDirectChannel:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging isDirectChannelEstablished]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging shouldBeConnectedAutomatically]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRMessaging updateAutomaticClientConnection]",
              "coverage": 0.2857142857142857
            },
            {
              "name": "__47-[FIRMessaging updateAutomaticClientConnection]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__47-[FIRMessaging updateAutomaticClientConnection]_block_invoke.428",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging notifyOfDirectChannelConnectionChange]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging connectWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "__38-[FIRMessaging connectWithCompletion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging disconnect]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging normalizeTopic:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRMessaging subscribeToTopic:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging subscribeToTopic:completion:]",
              "coverage": 0.8260869565217391
            },
            {
              "name": "-[FIRMessaging unsubscribeFromTopic:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging unsubscribeFromTopic:completion:]",
              "coverage": 0.8260869565217391
            },
            {
              "name": "-[FIRMessaging sendMessage:to:withMessageID:timeToLive:]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging createFIRMessagingMessageWithMessage:to:withID:timeToLive:delay:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging FIRMessagingSDKVersion]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging FIRMessagingSDKCurrentLocale]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessaging receiver:receivedRemoteMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging reachability:statusChanged:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging onNetworkStatusChanged]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging isNetworkAvailable]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging networkType]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging didReceiveDefaultInstanceIDToken:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessaging defaultInstanceIDTokenWasRefreshed:]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging hasSubDirectory:]",
              "coverage": 0.7272727272727273
            },
            {
              "name": "+[FIRMessaging pathForSubDirectory:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging createSubDirectory:]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessaging currentLocale]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging firebaseLocales]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessaging firebaselocalesMap]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingRemoteNotificationsProxy.m",
          "coverage": 0.6026490066225165,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRMessagingRemoteNotificationsProxy canSwizzleMethods]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingRemoteNotificationsProxy swizzleMethods]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingRemoteNotificationsProxy sharedProxy]",
              "coverage": 0
            },
            {
              "name": "__51+[FIRMessagingRemoteNotificationsProxy sharedProxy]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy init]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy swizzleMethodsIfPossible]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy unswizzleAllMethods]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy swizzleAppDelegateMethods:]",
              "coverage": 0.9076923076923077
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy listenForDelegateChangesInUserNotificationCenter:]",
              "coverage": 0.35714285714285715
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy swizzleUserNotificationCenterDelegate:]",
              "coverage": 0.9117647058823529
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy unswizzleUserNotificationCenterDelegate:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy addDelegateObserverToUserNotificationCenter:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy removeUserNotificationCenterDelegateObserver]",
              "coverage": 0.21052631578947367
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy observeValueForKeyPath:ofObject:change:context:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy saveOriginalImplementation:forSelector:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy originalImplementationForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy trackSwizzledSelector:ofClass:]",
              "coverage": 0.9090909090909091
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy removeImplementationForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy swizzleSelector:inClass:withImplementation:inProtocol:]",
              "coverage": 0.8648648648648649
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy unswizzleSelector:inClass:]",
              "coverage": 0.88
            },
            {
              "name": "-[FIRMessagingRemoteNotificationsProxy nonExistantMethodImplementationForClass:]",
              "coverage": 1
            },
            {
              "name": "getNamedPropertyFromObject",
              "coverage": 0.7142857142857143
            },
            {
              "name": "FCM_swizzle_appDidReceiveRemoteNotification",
              "coverage": 1
            },
            {
              "name": "FCM_swizzle_appDidReceiveRemoteNotificationWithHandler",
              "coverage": 1
            },
            {
              "name": "FCM_swizzle_willPresentNotificationWithHandler",
              "coverage": 0.5925925925925926
            },
            {
              "name": "__FCM_swizzle_willPresentNotificationWithHandler_block_invoke",
              "coverage": 1
            },
            {
              "name": "FCM_swizzle_didReceiveNotificationResponseWithHandler",
              "coverage": 0.6101694915254238
            },
            {
              "name": "__FCM_swizzle_didReceiveNotificationResponseWithHandler_block_invoke",
              "coverage": 1
            },
            {
              "name": "userInfoFromNotification",
              "coverage": 0.6923076923076923
            },
            {
              "name": "FCM_swizzle_messagingDidReceiveMessage",
              "coverage": 0
            },
            {
              "name": "FCM_swizzle_appDidFailToRegisterForRemoteNotifications",
              "coverage": 0
            },
            {
              "name": "FCM_swizzle_appDidRegisterForRemoteNotifications",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingPacketQueue.m",
          "coverage": 0.6078431372549019,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRMessagingPacket packetWithTag:rmqId:data:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPacket init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPacket initWithTag:rmqId:data:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPacket description]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPacketQueue init]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPacketQueue isEmpty]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPacketQueue count]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPacketQueue push:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPacketQueue pushHead:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPacketQueue pop]",
              "coverage": 0.75
            }
          ]
        },
        {
          "name": "FIRMessagingPubSub.m",
          "coverage": 0.625,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingPubSub init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub initWithClient:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPubSub subscribeWithToken:topic:options:handler:]",
              "coverage": 0.7435897435897436
            },
            {
              "name": "__63-[FIRMessagingPubSub subscribeWithToken:topic:options:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub unsubscribeWithToken:topic:options:handler:]",
              "coverage": 0.6578947368421053
            },
            {
              "name": "__65-[FIRMessagingPubSub unsubscribeWithToken:topic:options:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub subscribeToTopic:handler:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub unsubscribeFromTopic:handler:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub scheduleSync:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub pendingTopicsList:requestedUpdateForTopic:action:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub pendingTopicsListDidUpdate:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub pendingTopicsListCanRequestTopicUpdates:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub archivePendingTopicsList:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPubSub restorePendingTopicsList]",
              "coverage": 0.8421052631578947
            },
            {
              "name": "-[FIRMessagingPubSub verifyPubSubOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingPubSub addPrefixToTopic:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingPubSub removePrefixFromTopic:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingPubSub hasTopicsPrefix:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingPubSub topicRegex]",
              "coverage": 1
            },
            {
              "name": "__32+[FIRMessagingPubSub topicRegex]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingPubSub isValidTopicWithPrefix:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingCodedInputStream.m",
          "coverage": 0.6363636363636364,
          "type": "objc",
          "functions": [
            {
              "name": "CheckSize",
              "coverage": 1
            },
            {
              "name": "ReadRawByte",
              "coverage": 1
            },
            {
              "name": "ReadRawVarInt32",
              "coverage": 0.35714285714285715
            },
            {
              "name": "-[FIRMessagingCodedInputStream initWithData:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingCodedInputStream offset]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingCodedInputStream readTag:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingCodedInputStream readLength:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingCodedInputStream readDataWithLength:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingSecureSocket.m",
          "coverage": 0.6518105849582173,
          "type": "objc",
          "functions": [
            {
              "name": "LogicalRightShift32",
              "coverage": 0
            },
            {
              "name": "SerializedSize",
              "coverage": 0.75
            },
            {
              "name": "-[FIRMessagingSecureSocket init]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSecureSocket dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSecureSocket connectToHost:port:onRunLoop:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingSecureSocket disconnect]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSecureSocket sendData:withTag:rmqId:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSecureSocket stream:handleEvent:]",
              "coverage": 0.7241379310344828
            },
            {
              "name": "-[FIRMessagingSecureSocket openStream:isVOIPStream:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingSecureSocket closeStream:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSecureSocket performRead]",
              "coverage": 0.6826923076923077
            },
            {
              "name": "-[FIRMessagingSecureSocket processCurrentInputBuffer:outOffset:]",
              "coverage": 0.6551724137931034
            },
            {
              "name": "-[FIRMessagingSecureSocket performWrite]",
              "coverage": 0.9523809523809523
            }
          ]
        },
        {
          "name": "FIRMessagingRmq2PersistentStore.m",
          "coverage": 0.6566455696202531,
          "type": "objc",
          "functions": [
            {
              "name": "FIRMessagingStringFromSQLiteResult",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore initWithDatabaseName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore moveToApplicationSupportSubDirectory:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore doesFileExistInDirectory:]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingRmq2PersistentStore pathForDatabase:inDirectory:]",
              "coverage": 0.8
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore createTableWithName:command:]",
              "coverage": 0.3333333333333333
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore dropTableWithName:]",
              "coverage": 0.625
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore removeDatabase]",
              "coverage": 0
            },
            {
              "name": "+[FIRMessagingRmq2PersistentStore removeDatabase:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore openDatabase:]",
              "coverage": 0.5625
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore updateDbWithStringRmqID]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore saveUnackedS2dMessageWithRmqId:]",
              "coverage": 0.7391304347826086
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore saveMessageWithRmqId:tag:data:error:]",
              "coverage": 0.5161290322580645
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore deleteMessagesFromTable:withRmqIds:]",
              "coverage": 0.8522727272727273
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore queryHighestRmqId]",
              "coverage": 0.7894736842105263
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore queryLastRmqId]",
              "coverage": 0.7894736842105263
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore updateLastOutgoingRmqId:]",
              "coverage": 0.6190476190476191
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore unackedS2dRmqIds]",
              "coverage": 0.8
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore scanOutgoingRmqMessagesWithHandler:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore querySyncMessageWithRmqID:]",
              "coverage": 0.9111111111111111
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore deleteSyncMessageWithRmqID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore deleteExpiredOrFinishedSyncMessages:]",
              "coverage": 0.6571428571428571
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore saveSyncMessageWithRmqID:expirationTime:apnsReceived:mcsReceived:error:]",
              "coverage": 0.6363636363636364
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore updateSyncMessageViaAPNSWithRmqID:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore updateSyncMessageViaMCSWithRmqID:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore updateSyncMessageWithRmqID:column:value:error:]",
              "coverage": 0.7058823529411765
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore lastErrorMessage]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore lastErrorCode]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore logError]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingRmq2PersistentStore logErrorAndFinalizeStatement:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "NSError+FIRMessaging.m",
          "coverage": 0.6666666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSError(FIRMessaging) fcmErrorCode]",
              "coverage": 0
            },
            {
              "name": "+[NSError(FIRMessaging) errorWithFCMErrorCode:]",
              "coverage": 1
            },
            {
              "name": "+[NSError(FIRMessaging) fcm_errorWithCode:userInfo:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenManager.m",
          "coverage": 0.7067039106145251,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenManager init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager configureTokenOperations]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke.52",
              "coverage": 1
            },
            {
              "name": "__93-[FIRInstanceIDTokenManager fetchNewTokenWithAuthorizedEntity:scope:keyPair:options:handler:]_block_invoke_2.53",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager cachedTokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]",
              "coverage": 0.9166666666666666
            },
            {
              "name": "__83-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__83-[FIRInstanceIDTokenManager deleteTokenWithAuthorizedEntity:scope:keyPair:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke.86",
              "coverage": 0
            },
            {
              "name": "__64-[FIRInstanceIDTokenManager deleteAllTokensWithKeyPair:handler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager deleteAllTokensLocallyWithHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager stopAllTokenOperations]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenManager store:didDeleteFCMScopedTokensForCheckin:]",
              "coverage": 0
            },
            {
              "name": "__70-[FIRInstanceIDTokenManager store:didDeleteFCMScopedTokensForCheckin:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager createFetchOperationWithAuthorizedEntity:scope:options:keyPair:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager createDeleteOperationWithAuthorizedEntity:scope:checkinPreferences:keyPair:action:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenManager checkForTokenRefreshPolicy]",
              "coverage": 0.8125
            },
            {
              "name": "-[FIRInstanceIDTokenManager updateTokensToAPNSDeviceToken:isSandbox:]",
              "coverage": 0.9333333333333333
            }
          ]
        },
        {
          "name": "FIRInstanceIDLogger.m",
          "coverage": 0.72,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDLogger formatMessageCode:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncDebug:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncInfo:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncNotice:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncWarning:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDLogger logFuncError:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDSharedLogger",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDSharedLogger_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingDelayedMessageQueue.m",
          "coverage": 0.723404255319149,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingDelayedMessageQueue init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue initWithRmqScanner:sendDelayedMessagesHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue queueMessage:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue removeDelayedMessages]",
              "coverage": 0.5862068965517241
            },
            {
              "name": "__56-[FIRMessagingDelayedMessageQueue removeDelayedMessages]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue sendMessages]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue messageCount]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue isTimeoutScheduled]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue calculateTimeoutInMillisWithDelayInSeconds:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue scheduleTimeoutInMillis:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDelayedMessageQueue cancelTimeout]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceID.m",
          "coverage": 0.7266414141414141,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDResult copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID instanceID]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRInstanceID initPrivately]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID instanceIDForTests]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID token]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID instanceIDWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceID instanceIDWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceID instanceIDWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID cachedTokenIfAvailable]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setDefaultFCMToken:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]",
              "coverage": 0.8584905660377359
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke.163",
              "coverage": 0.9302325581395349
            },
            {
              "name": "__65-[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler:]_block_invoke_2.171",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]",
              "coverage": 0.84375
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke",
              "coverage": 0.8
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke.195",
              "coverage": 0.8695652173913043
            },
            {
              "name": "__63-[FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler:]_block_invoke_2.196",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID asyncLoadKeyPairWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__45-[FIRInstanceID asyncLoadKeyPairWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__45-[FIRInstanceID asyncLoadKeyPairWithHandler:]_block_invoke_2",
              "coverage": 0.7222222222222222
            },
            {
              "name": "-[FIRInstanceID getIDWithHandler:]",
              "coverage": 0.7837837837837838
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID getIDWithHandler:]_block_invoke.223",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteIDWithHandler:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke",
              "coverage": 0.5555555555555556
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke.240",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke_2.241",
              "coverage": 0
            },
            {
              "name": "__37-[FIRInstanceID deleteIDWithHandler:]_block_invoke.250",
              "coverage": 0.8
            },
            {
              "name": "-[FIRInstanceID notifyIdentityReset]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID deleteIdentityWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke",
              "coverage": 0.9137931034482759
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__43-[FIRInstanceID deleteIdentityWithHandler:]_block_invoke_4",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID load]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__37+[FIRInstanceID componentsToRegister]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID configureWithApp:]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[FIRInstanceID configureInstanceIDWithOptions:app:]",
              "coverage": 0.7222222222222222
            },
            {
              "name": "+[FIRInstanceID configureErrorWithReason:]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID exitWithReason:forFirebaseApp:]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID didCompleteConfigure]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID isFCMAutoInitEnabled]",
              "coverage": 0.8709677419354839
            },
            {
              "name": "-[FIRInstanceID start]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FIRInstanceID setupTokenManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setupKeyPairManager]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID setupNotificationListeners]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID maxRetryCountForDefaultToken]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceID minIntervalForDefaultTokenRetry]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceID maxRetryIntervalForDefaultTokenInSeconds]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID retryIntervalToFetchDefaultToken]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRInstanceID fetchDefaultToken]",
              "coverage": 1
            },
            {
              "name": "__34-[FIRInstanceID fetchDefaultToken]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID defaultTokenWithHandler:]",
              "coverage": 0.89
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke",
              "coverage": 0.8133333333333334
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__41-[FIRInstanceID defaultTokenWithHandler:]_block_invoke.406",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID notifyAPNSTokenIsSet:]",
              "coverage": 0
            },
            {
              "name": "__38-[FIRInstanceID notifyAPNSTokenIsSet:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__38-[FIRInstanceID notifyAPNSTokenIsSet:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceID isSandboxApp]",
              "coverage": 1
            },
            {
              "name": "__29-[FIRInstanceID isSandboxApp]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceID isProductionApp]",
              "coverage": 0.22556390977443608
            },
            {
              "name": "-[FIRInstanceID logAPNSConfigurationError:]",
              "coverage": 0.875
            }
          ]
        },
        {
          "name": "FIRMessagingPendingTopicsList.m",
          "coverage": 0.7335766423357665,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingTopicBatch initWithAction:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingTopicBatch encodeWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingTopicBatch initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPendingTopicsList init]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingPendingTopicsList pruneTopicBatches:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPendingTopicsList encodeWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPendingTopicsList initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingPendingTopicsList numberOfBatches]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPendingTopicsList addOperationForTopic:withAction:completion:]",
              "coverage": 0.8205128205128205
            },
            {
              "name": "__76-[FIRMessagingPendingTopicsList addOperationForTopic:withAction:completion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPendingTopicsList resumeOperationsIfNeeded]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FIRMessagingPendingTopicsList subscriptionErrorIsRecoverable:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingPendingTopicsList beginUpdateForCurrentBatchTopic:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRMessagingPendingTopicsList beginUpdateForCurrentBatchTopic:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__65-[FIRMessagingPendingTopicsList beginUpdateForCurrentBatchTopic:]_block_invoke_2",
              "coverage": 0.8055555555555556
            },
            {
              "name": "__65-[FIRMessagingPendingTopicsList beginUpdateForCurrentBatchTopic:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__65-[FIRMessagingPendingTopicsList beginUpdateForCurrentBatchTopic:]_block_invoke.130",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingContextManagerService.m",
          "coverage": 0.7361111111111112,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRMessagingContextManagerService isContextManagerMessage:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingContextManagerService handleContextManagerMessage:]",
              "coverage": 0.7272727272727273
            },
            {
              "name": "+[FIRMessagingContextManagerService handleContextManagerLocalTimeMessage:]",
              "coverage": 0.7307692307692307
            },
            {
              "name": "+[FIRMessagingContextManagerService scheduleLocalNotificationForMessage:atDate:]",
              "coverage": 0.6428571428571429
            },
            {
              "name": "+[FIRMessagingContextManagerService parseDataFromMessage:]",
              "coverage": 0.9333333333333333
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenFetchOperation.m",
          "coverage": 0.75,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenFetchOperation initWithAuthorizedEntity:scope:options:checkinPreferences:keyPair:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation performTokenOperation]",
              "coverage": 0.9206349206349206
            },
            {
              "name": "__57-[FIRInstanceIDTokenFetchOperation performTokenOperation]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation handleResponseWithData:response:error:]",
              "coverage": 0.5454545454545454
            },
            {
              "name": "__74-[FIRInstanceIDTokenFetchOperation handleResponseWithData:response:error:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenFetchOperation parseFetchTokenResponse:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingUtilities.m",
          "coverage": 0.7535211267605634,
          "type": "objc",
          "functions": [
            {
              "name": "FIRMessagingGetTagForProto",
              "coverage": 0.7777777777777778
            },
            {
              "name": "FIRMessagingGetClassForTag",
              "coverage": 0.8571428571428571
            },
            {
              "name": "FIRMessagingGetRmq2Id",
              "coverage": 0.75
            },
            {
              "name": "FIRMessagingSetRmq2Id",
              "coverage": 0.8571428571428571
            },
            {
              "name": "FIRMessagingGetLastStreamId",
              "coverage": 0.5
            },
            {
              "name": "FIRMessagingSetLastStreamId",
              "coverage": 0.9090909090909091
            },
            {
              "name": "FIRMessagingCurrentTimestampInSeconds",
              "coverage": 1
            },
            {
              "name": "FIRMessagingCurrentTimestampInMilliseconds",
              "coverage": 1
            },
            {
              "name": "FIRMessagingCurrentAppVersion",
              "coverage": 0
            },
            {
              "name": "FIRMessagingAppIdentifier",
              "coverage": 1
            },
            {
              "name": "FIRMessagingGetFreeDiskSpaceInMB",
              "coverage": 0.8
            },
            {
              "name": "FIRMessagingUIApplication",
              "coverage": 1
            },
            {
              "name": "FIRMessagingSupportedDirectory",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingVersionUtilities.m",
          "coverage": 0.7567567567567568,
          "type": "objc",
          "functions": [
            {
              "name": "FIRMessagingParseCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "__FIRMessagingParseCurrentLibraryVersion_block_invoke",
              "coverage": 0.92
            },
            {
              "name": "FIRMessagingCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "FIRMessagingCurrentLibraryVersionMajor",
              "coverage": 0
            },
            {
              "name": "FIRMessagingCurrentLibraryVersionMinor",
              "coverage": 0
            },
            {
              "name": "FIRMessagingCurrentLibraryVersionPatch",
              "coverage": 0
            },
            {
              "name": "FIRMessagingCurrentLibraryVersionIsBeta",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingSyncMessageManager.m",
          "coverage": 0.77,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingSyncMessageManager init]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingSyncMessageManager initWithRmqManager:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSyncMessageManager removeExpiredSyncMessages]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIRMessagingSyncMessageManager didReceiveAPNSSyncMessage:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSyncMessageManager didReceiveMCSSyncMessage:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingSyncMessageManager didReceiveSyncMessage:viaAPNS:viaMCS:]",
              "coverage": 0.71875
            },
            {
              "name": "+[FIRMessagingSyncMessageManager expirationTimeForSyncMessage:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDVersionUtilities.m",
          "coverage": 0.775,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDParseCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDParseCurrentLibraryVersion_block_invoke",
              "coverage": 0.9285714285714286
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionMajor",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionMinor",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionPatch",
              "coverage": 0
            },
            {
              "name": "FIRInstanceIDCurrentLibraryVersionIsBeta",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDURLQueryItem.m",
          "coverage": 0.78125,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDURLQueryItem queryItemWithName:value:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDURLQueryItem initWithName:value:]",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDQueryFromQueryItems",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRInstanceIDBackupExcludedPlist.m",
          "coverage": 0.7816901408450704,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist initWithFileName:subDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist writeDictionary:error:]",
              "coverage": 0.696969696969697
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist deleteFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist contentAsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist moveToApplicationSupportSubDirectory:]",
              "coverage": 0.5428571428571428
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist doesFileExist]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist plistDirectory]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist plistPathInDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist pathWithName:inDirectory:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist doesFileExistInDirectory:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDBackupExcludedPlist supportedDirectory]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinStore.m",
          "coverage": 0.7874396135265701,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinStore initWithCheckinPlistFileName:subDirectoryName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore initWithCheckinPlist:keychain:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore hasCheckinPlist]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore bundleIdentifierForKeychainAccount]",
              "coverage": 1
            },
            {
              "name": "__63-[FIRInstanceIDCheckinStore bundleIdentifierForKeychainAccount]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore saveCheckinPreferences:handler:]",
              "coverage": 0.5573770491803278
            },
            {
              "name": "__60-[FIRInstanceIDCheckinStore saveCheckinPreferences:handler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinStore removeCheckinPreferencesWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceIDCheckinStore removeCheckinPreferencesWithHandler:]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRInstanceIDCheckinStore cachedCheckinPreferences]",
              "coverage": 0.7073170731707317
            },
            {
              "name": "-[FIRInstanceIDCheckinStore migrateCheckinItemIfNeeded]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingExtensionHelper.m",
          "coverage": 0.8053097345132744,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingExtensionHelper populateNotificationContent:withContentHandler:]",
              "coverage": 0.8636363636363636
            },
            {
              "name": "__78-[FIRMessagingExtensionHelper populateNotificationContent:withContentHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingExtensionHelper loadAttachmentForURL:completionHandler:]",
              "coverage": 1
            },
            {
              "name": "__70-[FIRMessagingExtensionHelper loadAttachmentForURL:completionHandler:]_block_invoke",
              "coverage": 0.4864864864864865
            },
            {
              "name": "-[FIRMessagingExtensionHelper deliverNotification]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRMessagingDataMessageManager.m",
          "coverage": 0.8086124401913876,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingDataMessageManager initWithDelegate:client:rmq2Manager:syncMessageManager:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager setDeviceAuthID:secretToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager refreshDelayedMessages]",
              "coverage": 1
            },
            {
              "name": "__56-[FIRMessagingDataMessageManager refreshDelayedMessages]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager processPacket:]",
              "coverage": 0.6428571428571429
            },
            {
              "name": "-[FIRMessagingDataMessageManager handleMCSDataMessage:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingDataMessageManager parseDataMessage:]",
              "coverage": 0.746268656716418
            },
            {
              "name": "-[FIRMessagingDataMessageManager didReceiveParsedMessage:]",
              "coverage": 0.5909090909090909
            },
            {
              "name": "-[FIRMessagingDataMessageManager filterInternalFIRMessagingKeysFromMessage:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager sendDataMessageStanza:]",
              "coverage": 0.91
            },
            {
              "name": "-[FIRMessagingDataMessageManager sendDelayedMessages:]",
              "coverage": 0.375
            },
            {
              "name": "-[FIRMessagingDataMessageManager didSendDataMessageStanza:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingDataMessageManager addParamWithKey:value:toStanza:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[FIRMessagingDataMessageManager addData:toStanza:]",
              "coverage": 0.5
            },
            {
              "name": "-[FIRMessagingDataMessageManager willSendDataMessageSuccess:withMessageId:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager willSendDataMessageFail:withMessageId:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager resendMessagesWithConnection:]",
              "coverage": 1
            },
            {
              "name": "__63-[FIRMessagingDataMessageManager resendMessagesWithConnection:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager handleExpirationForDataMessage:]",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRMessagingDataMessageManager delayForMessage:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[FIRMessagingDataMessageManager delayMessage:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingDataMessageManager tryToSendDataMessageStanza:]",
              "coverage": 0.625
            },
            {
              "name": "-[FIRMessagingDataMessageManager categoryForUpstreamMessages]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenOperation.m",
          "coverage": 0.8323353293413174,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDTokenOperation sharedURLSession]",
              "coverage": 0
            },
            {
              "name": "__47+[FIRInstanceIDTokenOperation sharedURLSession]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenOperation initWithAction:forAuthorizedEntity:scope:options:checkinPreferences:keyPair:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation addCompletionHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isAsynchronous]",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isExecuting]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation setExecuting:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation isFinished]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation setFinished:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation start]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRInstanceIDTokenOperation finishWithResult:token:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation cancel]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation performTokenOperation]",
              "coverage": 0
            },
            {
              "name": "+[FIRInstanceIDTokenOperation requestWithAuthHeader:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenOperation standardQueryItemsWithDeviceID:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenOperation queryItemsWithKeyPair:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenOperation HTTPAuthHeaderFromCheckin:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPairStore.m",
          "coverage": 0.8351449275362319,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDKeyDataWithTag",
              "coverage": 0.8333333333333334
            },
            {
              "name": "FIRInstanceIDCachedKeyRefWithTag",
              "coverage": 0.7777777777777778
            },
            {
              "name": "FIRInstanceIDHasMigratedKeyPair",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDLegacyPublicTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDLegacyPrivateTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDPublicTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDPublicTagWithSubtype_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDPrivateTagWithSubtype",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDPrivateTagWithSubtype_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCreationTimeKeyWithSubtype",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore invalidateKeyPairsIfNeeded]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore hasCachedKeyPairs]",
              "coverage": 0.29411764705882354
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore appIdentityWithError:]",
              "coverage": 0.6
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore loadKeyPairWithError:]",
              "coverage": 0.78125
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore generateAndSaveKeyWithSubtype:creationTime:error:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore validCachedKeyPairWithSubtype:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore cachedKeyPairWithSubtype:error:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore keyPairForPrivateKeyTag:publicKeyTag:error:]",
              "coverage": 0.8387096774193549
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]",
              "coverage": 0.8771929824561403
            },
            {
              "name": "__68-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]_block_invoke",
              "coverage": 0.8636363636363636
            },
            {
              "name": "__68-[FIRInstanceIDKeyPairStore migrateKeyPairCacheIfNeededWithHandler:]_block_invoke_2",
              "coverage": 0.6428571428571429
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]_block_invoke",
              "coverage": 0.7619047619047619
            },
            {
              "name": "__58-[FIRInstanceIDKeyPairStore updateKeyRef:withTag:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore deleteSavedKeyPairWithSubtype:handler:]",
              "coverage": 0.9375
            },
            {
              "name": "__67-[FIRInstanceIDKeyPairStore deleteSavedKeyPairWithSubtype:handler:]_block_invoke",
              "coverage": 0.76
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]",
              "coverage": 1
            },
            {
              "name": "__75+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]_block_invoke",
              "coverage": 0.7619047619047619
            },
            {
              "name": "__75+[FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:publicTag:handler:]_block_invoke_2",
              "coverage": 0.5454545454545454
            },
            {
              "name": "-[FIRInstanceIDKeyPairStore removeKeyPairCreationTimePlistWithError:]",
              "coverage": 0.5
            },
            {
              "name": "+[FIRInstanceIDKeyPairStore keyStoreFileName]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDUtilities.m",
          "coverage": 0.8547008547008547,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDRegisterServer",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentTimestampInSeconds",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentTimestampInMilliseconds",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentAppVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAppIdentifier",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDFirebaseAppID",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDDeviceModel",
              "coverage": 1
            },
            {
              "name": "__FIRInstanceIDDeviceModel_block_invoke",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDOperatingSystemVersion",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDHasLocaleChanged",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDIsValidGCMScope",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDStringForAPNSDeviceToken",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAPNSTupleStringForTokenAndServerType",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDCurrentGCMVersion",
              "coverage": 0.6
            },
            {
              "name": "FIRInstanceIDCurrentLocale",
              "coverage": 0.4583333333333333
            }
          ]
        },
        {
          "name": "FIRInstanceIDStore.m",
          "coverage": 0.8579234972677595,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDStore initWithDelegate:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore initWithCheckinStore:tokenStore:delegate:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore hasSubDirectory:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "+[FIRInstanceIDStore supportedDirectory]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore pathForSupportSubDirectory:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDStore createSubDirectory:]",
              "coverage": 0.6
            },
            {
              "name": "+[FIRInstanceIDStore removeSubDirectory:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore resetCredentialsIfNeeded]",
              "coverage": 1
            },
            {
              "name": "__46-[FIRInstanceIDStore resetCredentialsIfNeeded]_block_invoke",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRInstanceIDStore tokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRInstanceIDStore cachedTokenInfos]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore saveTokenInfo:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore removeCachedTokenWithAuthorizedEntity:scope:]",
              "coverage": 0.4444444444444444
            },
            {
              "name": "-[FIRInstanceIDStore removeAllCachedTokensWithHandler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore saveCheckinPreferences:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore cachedCheckinPreferences]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDStore removeCheckinPreferencesWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__58-[FIRInstanceIDStore removeCheckinPreferencesWithHandler:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingLogger.m",
          "coverage": 0.8679245283018868,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRMessagingLogger standardLogger]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingLogger formatMessageCode:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingLogger logFuncDebug:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingLogger logFuncInfo:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingLogger logFuncNotice:messageCode:msg:]",
              "coverage": 0
            },
            {
              "name": "-[FIRMessagingLogger logFuncWarning:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingLogger logFuncError:messageCode:msg:]",
              "coverage": 1
            },
            {
              "name": "FIRMessagingSharedLogger",
              "coverage": 1
            },
            {
              "name": "__FIRMessagingSharedLogger_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingAnalytics.m",
          "coverage": 0.8758169934640523,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRMessagingAnalytics canLogNotification:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingAnalytics logOpenNotification:toAnalytics:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingAnalytics logForegroundNotification:toAnalytics:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingAnalytics logEvent:withNotification:toAnalytics:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "+[FIRMessagingAnalytics paramsForEvent:withNotification:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingAnalytics logUserPropertyForConversionTracking:toAnalytics:]",
              "coverage": 0.8666666666666667
            },
            {
              "name": "+[FIRMessagingAnalytics logMessage:toAnalytics:]",
              "coverage": 0.6071428571428571
            },
            {
              "name": "+[FIRMessagingAnalytics currentUIApplication]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenInfo.m",
          "coverage": 0.889763779527559,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDTokenInfo initWithAuthorizedEntity:scope:token:appVersion:firebaseAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenInfo isFresh]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenInfo initWithCoder:]",
              "coverage": 0.78125
            },
            {
              "name": "-[FIRInstanceIDTokenInfo encodeWithCoder:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinPreferences.m",
          "coverage": 0.8913043478260869,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinPreferences checkinPlistContents]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences hasCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences hasValidCheckinInfo]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences setHasPreCachedAuthCredentials:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinService.m",
          "coverage": 0.896414342629482,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDCheckinService init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService checkinWithExistingCheckin:completion:]",
              "coverage": 0.9649122807017544
            },
            {
              "name": "__69-[FIRInstanceIDCheckinService checkinWithExistingCheckin:completion:]_block_invoke",
              "coverage": 0.7105263157894737
            },
            {
              "name": "-[FIRInstanceIDCheckinService stopFetching]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinService checkinParametersWithExistingCheckin:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinService setCheckinTestBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDAPNSInfo.m",
          "coverage": 0.9090909090909091,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithDeviceToken:isSandbox:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithTokenOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo initWithCoder:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo encodeWithCoder:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAPNSInfo isEqualToAPNSInfo:]",
              "coverage": 0.7142857142857143
            }
          ]
        },
        {
          "name": "FIRInstanceIDAuthService.m",
          "coverage": 0.9166666666666666,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAuthService initWithCheckinService:store:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService initWithStore:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService scheduleCheckin:]",
              "coverage": 0.7
            },
            {
              "name": "-[FIRInstanceIDAuthService startCheckinTimerWithDuration:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService clearScheduledCheckinTimer]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService onScheduledCheckinTimerFired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService performScheduledCheckin]",
              "coverage": 1
            },
            {
              "name": "__51-[FIRInstanceIDAuthService performScheduledCheckin]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__51-[FIRInstanceIDAuthService performScheduledCheckin]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService calculateNextCheckinRetryIntervalInSeconds]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[FIRInstanceIDAuthService hasValidCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__56-[FIRInstanceIDAuthService fetchCheckinInfoWithHandler:]_block_invoke_3",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService checkinPreferences]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService stopCheckinRequest]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService resetCheckinWithHandler:]",
              "coverage": 0
            },
            {
              "name": "__52-[FIRInstanceIDAuthService resetCheckinWithHandler:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRInstanceIDAuthService notifyCheckinHandlersWithCheckin:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthService cachedCheckinMatchesCheckin:]",
              "coverage": 0.5714285714285714
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeychain.m",
          "coverage": 0.9227053140096618,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDKeychain sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__39+[FIRInstanceIDKeychain sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain init]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain itemWithQuery:]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRInstanceIDKeychain itemWithQuery:]_block_invoke",
              "coverage": 0.8571428571428571
            },
            {
              "name": "-[FIRInstanceIDKeychain removeItemWithQuery:handler:]",
              "coverage": 1
            },
            {
              "name": "__53-[FIRInstanceIDKeychain removeItemWithQuery:handler:]_block_invoke",
              "coverage": 0.8260869565217391
            },
            {
              "name": "__53-[FIRInstanceIDKeychain removeItemWithQuery:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain addItemWithQuery:handler:]",
              "coverage": 1
            },
            {
              "name": "__50-[FIRInstanceIDKeychain addItemWithQuery:handler:]_block_invoke",
              "coverage": 0.6470588235294118
            },
            {
              "name": "__50-[FIRInstanceIDKeychain addItemWithQuery:handler:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeychain generateKeyPairWithPrivateTag:publicTag:]",
              "coverage": 1
            },
            {
              "name": "__65-[FIRInstanceIDKeychain generateKeyPairWithPrivateTag:publicTag:]_block_invoke",
              "coverage": 0.6666666666666666
            }
          ]
        },
        {
          "name": "FIRInstanceIDAuthKeyChain.m",
          "coverage": 0.9405405405405406,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDAuthKeychain initWithIdentifier:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDAuthKeychain keychainQueryForService:account:generic:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain keychainQueryForService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain itemsMatchingService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain dataForService:account:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain removeItemsMatchingService:account:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDAuthKeychain setData:forService:accessibility:account:handler:]",
              "coverage": 0.9183673469387755
            },
            {
              "name": "__78-[FIRInstanceIDAuthKeychain setData:forService:accessibility:account:handler:]_block_invoke",
              "coverage": 0.72
            }
          ]
        },
        {
          "name": "FIRMessagingRmqManager.m",
          "coverage": 0.9473684210526315,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingRmqManager initWithDatabaseName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager loadRmqId]",
              "coverage": 0.5
            },
            {
              "name": "-[FIRMessagingRmqManager loadInitialOutgoingPersistentId]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager saveRmqMessage:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager saveMessage:withRmqId:tag:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager saveLastOutgoingRmqId:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager saveS2dMessageWithRmqId:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager queryHighestRmqId]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager querylastRmqId]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager unackedS2dRmqIds]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager scanWithRmqMessageHandler:dataMessageHandler:]",
              "coverage": 1
            },
            {
              "name": "__71-[FIRMessagingRmqManager scanWithRmqMessageHandler:dataMessageHandler:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager ackReceivedForRmqId:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager removeRmqMessagesWithRmqId:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager removeRmqMessagesWithRmqIds:]",
              "coverage": 0.9
            },
            {
              "name": "-[FIRMessagingRmqManager removeS2dIds:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager querySyncMessageWithRmqID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager deleteSyncMessageWithRmqID:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager deleteExpiredOrFinishedSyncMessages:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager saveSyncMessageWithRmqID:expirationTime:apnsReceived:mcsReceived:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager updateSyncMessageViaAPNSWithRmqID:error:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager updateSyncMessageViaMCSWithRmqID:error:]",
              "coverage": 1
            },
            {
              "name": "+[FIRMessagingRmqManager removeDatabaseWithName:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRmqManager nextRmqId]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDCheckinPreferences+Internal.m",
          "coverage": 0.9692307692307692,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) preferencesFromKeychainContents:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) initWithDeviceID:secretToken:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) reset]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) updateWithCheckinPlistContents:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDCheckinPreferences(Internal) checkinKeychainContent]",
              "coverage": 0.75
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinDeviceIDFromKeychainContent:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinSecretFromKeychainContent:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDCheckinPreferences(Internal) checkinKeychainContent:forIndex:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDTokenStore.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRInstanceIDTokenStore defaultStore]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore initWithKeychain:]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenStore serviceKeyForAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore tokenInfoWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore cachedTokenInfos]",
              "coverage": 1
            },
            {
              "name": "+[FIRInstanceIDTokenStore tokenInfoFromKeychainItem:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore saveTokenInfo:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore removeTokenWithAuthorizedEntity:scope:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDTokenStore removeAllTokensWithHandler:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPairUtilities.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "FIRInstanceIDWebSafeBase64",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDSHA1",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDKeyPairQuery",
              "coverage": 1
            },
            {
              "name": "FIRInstanceIDAppIdentity",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRInstanceIDKeyPair.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRInstanceIDKeyPair initWithPrivateKey:publicKey:publicKeyData:privateKeyData:]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair isValid]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair publicKey]",
              "coverage": 1
            },
            {
              "name": "-[FIRInstanceIDKeyPair privateKey]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRMessagingRegistrar.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRMessagingRegistrar deviceAuthID]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRegistrar secretToken]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRegistrar init]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRegistrar tryToLoadValidCheckinInfo]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRegistrar updateSubscriptionToTopic:withToken:options:shouldDelete:handler:]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRegistrar cancelAllRequests]",
              "coverage": 1
            },
            {
              "name": "-[FIRMessagingRegistrar doUpdateSubscriptionForTopic:token:options:shouldDelete:completion:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "OCMock.framework",
      "coverage": 0.6530303030303031,
      "files": [
        {
          "name": "OCMExceptionReturnValueProvider.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMExceptionReturnValueProvider handleInvocation:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMRealObjectForwarder.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMRealObjectForwarder handleInvocation:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMNotificationPoster.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMNotificationPoster initWithNotification:]",
              "coverage": 0
            },
            {
              "name": "-[OCMNotificationPoster dealloc]",
              "coverage": 0
            },
            {
              "name": "-[OCMNotificationPoster handleInvocation:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMArgAction.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMArgAction handleArgument:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "NSInvocation+OCMAdditions.m",
          "coverage": 0.35990888382687924,
          "type": "objc",
          "functions": [
            {
              "name": "+[NSInvocation(OCMAdditions) invocationForBlock:withArguments:]",
              "coverage": 0.9411764705882353
            },
            {
              "name": "-[NSInvocation(OCMAdditions) retainObjectArgumentsExcludingObject:]",
              "coverage": 0.7794117647058824
            },
            {
              "name": "-[NSInvocation(OCMAdditions) setArgumentWithObject:atIndex:]",
              "coverage": 0.3090909090909091
            },
            {
              "name": "-[NSInvocation(OCMAdditions) getArgumentAtIndexAsObject:]",
              "coverage": 0.5669291338582677
            },
            {
              "name": "-[NSInvocation(OCMAdditions) invocationDescription]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) argumentDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) objectDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) boolDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) charDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) unsignedCharDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) intDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) unsignedIntDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) shortDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) unsignedShortDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) longDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) unsignedLongDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) longLongDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) unsignedLongLongDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) doubleDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) floatDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) longDoubleDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) structDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) pointerDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) cStringDescriptionAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[NSInvocation(OCMAdditions) selectorDescriptionAtIndex:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMFunctions.m",
          "coverage": 0.43243243243243246,
          "type": "objc",
          "functions": [
            {
              "name": "OCMTypeWithoutQualifiers",
              "coverage": 1
            },
            {
              "name": "OCMIsUnqualifiedClassType",
              "coverage": 1
            },
            {
              "name": "OCMIsUnqualifiedBlockType",
              "coverage": 0.9090909090909091
            },
            {
              "name": "OCMIsBlockType",
              "coverage": 1
            },
            {
              "name": "OCMIsObjectType",
              "coverage": 0.9523809523809523
            },
            {
              "name": "OCMNumberTypeForObjCType",
              "coverage": 1
            },
            {
              "name": "ParseStructType",
              "coverage": 0
            },
            {
              "name": "OCMEqualTypesAllowingOpaqueStructsInternal",
              "coverage": 0.18556701030927836
            },
            {
              "name": "OCMEqualTypesAllowingOpaqueStructs",
              "coverage": 0.7272727272727273
            },
            {
              "name": "OCMCreateSubclass",
              "coverage": 1
            },
            {
              "name": "OCMIsAliasSelector",
              "coverage": 1
            },
            {
              "name": "OCMAliasForOriginalSelector",
              "coverage": 1
            },
            {
              "name": "OCMOriginalSelectorForAlias",
              "coverage": 0.8333333333333334
            },
            {
              "name": "OCMSetAssociatedMockForClass",
              "coverage": 0.8
            },
            {
              "name": "OCMGetAssociatedMockForClass",
              "coverage": 1
            },
            {
              "name": "OCMSetAssociatedMockForObject",
              "coverage": 0.8
            },
            {
              "name": "OCMGetAssociatedMockForObject",
              "coverage": 1
            },
            {
              "name": "OCMReportFailure",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMConstraint.m",
          "coverage": 0.4426229508196721,
          "type": "objc",
          "functions": [
            {
              "name": "+[OCMConstraint constraint]",
              "coverage": 1
            },
            {
              "name": "-[OCMConstraint evaluate:]",
              "coverage": 0
            },
            {
              "name": "-[OCMConstraint copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "+[OCMConstraint constraintWithSelector:onObject:]",
              "coverage": 0
            },
            {
              "name": "+[OCMConstraint constraintWithSelector:onObject:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[OCMAnyConstraint evaluate:]",
              "coverage": 1
            },
            {
              "name": "-[OCMIsNilConstraint evaluate:]",
              "coverage": 1
            },
            {
              "name": "-[OCMIsNotNilConstraint evaluate:]",
              "coverage": 0
            },
            {
              "name": "-[OCMIsNotEqualConstraint evaluate:]",
              "coverage": 0
            },
            {
              "name": "-[OCMInvocationConstraint evaluate:]",
              "coverage": 0
            },
            {
              "name": "-[OCMBlockConstraint initWithConstraintBlock:]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockConstraint dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockConstraint evaluate:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMStubRecorder.m",
          "coverage": 0.5702479338842975,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMStubRecorder init]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder stub]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder andReturn:]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder andReturnValue:]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder andThrow:]",
              "coverage": 0
            },
            {
              "name": "-[OCMStubRecorder andPost:]",
              "coverage": 0
            },
            {
              "name": "-[OCMStubRecorder andCall:onObject:]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder andDo:]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder andForwardToRealObject]",
              "coverage": 0
            },
            {
              "name": "-[OCMStubRecorder forwardInvocation:]",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder(Properties) _andReturn]",
              "coverage": 1
            },
            {
              "name": "__41-[OCMStubRecorder(Properties) _andReturn]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder(Properties) _andThrow]",
              "coverage": 0
            },
            {
              "name": "__40-[OCMStubRecorder(Properties) _andThrow]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[OCMStubRecorder(Properties) _andPost]",
              "coverage": 0
            },
            {
              "name": "__39-[OCMStubRecorder(Properties) _andPost]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[OCMStubRecorder(Properties) _andCall]",
              "coverage": 0
            },
            {
              "name": "__39-[OCMStubRecorder(Properties) _andCall]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[OCMStubRecorder(Properties) _andDo]",
              "coverage": 1
            },
            {
              "name": "__37-[OCMStubRecorder(Properties) _andDo]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[OCMStubRecorder(Properties) _andForwardToRealObject]",
              "coverage": 0
            },
            {
              "name": "__54-[OCMStubRecorder(Properties) _andForwardToRealObject]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "NSMethodSignature+OCMAdditions.m",
          "coverage": 0.5746268656716418,
          "type": "objc",
          "functions": [
            {
              "name": "+[NSMethodSignature(OCMAdditions) signatureForDynamicPropertyAccessedWithSelector:inClass:]",
              "coverage": 0.16666666666666666
            },
            {
              "name": "+[NSMethodSignature(OCMAdditions) propertyMatchingSelector:inClass:isGetter:]",
              "coverage": 0.58
            },
            {
              "name": "+[NSMethodSignature(OCMAdditions) signatureForBlock:]",
              "coverage": 0.9565217391304348
            },
            {
              "name": "-[NSMethodSignature(OCMAdditions) usesSpecialStructureReturn]",
              "coverage": 1
            },
            {
              "name": "-[NSMethodSignature(OCMAdditions) fullTypeString]",
              "coverage": 0
            },
            {
              "name": "-[NSMethodSignature(OCMAdditions) fullObjCTypes]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMArg.m",
          "coverage": 0.5955056179775281,
          "type": "objc",
          "functions": [
            {
              "name": "+[OCMArg any]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg anyPointer]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg anyObjectRef]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg anySelector]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg isNil]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg isNotNil]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg isEqual:]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg isNotEqual:]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg isKindOfClass:]",
              "coverage": 0
            },
            {
              "name": "__24+[OCMArg isKindOfClass:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[OCMArg checkWithSelector:onObject:]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg checkWithBlock:]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg setTo:]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg setToValue:]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg invokeBlock]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg invokeBlockWithArgs:]",
              "coverage": 1
            },
            {
              "name": "+[OCMArg defaultValue]",
              "coverage": 0
            },
            {
              "name": "+[OCMArg resolveSpecialValues:]",
              "coverage": 0.7368421052631579
            }
          ]
        },
        {
          "name": "OCProtocolMockObject.m",
          "coverage": 0.6153846153846154,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCProtocolMockObject initWithProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[OCProtocolMockObject description]",
              "coverage": 0
            },
            {
              "name": "-[OCProtocolMockObject methodSignatureForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCProtocolMockObject conformsToProtocol:]",
              "coverage": 0
            },
            {
              "name": "-[OCProtocolMockObject respondsToSelector:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMLocation.m",
          "coverage": 0.6896551724137931,
          "type": "objc",
          "functions": [
            {
              "name": "+[OCMLocation locationWithTestCase:file:line:]",
              "coverage": 1
            },
            {
              "name": "-[OCMLocation initWithTestCase:file:line:]",
              "coverage": 1
            },
            {
              "name": "-[OCMLocation dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMLocation testCase]",
              "coverage": 0
            },
            {
              "name": "-[OCMLocation file]",
              "coverage": 0
            },
            {
              "name": "-[OCMLocation line]",
              "coverage": 0
            },
            {
              "name": "OCMMakeLocation",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCObserverMockObject.m",
          "coverage": 0.7108433734939759,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCObserverMockObject init]",
              "coverage": 1
            },
            {
              "name": "-[OCObserverMockObject retain]",
              "coverage": 1
            },
            {
              "name": "-[OCObserverMockObject dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCObserverMockObject description]",
              "coverage": 0
            },
            {
              "name": "-[OCObserverMockObject setExpectationOrderMatters:]",
              "coverage": 1
            },
            {
              "name": "-[OCObserverMockObject autoRemoveFromCenter:]",
              "coverage": 1
            },
            {
              "name": "-[OCObserverMockObject expect]",
              "coverage": 1
            },
            {
              "name": "-[OCObserverMockObject verify]",
              "coverage": 0
            },
            {
              "name": "-[OCObserverMockObject verifyAtLocation:]",
              "coverage": 0.4117647058823529
            },
            {
              "name": "-[OCObserverMockObject notificationWithName:object:]",
              "coverage": 0
            },
            {
              "name": "-[OCObserverMockObject notificationWithName:object:userInfo:]",
              "coverage": 0
            },
            {
              "name": "-[OCObserverMockObject handleNotification:]",
              "coverage": 0.8888888888888888
            }
          ]
        },
        {
          "name": "OCMockObject.m",
          "coverage": 0.7164179104477612,
          "type": "objc",
          "functions": [
            {
              "name": "+[OCMockObject initialize]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject mockForClass:]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject mockForProtocol:]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject partialMockForObject:]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject niceMockForClass:]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject niceMockForProtocol:]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject _makeNice:]",
              "coverage": 1
            },
            {
              "name": "+[OCMockObject observerMock]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject init]",
              "coverage": 0.782608695652174
            },
            {
              "name": "-[OCMockObject dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject description]",
              "coverage": 0
            },
            {
              "name": "-[OCMockObject addStub:]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject addExpectation:]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject setExpectationOrderMatters:]",
              "coverage": 0
            },
            {
              "name": "-[OCMockObject stopMocking]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject stub]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject expect]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject reject]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject verify]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject verifyAtLocation:]",
              "coverage": 0.5897435897435898
            },
            {
              "name": "-[OCMockObject verifyWithDelay:]",
              "coverage": 0
            },
            {
              "name": "-[OCMockObject verifyWithDelay:atLocation:]",
              "coverage": 0.9583333333333334
            },
            {
              "name": "-[OCMockObject verifyInvocation:]",
              "coverage": 0
            },
            {
              "name": "-[OCMockObject verifyInvocation:atLocation:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[OCMockObject forwardingTargetForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject handleSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject forwardInvocation:]",
              "coverage": 0.8695652173913043
            },
            {
              "name": "-[OCMockObject handleInvocation:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[OCMockObject _nextExpectedInvocation]",
              "coverage": 1
            },
            {
              "name": "-[OCMockObject handleUnRecordedInvocation:]",
              "coverage": 0.5714285714285714
            },
            {
              "name": "-[OCMockObject doesNotRecognizeSelector:]",
              "coverage": 0
            },
            {
              "name": "-[OCMockObject _stubDescriptions:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMReturnValueProvider.m",
          "coverage": 0.72,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMReturnValueProvider initWithValue:]",
              "coverage": 1
            },
            {
              "name": "-[OCMReturnValueProvider dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMReturnValueProvider handleInvocation:]",
              "coverage": 0.46153846153846156
            }
          ]
        },
        {
          "name": "OCClassMockObject.m",
          "coverage": 0.7669902912621359,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCClassMockObject initWithClass:]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject description]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject mockedClass]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject stopMocking]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject stopMockingClassMethods]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject addStub:]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject prepareClassForClassMethodMocking]",
              "coverage": 0.9649122807017544
            },
            {
              "name": "__54-[OCClassMockObject prepareClassForClassMethodMocking]_block_invoke",
              "coverage": 0.9473684210526315
            },
            {
              "name": "-[OCClassMockObject setupForwarderForClassMethodSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject forwardInvocationForClassObject:]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "-[OCClassMockObject initializeForClassObject]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject methodSignatureForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject mockObjectClass]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject class]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject respondsToSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject isKindOfClass:]",
              "coverage": 1
            },
            {
              "name": "-[OCClassMockObject conformsToProtocol:]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSValue__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSTimeZone__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSSet__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSOrderedSet__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSNumber__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSDate__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSString__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSDictionary__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSData__]",
              "coverage": 0
            },
            {
              "name": "-[OCClassMockObject(NSIsKindsImplementation) isNSArray__]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMObserverRecorder.m",
          "coverage": 0.7692307692307693,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMObserverRecorder dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMObserverRecorder notificationWithName:object:]",
              "coverage": 0
            },
            {
              "name": "-[OCMObserverRecorder notificationWithName:object:userInfo:]",
              "coverage": 1
            },
            {
              "name": "-[OCMObserverRecorder matchesNotification:]",
              "coverage": 1
            },
            {
              "name": "-[OCMObserverRecorder argument:matchesArgument:]",
              "coverage": 0.7727272727272727
            }
          ]
        },
        {
          "name": "OCMInvocationExpectation.m",
          "coverage": 0.8,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMInvocationExpectation setMatchAndReject:]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationExpectation isMatchAndReject]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationExpectation isSatisfied]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationExpectation handleInvocation:]",
              "coverage": 0.6428571428571429
            }
          ]
        },
        {
          "name": "OCMIndirectReturnValueProvider.m",
          "coverage": 0.8333333333333334,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMIndirectReturnValueProvider initWithProvider:andSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCMIndirectReturnValueProvider dealloc]",
              "coverage": 0
            },
            {
              "name": "-[OCMIndirectReturnValueProvider handleInvocation:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMRecorder.m",
          "coverage": 0.8363636363636363,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMRecorder init]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder initWithMockObject:]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder setMockObject:]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder description]",
              "coverage": 0
            },
            {
              "name": "-[OCMRecorder invocationMatcher]",
              "coverage": 0
            },
            {
              "name": "-[OCMRecorder classMethod]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder ignoringNonObjectArgs]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder methodSignatureForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder forwardInvocation:]",
              "coverage": 1
            },
            {
              "name": "-[OCMRecorder doesNotRecognizeSelector:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "OCMBoxedReturnValueProvider.m",
          "coverage": 0.84375,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMBoxedReturnValueProvider handleInvocation:]",
              "coverage": 0.7619047619047619
            },
            {
              "name": "-[OCMBoxedReturnValueProvider isMethodReturnType:compatibleWithValueType:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMInvocationMatcher.m",
          "coverage": 0.9148936170212766,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMInvocationMatcher dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher setInvocation:]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher setRecordedAsClassMethod:]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher recordedAsClassMethod]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher setIgnoreNonObjectArgs:]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher description]",
              "coverage": 0
            },
            {
              "name": "-[OCMInvocationMatcher recordedInvocation]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher matchesSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationMatcher matchesInvocation:]",
              "coverage": 0.9122807017543859
            }
          ]
        },
        {
          "name": "OCMInvocationStub.m",
          "coverage": 0.918918918918919,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMInvocationStub init]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationStub dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationStub addInvocationAction:]",
              "coverage": 1
            },
            {
              "name": "-[OCMInvocationStub invocationActions]",
              "coverage": 0
            },
            {
              "name": "-[OCMInvocationStub handleInvocation:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMPassByRefSetter.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMPassByRefSetter initWithValue:]",
              "coverage": 1
            },
            {
              "name": "-[OCMPassByRefSetter dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMPassByRefSetter handleArgument:]",
              "coverage": 0.9
            }
          ]
        },
        {
          "name": "OCPartialMockObject.m",
          "coverage": 0.9560439560439561,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCPartialMockObject initWithObject:]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject description]",
              "coverage": 0
            },
            {
              "name": "-[OCPartialMockObject realObject]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject assertClassIsSupported:]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[OCPartialMockObject classToSubclassForObject:]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject stopMocking]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject addStub:]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject handleUnRecordedInvocation:]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject prepareObjectForInstanceMethodMocking]",
              "coverage": 1
            },
            {
              "name": "__60-[OCPartialMockObject prepareObjectForInstanceMethodMocking]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject setupForwarderForSelector:]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject classForRealObject]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject forwardingTargetForSelectorForRealObject:]",
              "coverage": 1
            },
            {
              "name": "-[OCPartialMockObject ocmock_replaced_forwardingTargetForSelector:]",
              "coverage": 0
            },
            {
              "name": "-[OCPartialMockObject forwardInvocationForRealObject:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSValue+OCMAdditions.m",
          "coverage": 0.9649122807017544,
          "type": "objc",
          "functions": [
            {
              "name": "OCMNumberForValue",
              "coverage": 1
            },
            {
              "name": "-[NSValue(OCMAdditions) getBytes:objCType:]",
              "coverage": 0.9459459459459459
            }
          ]
        },
        {
          "name": "OCMBlockCaller.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMBlockCaller initWithCallBlock:]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockCaller dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockCaller handleInvocation:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMMacroState.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[OCMMacroState beginStubMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState endStubMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState beginExpectMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState endExpectMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState beginRejectMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState endRejectMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState beginVerifyMacroAtLocation:]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState endVerifyMacro]",
              "coverage": 1
            },
            {
              "name": "+[OCMMacroState globalState]",
              "coverage": 1
            },
            {
              "name": "-[OCMMacroState initWithRecorder:]",
              "coverage": 1
            },
            {
              "name": "-[OCMMacroState dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMMacroState recorder]",
              "coverage": 1
            },
            {
              "name": "-[OCMMacroState switchToClassMethod]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSNotificationCenter+OCMAdditions.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[NSNotificationCenter(OCMAdditions) addMockObserver:name:object:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMBlockArgCaller.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMBlockArgCaller initWithBlockArguments:]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockArgCaller dealloc]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockArgCaller copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[OCMBlockArgCaller handleArgument:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "NSObject+OCMAdditions.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[NSObject(OCMAdditions) instanceMethodForwarderForSelector:]",
              "coverage": 1
            },
            {
              "name": "+[NSObject(OCMAdditions) enumerateMethodsInClass:usingBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMVerifier.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMVerifier init]",
              "coverage": 1
            },
            {
              "name": "-[OCMVerifier forwardInvocation:]",
              "coverage": 1
            },
            {
              "name": "-[OCMVerifier dealloc]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "OCMExpectationRecorder.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[OCMExpectationRecorder init]",
              "coverage": 1
            },
            {
              "name": "-[OCMExpectationRecorder expectation]",
              "coverage": 1
            },
            {
              "name": "-[OCMExpectationRecorder never]",
              "coverage": 1
            },
            {
              "name": "-[OCMExpectationRecorder forwardInvocation:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "Protobuf.framework",
      "coverage": 0.09864249142749777,
      "files": [
        {
          "name": "Any.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBAnyRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBAny descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Wrappers.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBWrappersRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBDoubleValue descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBFloatValue descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt64Value descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt64Value descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt32Value descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt32Value descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBBoolValue descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBStringValue descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBBytesValue descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Type.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBTypeRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "GPBSyntax_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GPBSyntax_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GPBType descriptor]",
              "coverage": 0
            },
            {
              "name": "GPBType_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBType_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "+[GPBField descriptor]",
              "coverage": 0
            },
            {
              "name": "GPBField_Kind_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBField_Kind_RawValue",
              "coverage": 0
            },
            {
              "name": "GPBField_Cardinality_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBField_Cardinality_RawValue",
              "coverage": 0
            },
            {
              "name": "GPBField_Kind_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GPBField_Kind_IsValidValue",
              "coverage": 0
            },
            {
              "name": "GPBField_Cardinality_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GPBField_Cardinality_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GPBEnum descriptor]",
              "coverage": 0
            },
            {
              "name": "GPBEnum_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBEnum_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumValue descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBOption descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Timestamp.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBTimestampRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBTimestamp descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Struct.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBStructRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "GPBNullValue_EnumDescriptor",
              "coverage": 0
            },
            {
              "name": "GPBNullValue_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GPBStruct descriptor]",
              "coverage": 0
            },
            {
              "name": "+[GPBValue descriptor]",
              "coverage": 0
            },
            {
              "name": "GPBValue_NullValue_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBValue_NullValue_RawValue",
              "coverage": 0
            },
            {
              "name": "GPBValue_ClearKindOneOfCase",
              "coverage": 0
            },
            {
              "name": "+[GPBListValue descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBDictionary.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "DictDefault_IsValidValue",
              "coverage": 0
            },
            {
              "name": "ComputeDictInt32FieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictInt32Field",
              "coverage": 0
            },
            {
              "name": "ComputeDictUInt32FieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictUInt32Field",
              "coverage": 0
            },
            {
              "name": "ComputeDictInt64FieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictInt64Field",
              "coverage": 0
            },
            {
              "name": "ComputeDictUInt64FieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictUInt64Field",
              "coverage": 0
            },
            {
              "name": "ComputeDictBoolFieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictBoolField",
              "coverage": 0
            },
            {
              "name": "ComputeDictEnumFieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictEnumField",
              "coverage": 0
            },
            {
              "name": "ComputeDictFloatFieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictFloatField",
              "coverage": 0
            },
            {
              "name": "ComputeDictDoubleFieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictDoubleField",
              "coverage": 0
            },
            {
              "name": "ComputeDictStringFieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictStringField",
              "coverage": 0
            },
            {
              "name": "ComputeDictObjectFieldSize",
              "coverage": 0
            },
            {
              "name": "WriteDictObjectField",
              "coverage": 0
            },
            {
              "name": "GPBDictionaryComputeSizeInternalHelper",
              "coverage": 0
            },
            {
              "name": "GPBDictionaryWriteToStreamInternalHelper",
              "coverage": 0
            },
            {
              "name": "GPBDictionaryIsInitializedInternalHelper",
              "coverage": 0
            },
            {
              "name": "ReadValue",
              "coverage": 0
            },
            {
              "name": "GPBDictionaryReadEntry",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary initWithUInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary enumerateKeysAndUInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt32UInt32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary getUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary setUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary removeUInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary initWithInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary enumerateKeysAndInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBUInt32Int32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary getInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary setInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary removeInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary initWithUInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary enumerateKeysAndUInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt32UInt64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary getUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary setUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary removeUInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32UInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary initWithInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary enumerateKeysAndInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBUInt32Int64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary getInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary setInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary removeInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Int64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary initWithBools:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary enumerateKeysAndBoolsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBUInt32BoolDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary getBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary removeBoolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32BoolDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary initWithFloats:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary enumerateKeysAndFloatsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBUInt32FloatDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary getFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary removeFloatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32FloatDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary initWithDoubles:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary enumerateKeysAndDoublesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt32DoubleDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary getDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary removeDoubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32DoubleDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary initWithValidationFunction:rawValues:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary enumerateKeysAndRawValuesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary serializedDataForUnknownValue:forKey:keyDataType:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBUInt32EnumDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary getEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary getRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary enumerateKeysAndEnumsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary addRawEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary setRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary removeEnumForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32EnumDictionary setEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary initWithObjects:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary isInitialized]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary deepCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt32ObjectDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary objectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary setObject:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32ObjectDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary initWithUInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary enumerateKeysAndUInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt32UInt32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary getUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary setUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary removeUInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary initWithInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary enumerateKeysAndInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBInt32Int32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary getInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary setInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary removeInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary initWithUInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary enumerateKeysAndUInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt32UInt64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary getUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary setUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary removeUInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32UInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary initWithInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary enumerateKeysAndInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBInt32Int64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary getInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary setInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary removeInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Int64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary initWithBools:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary enumerateKeysAndBoolsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__49-[GPBInt32BoolDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary getBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary removeBoolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32BoolDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary initWithFloats:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary enumerateKeysAndFloatsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBInt32FloatDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary getFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary removeFloatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32FloatDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary initWithDoubles:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary enumerateKeysAndDoublesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt32DoubleDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary getDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary removeDoubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32DoubleDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary initWithValidationFunction:rawValues:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary enumerateKeysAndRawValuesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary serializedDataForUnknownValue:forKey:keyDataType:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__49-[GPBInt32EnumDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary getEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary getRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary enumerateKeysAndEnumsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary addRawEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary setRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary removeEnumForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32EnumDictionary setEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary initWithObjects:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary isInitialized]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary deepCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt32ObjectDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary objectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary setObject:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32ObjectDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary initWithUInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary enumerateKeysAndUInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt64UInt32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary getUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary setUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary removeUInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary initWithInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary enumerateKeysAndInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBUInt64Int32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary getInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary setInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary removeInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary initWithUInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary enumerateKeysAndUInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt64UInt64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary getUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary setUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary removeUInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64UInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary initWithInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary enumerateKeysAndInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBUInt64Int64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary getInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary setInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary removeInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Int64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary initWithBools:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary enumerateKeysAndBoolsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBUInt64BoolDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary getBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary removeBoolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64BoolDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary initWithFloats:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary enumerateKeysAndFloatsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBUInt64FloatDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary getFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary removeFloatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64FloatDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary initWithDoubles:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary enumerateKeysAndDoublesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt64DoubleDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary getDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary removeDoubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64DoubleDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary initWithValidationFunction:rawValues:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary enumerateKeysAndRawValuesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary serializedDataForUnknownValue:forKey:keyDataType:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBUInt64EnumDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary getEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary getRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary enumerateKeysAndEnumsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary addRawEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary setRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary removeEnumForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64EnumDictionary setEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary initWithObjects:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary isInitialized]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary deepCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBUInt64ObjectDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary objectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary setObject:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64ObjectDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary initWithUInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary enumerateKeysAndUInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt64UInt32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary getUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary setUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary removeUInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary initWithInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary enumerateKeysAndInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBInt64Int32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary getInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary setInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary removeInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary initWithUInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary enumerateKeysAndUInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt64UInt64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary getUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary setUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary removeUInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64UInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary initWithInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary enumerateKeysAndInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBInt64Int64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary getInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary setInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary removeInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Int64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary initWithBools:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary enumerateKeysAndBoolsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__49-[GPBInt64BoolDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary getBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary removeBoolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64BoolDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary initWithFloats:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary enumerateKeysAndFloatsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBInt64FloatDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary getFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary removeFloatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64FloatDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary initWithDoubles:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary enumerateKeysAndDoublesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt64DoubleDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary getDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary removeDoubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64DoubleDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary initWithValidationFunction:rawValues:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary enumerateKeysAndRawValuesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary serializedDataForUnknownValue:forKey:keyDataType:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__49-[GPBInt64EnumDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary getEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary getRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary enumerateKeysAndEnumsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary addRawEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary setRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary removeEnumForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64EnumDictionary setEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary initWithObjects:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary isInitialized]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary deepCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBInt64ObjectDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary objectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary setObject:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64ObjectDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary initWithUInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary enumerateKeysAndUInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBStringUInt32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary getUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary setUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary removeUInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary initWithInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary enumerateKeysAndInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBStringInt32Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary getInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary setInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary removeInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary initWithUInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary enumerateKeysAndUInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBStringUInt64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary getUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary setUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary removeUInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringUInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary initWithInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary enumerateKeysAndInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBStringInt64Dictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary getInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary setInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary removeInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary initWithBools:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary enumerateKeysAndBoolsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBStringBoolDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary getBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary removeBoolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringBoolDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary initWithFloats:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary enumerateKeysAndFloatsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBStringFloatDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary getFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary removeFloatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringFloatDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary initWithDoubles:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary enumerateKeysAndDoublesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBStringDoubleDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary getDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary removeDoubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringDoubleDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary initWithValidationFunction:rawValues:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary enumerateKeysAndRawValuesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary serializedDataForUnknownValue:forKey:keyDataType:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBStringEnumDictionary enumerateForTextFormat:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary getEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary getRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary enumerateKeysAndEnumsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary addRawEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary setRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary removeEnumForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBStringEnumDictionary setEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary initWithUInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary getUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary enumerateKeysAndUInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary setUInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary removeUInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary initWithInt32s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary getInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary enumerateKeysAndInt32sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary setInt32:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary removeInt32ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt32Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary initWithUInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary getUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary enumerateKeysAndUInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary setUInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary removeUInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolUInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary initWithInt64s:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary getInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary enumerateKeysAndInt64sUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary setInt64:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary removeInt64ForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolInt64Dictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary initWithBools:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary getBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary enumerateKeysAndBoolsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary setBool:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary removeBoolForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolBoolDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary initWithFloats:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary getFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary enumerateKeysAndFloatsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary setFloat:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary removeFloatForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolFloatDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary initWithDoubles:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary getDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary enumerateKeysAndDoublesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary setDouble:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary removeDoubleForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolDoubleDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary initWithObjects:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary objectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary isInitialized]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary deepCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary addEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary setObject:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolObjectDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary initWithValidationFunction:rawValues:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary initWithDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary getEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary getRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary enumerateKeysAndRawValuesUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary enumerateKeysAndEnumsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary serializedDataForUnknownValue:forKey:keyDataType:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary computeSerializedSizeAsField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary writeToCodedOutputStream:asField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary enumerateForTextFormat:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary setGPBGenericValue:forGPBGenericValueKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary addRawEntriesFromDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary setEnum:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary setRawValue:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary removeEnumForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolEnumDictionary removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary initWithObjects:forKeys:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary count]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary objectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary keyEnumerator]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary setObject:forKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary removeObjectForKey:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary mutableCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary objectForKeyedSubscript:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary setObject:forKeyedSubscript:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary enumerateKeysAndObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedDictionary enumerateKeysAndObjectsWithOptions:usingBlock:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBExtensionInternals.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "DataTypeSize",
              "coverage": 0
            },
            {
              "name": "ComputePBSerializedSizeNoTagOfObject",
              "coverage": 0
            },
            {
              "name": "ComputeSerializedSizeIncludingTagOfObject",
              "coverage": 0
            },
            {
              "name": "ComputeSerializedSizeIncludingTagOfArray",
              "coverage": 0
            },
            {
              "name": "WriteObjectIncludingTagToCodedOutputStream",
              "coverage": 0
            },
            {
              "name": "WriteObjectNoTagToCodedOutputStream",
              "coverage": 0
            },
            {
              "name": "WriteArrayIncludingTagsToCodedOutputStream",
              "coverage": 0
            },
            {
              "name": "GPBExtensionMergeFromInputStream",
              "coverage": 0
            },
            {
              "name": "GPBWriteExtensionValueToOutputStream",
              "coverage": 0
            },
            {
              "name": "GPBComputeExtensionSerializedSizeIncludingTag",
              "coverage": 0
            },
            {
              "name": "NewSingleValueFromInputStream",
              "coverage": 0
            }
          ]
        },
        {
          "name": "SourceContext.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBSourceContextRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBSourceContext descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FieldMask.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBFieldMaskRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBFieldMask descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Empty.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBEmptyRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBEmpty descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBUnknownField.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[GPBUnknownField initWithNumber:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField writeToOutput:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField serializedSize]",
              "coverage": 0
            },
            {
              "name": "__33-[GPBUnknownField serializedSize]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__33-[GPBUnknownField serializedSize]_block_invoke.42",
              "coverage": 0
            },
            {
              "name": "__33-[GPBUnknownField serializedSize]_block_invoke.47",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField writeAsMessageSetExtensionToOutput:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField serializedSizeAsMessageSetExtension]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField description]",
              "coverage": 0
            },
            {
              "name": "__30-[GPBUnknownField description]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__30-[GPBUnknownField description]_block_invoke.64",
              "coverage": 0
            },
            {
              "name": "__30-[GPBUnknownField description]_block_invoke.70",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField mergeFromField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField addVarint:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField addFixed32:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField addFixed64:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField addLengthDelimited:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownField addGroup:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Duration.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBDurationRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBDuration descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "Api.pbobjc.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "GPBApiRoot_FileDescriptor",
              "coverage": 0
            },
            {
              "name": "+[GPBApi descriptor]",
              "coverage": 0
            },
            {
              "name": "GPBApi_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBApi_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "+[GPBMethod descriptor]",
              "coverage": 0
            },
            {
              "name": "GPBMethod_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "SetGPBMethod_Syntax_RawValue",
              "coverage": 0
            },
            {
              "name": "+[GPBMixin descriptor]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBWellKnownTypes.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "TimeIntervalFromSecondsAndNanos",
              "coverage": 0
            },
            {
              "name": "SecondsAndNanosFromTimeInterval",
              "coverage": 0
            },
            {
              "name": "BuildTypeURL",
              "coverage": 0
            },
            {
              "name": "ParseTypeFromURL",
              "coverage": 0
            },
            {
              "name": "-[GPBTimestamp(GBPWellKnownTypes) initWithDate:]",
              "coverage": 0
            },
            {
              "name": "-[GPBTimestamp(GBPWellKnownTypes) initWithTimeIntervalSince1970:]",
              "coverage": 0
            },
            {
              "name": "-[GPBTimestamp(GBPWellKnownTypes) date]",
              "coverage": 0
            },
            {
              "name": "-[GPBTimestamp(GBPWellKnownTypes) setDate:]",
              "coverage": 0
            },
            {
              "name": "-[GPBTimestamp(GBPWellKnownTypes) timeIntervalSince1970]",
              "coverage": 0
            },
            {
              "name": "-[GPBTimestamp(GBPWellKnownTypes) setTimeIntervalSince1970:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDuration(GBPWellKnownTypes) initWithTimeInterval:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDuration(GBPWellKnownTypes) initWithTimeIntervalSince1970:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDuration(GBPWellKnownTypes) timeInterval]",
              "coverage": 0
            },
            {
              "name": "-[GPBDuration(GBPWellKnownTypes) setTimeInterval:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDuration(GBPWellKnownTypes) timeIntervalSince1970]",
              "coverage": 0
            },
            {
              "name": "-[GPBDuration(GBPWellKnownTypes) setTimeIntervalSince1970:]",
              "coverage": 0
            },
            {
              "name": "+[GPBAny(GBPWellKnownTypes) anyWithMessage:error:]",
              "coverage": 0
            },
            {
              "name": "+[GPBAny(GBPWellKnownTypes) anyWithMessage:typeURLPrefix:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAny(GBPWellKnownTypes) initWithMessage:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAny(GBPWellKnownTypes) initWithMessage:typeURLPrefix:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAny(GBPWellKnownTypes) packWithMessage:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAny(GBPWellKnownTypes) packWithMessage:typeURLPrefix:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAny(GBPWellKnownTypes) unpackMessageClass:error:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBArray.m",
          "coverage": 0.01252723311546841,
          "type": "objc",
          "functions": [
            {
              "name": "ArrayDefault_IsValidValue",
              "coverage": 0
            },
            {
              "name": "+[GPBInt32Array array]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt32Array arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt32Array arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt32Array arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt32Array exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt32Array array]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt32Array arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt32Array arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt32Array arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt32Array exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt64Array array]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt64Array arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt64Array arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBInt64Array arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array init]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array description]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBInt64Array exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt64Array array]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt64Array arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt64Array arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBUInt64Array arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array init]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array description]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBUInt64Array exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBFloatArray array]",
              "coverage": 0
            },
            {
              "name": "+[GPBFloatArray arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBFloatArray arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBFloatArray arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray init]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray description]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBFloatArray exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBDoubleArray array]",
              "coverage": 0
            },
            {
              "name": "+[GPBDoubleArray arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBDoubleArray arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBDoubleArray arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray init]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray description]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBDoubleArray exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBBoolArray array]",
              "coverage": 0
            },
            {
              "name": "+[GPBBoolArray arrayWithValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBBoolArray arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBBoolArray arrayWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray init]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray initWithValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray initWithCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray description]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray addValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBBoolArray exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumArray array]",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumArray arrayWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumArray arrayWithValidationFunction:rawValue:]",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumArray arrayWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumArray arrayWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray init]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray initWithValueArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray initWithValidationFunction:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray initWithValidationFunction:rawValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray initWithValidationFunction:capacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray description]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray enumerateRawValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray enumerateRawValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray valueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray rawValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray enumerateValuesWithBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray enumerateValuesWithOptions:usingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray internalResizeToCapacity:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray addRawValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray addRawValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray insertRawValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray replaceValueAtIndex:withRawValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray addRawValuesFromArray:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray removeValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray removeAll]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray exchangeValueAtIndex:withValueAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray addValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray addValues:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray insertValue:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumArray replaceValueAtIndex:withValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GPBAutocreatedArray count]",
              "coverage": 1
            },
            {
              "name": "-[GPBAutocreatedArray objectAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray insertObject:atIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray removeObject:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray removeObjectAtIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray addObject:]",
              "coverage": 1
            },
            {
              "name": "-[GPBAutocreatedArray removeLastObject]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray replaceObjectAtIndex:withObject:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray mutableCopyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray countByEnumeratingWithState:objects:count:]",
              "coverage": 1
            },
            {
              "name": "-[GPBAutocreatedArray enumerateObjectsUsingBlock:]",
              "coverage": 0
            },
            {
              "name": "-[GPBAutocreatedArray enumerateObjectsWithOptions:usingBlock:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBExtensionRegistry.m",
          "coverage": 0.06666666666666667,
          "type": "objc",
          "functions": [
            {
              "name": "-[GPBExtensionRegistry init]",
              "coverage": 1
            },
            {
              "name": "-[GPBExtensionRegistry dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionRegistry copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionRegistry addExtension:]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionRegistry extensionForDescriptor:fieldNumber:]",
              "coverage": 0
            },
            {
              "name": "CopyKeyValue",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionRegistry addExtensions:]",
              "coverage": 0
            },
            {
              "name": "__38-[GPBExtensionRegistry addExtensions:]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBUnknownFieldSet.m",
          "coverage": 0.11974110032362459,
          "type": "objc",
          "functions": [
            {
              "name": "checkNumber",
              "coverage": 0
            },
            {
              "name": "CopyWorker",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet dealloc]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[GPBUnknownFieldSet isEqual:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet hasField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet getField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet countOfFields]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet sortedFields]",
              "coverage": 0
            },
            {
              "name": "__34-[GPBUnknownFieldSet sortedFields]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet writeToCodedOutputStream:]",
              "coverage": 0
            },
            {
              "name": "__47-[GPBUnknownFieldSet writeToCodedOutputStream:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet description]",
              "coverage": 0
            },
            {
              "name": "GPBUnknownFieldSetSerializedSize",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet serializedSize]",
              "coverage": 0
            },
            {
              "name": "GPBUnknownFieldSetWriteAsMessageSetTo",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet writeAsMessageSetTo:]",
              "coverage": 0
            },
            {
              "name": "GPBUnknownFieldSetSerializedSizeAsMessageSet",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet serializedSizeAsMessageSet]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet data]",
              "coverage": 0
            },
            {
              "name": "+[GPBUnknownFieldSet isFieldTag:]",
              "coverage": 1
            },
            {
              "name": "-[GPBUnknownFieldSet addField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet mutableFieldForNumber:create:]",
              "coverage": 0
            },
            {
              "name": "GPBUnknownFieldSetMergeUnknownFields",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet mergeUnknownFields:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet mergeFromData:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet mergeVarintField:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet mergeFieldFrom:input:]",
              "coverage": 0.6153846153846154
            },
            {
              "name": "-[GPBUnknownFieldSet mergeMessageSetMessage:data:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet addUnknownMapEntry:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBUnknownFieldSet mergeFromCodedInputStream:]",
              "coverage": 0.75
            },
            {
              "name": "-[GPBUnknownFieldSet getTags:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBUtilities.m",
          "coverage": 0.15045674368619022,
          "type": "objc",
          "functions": [
            {
              "name": "GPBEmptyNSData",
              "coverage": 1
            },
            {
              "name": "__GPBEmptyNSData_block_invoke",
              "coverage": 1
            },
            {
              "name": "GPBMessageDropUnknownFieldsRecursively",
              "coverage": 0
            },
            {
              "name": "__GPBMessageDropUnknownFieldsRecursively_block_invoke",
              "coverage": 0
            },
            {
              "name": "__GPBMessageDropUnknownFieldsRecursively_block_invoke.32",
              "coverage": 0
            },
            {
              "name": "__GPBMessageDropUnknownFieldsRecursively_block_invoke.37",
              "coverage": 0
            },
            {
              "name": "__GPBMessageDropUnknownFieldsRecursively_block_invoke.42",
              "coverage": 0
            },
            {
              "name": "__GPBMessageDropUnknownFieldsRecursively_block_invoke.47",
              "coverage": 0
            },
            {
              "name": "__GPBMessageDropUnknownFieldsRecursively_block_invoke.52",
              "coverage": 0
            },
            {
              "name": "GPBCheckRuntimeVersionSupport",
              "coverage": 0.36363636363636365
            },
            {
              "name": "GPBCheckRuntimeVersionInternal",
              "coverage": 0
            },
            {
              "name": "GPBMessageHasFieldNumberSet",
              "coverage": 0
            },
            {
              "name": "GPBMessageHasFieldSet",
              "coverage": 0
            },
            {
              "name": "GPBClearMessageField",
              "coverage": 0
            },
            {
              "name": "GPBGetHasIvar",
              "coverage": 0.8235294117647058
            },
            {
              "name": "GPBGetHasOneof",
              "coverage": 0
            },
            {
              "name": "GPBSetHasIvar",
              "coverage": 0.7058823529411765
            },
            {
              "name": "GPBMaybeClearOneof",
              "coverage": 0
            },
            {
              "name": "GPBSetAutocreatedRetainedObjectIvarWithField",
              "coverage": 1
            },
            {
              "name": "GPBClearAutocreatedMessageIvarWithField",
              "coverage": 0.8181818181818182
            },
            {
              "name": "GPBSetObjectIvarWithField",
              "coverage": 0
            },
            {
              "name": "GPBSetCopyObjectIvarWithField",
              "coverage": 0
            },
            {
              "name": "GPBSetObjectIvarWithFieldInternal",
              "coverage": 1
            },
            {
              "name": "GPBSetRetainedObjectIvarWithFieldInternal",
              "coverage": 0.2892561983471074
            },
            {
              "name": "GPBGetObjectIvarWithFieldNoAutocreate",
              "coverage": 0.75
            },
            {
              "name": "GPBGetMessageEnumField",
              "coverage": 0
            },
            {
              "name": "GPBGetEnumIvarWithFieldInternal",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageEnumField",
              "coverage": 0
            },
            {
              "name": "GPBSetEnumIvarWithFieldInternal",
              "coverage": 0.75
            },
            {
              "name": "GPBGetMessageRawEnumField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageRawEnumField",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageBoolField",
              "coverage": 1
            },
            {
              "name": "GPBSetMessageBoolField",
              "coverage": 0
            },
            {
              "name": "GPBSetBoolIvarWithFieldInternal",
              "coverage": 0.9285714285714286
            },
            {
              "name": "GPBGetMessageInt32Field",
              "coverage": 0.8823529411764706
            },
            {
              "name": "GPBSetMessageInt32Field",
              "coverage": 0
            },
            {
              "name": "GPBSetInt32IvarWithFieldInternal",
              "coverage": 0.896551724137931
            },
            {
              "name": "GPBGetMessageUInt32Field",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageUInt32Field",
              "coverage": 0
            },
            {
              "name": "GPBSetUInt32IvarWithFieldInternal",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageInt64Field",
              "coverage": 1
            },
            {
              "name": "GPBSetMessageInt64Field",
              "coverage": 0
            },
            {
              "name": "GPBSetInt64IvarWithFieldInternal",
              "coverage": 0.896551724137931
            },
            {
              "name": "GPBGetMessageUInt64Field",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageUInt64Field",
              "coverage": 0
            },
            {
              "name": "GPBSetUInt64IvarWithFieldInternal",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageFloatField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageFloatField",
              "coverage": 0
            },
            {
              "name": "GPBSetFloatIvarWithFieldInternal",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageDoubleField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageDoubleField",
              "coverage": 0
            },
            {
              "name": "GPBSetDoubleIvarWithFieldInternal",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageStringField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageStringField",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageBytesField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageBytesField",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageMessageField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageMessageField",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageGroupField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageGroupField",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageRepeatedField",
              "coverage": 0
            },
            {
              "name": "BaseDataType",
              "coverage": 0.75
            },
            {
              "name": "DataTypesEquivalent",
              "coverage": 1
            },
            {
              "name": "TypeToString",
              "coverage": 0
            },
            {
              "name": "GPBSetMessageMapField",
              "coverage": 0
            },
            {
              "name": "GPBMessageEncodingForSelector",
              "coverage": 1
            },
            {
              "name": "AppendStringEscaped",
              "coverage": 0
            },
            {
              "name": "AppendBufferAsString",
              "coverage": 0
            },
            {
              "name": "AppendTextFormatForMapMessageField",
              "coverage": 0
            },
            {
              "name": "__AppendTextFormatForMapMessageField_block_invoke",
              "coverage": 0
            },
            {
              "name": "__AppendTextFormatForMapMessageField_block_invoke.408",
              "coverage": 0
            },
            {
              "name": "AppendTextFormatForMessageField",
              "coverage": 0
            },
            {
              "name": "AppendTextFormatForMessageExtensionRange",
              "coverage": 0
            },
            {
              "name": "AppendTextFormatForMessage",
              "coverage": 0
            },
            {
              "name": "GPBTextFormatForMessage",
              "coverage": 0
            },
            {
              "name": "GPBTextFormatForUnknownFieldSet",
              "coverage": 0
            },
            {
              "name": "Definition at 2012:76",
              "coverage": 0
            },
            {
              "name": "ReadRawByteFromData",
              "coverage": 0
            },
            {
              "name": "ReadRawVarint32FromData",
              "coverage": 0
            },
            {
              "name": "GPBDecodeTextFormatName",
              "coverage": 0
            },
            {
              "name": "GPBClassHasSel",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBRootObject.m",
          "coverage": 0.19254658385093168,
          "type": "objc",
          "functions": [
            {
              "name": "jenkins_one_at_a_time_hash",
              "coverage": 0
            },
            {
              "name": "GPBRootExtensionKeyRetain",
              "coverage": 0
            },
            {
              "name": "GPBRootExtensionKeyRelease",
              "coverage": 0
            },
            {
              "name": "GPBRootExtensionCopyKeyDescription",
              "coverage": 0
            },
            {
              "name": "GPBRootExtensionKeyEqual",
              "coverage": 0
            },
            {
              "name": "GPBRootExtensionKeyHash",
              "coverage": 0
            },
            {
              "name": "+[GPBRootObject initialize]",
              "coverage": 1
            },
            {
              "name": "+[GPBRootObject extensionRegistry]",
              "coverage": 1
            },
            {
              "name": "+[GPBRootObject globallyRegisterExtension:]",
              "coverage": 0
            },
            {
              "name": "ExtensionForName",
              "coverage": 0
            },
            {
              "name": "GPBResolveExtensionClassMethod",
              "coverage": 0
            },
            {
              "name": "__GPBResolveExtensionClassMethod_block_invoke",
              "coverage": 0
            },
            {
              "name": "+[GPBRootObject resolveClassMethod:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBCodedOutputStream.m",
          "coverage": 0.21133525456292027,
          "type": "objc",
          "functions": [
            {
              "name": "GPBRefreshBuffer",
              "coverage": 0
            },
            {
              "name": "GPBWriteRawByte",
              "coverage": 0.6666666666666666
            },
            {
              "name": "GPBWriteRawVarint32",
              "coverage": 1
            },
            {
              "name": "GPBWriteRawVarint64",
              "coverage": 1
            },
            {
              "name": "GPBWriteInt32NoTag",
              "coverage": 1
            },
            {
              "name": "GPBWriteUInt32",
              "coverage": 0
            },
            {
              "name": "GPBWriteTagWithFormat",
              "coverage": 1
            },
            {
              "name": "GPBWriteRawLittleEndian32",
              "coverage": 0
            },
            {
              "name": "GPBWriteRawLittleEndian64",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream initWithOutputStream:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream initWithData:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream initWithOutputStream:data:]",
              "coverage": 1
            },
            {
              "name": "+[GPBCodedOutputStream streamWithOutputStream:]",
              "coverage": 0
            },
            {
              "name": "+[GPBCodedOutputStream streamWithData:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeDoubleNoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeDouble:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFloatNoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFloat:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUInt64NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUInt64:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeInt64NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeInt64:value:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeInt32NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeInt32:value:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeFixed64NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFixed64:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFixed32NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFixed32:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeBoolNoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeBool:value:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeStringNoTag:]",
              "coverage": 0.7872340425531915
            },
            {
              "name": "-[GPBCodedOutputStream writeString:value:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeGroupNoTag:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeGroup:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUnknownGroupNoTag:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUnknownGroup:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeMessageNoTag:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeMessage:value:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeBytesNoTag:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeBytes:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUInt32NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUInt32:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeEnumNoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeEnum:value:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeSFixed32NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSFixed32:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSFixed64NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSFixed64:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSInt32NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSInt32:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSInt64NoTag:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSInt64:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeDoubleArray:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeDoubleArray:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeDoubleArray:values:tag:]_block_invoke.73",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeDoubleArray:values:tag:]_block_invoke.79",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFloatArray:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeFloatArray:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeFloatArray:values:tag:]_block_invoke.89",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeFloatArray:values:tag:]_block_invoke.95",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUInt64Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeUInt64Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeUInt64Array:values:tag:]_block_invoke.105",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeUInt64Array:values:tag:]_block_invoke.111",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeInt64Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeInt64Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeInt64Array:values:tag:]_block_invoke.121",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeInt64Array:values:tag:]_block_invoke.127",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeInt32Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeInt32Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeInt32Array:values:tag:]_block_invoke.137",
              "coverage": 0
            },
            {
              "name": "__51-[GPBCodedOutputStream writeInt32Array:values:tag:]_block_invoke.143",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUInt32Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeUInt32Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeUInt32Array:values:tag:]_block_invoke.153",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeUInt32Array:values:tag:]_block_invoke.159",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFixed64Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__53-[GPBCodedOutputStream writeFixed64Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__53-[GPBCodedOutputStream writeFixed64Array:values:tag:]_block_invoke.168",
              "coverage": 0
            },
            {
              "name": "__53-[GPBCodedOutputStream writeFixed64Array:values:tag:]_block_invoke.174",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeFixed32Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__53-[GPBCodedOutputStream writeFixed32Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__53-[GPBCodedOutputStream writeFixed32Array:values:tag:]_block_invoke.183",
              "coverage": 0
            },
            {
              "name": "__53-[GPBCodedOutputStream writeFixed32Array:values:tag:]_block_invoke.189",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSInt32Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeSInt32Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeSInt32Array:values:tag:]_block_invoke.198",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeSInt32Array:values:tag:]_block_invoke.204",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSInt64Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeSInt64Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeSInt64Array:values:tag:]_block_invoke.213",
              "coverage": 0
            },
            {
              "name": "__52-[GPBCodedOutputStream writeSInt64Array:values:tag:]_block_invoke.219",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSFixed64Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__54-[GPBCodedOutputStream writeSFixed64Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__54-[GPBCodedOutputStream writeSFixed64Array:values:tag:]_block_invoke.228",
              "coverage": 0
            },
            {
              "name": "__54-[GPBCodedOutputStream writeSFixed64Array:values:tag:]_block_invoke.234",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeSFixed32Array:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__54-[GPBCodedOutputStream writeSFixed32Array:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__54-[GPBCodedOutputStream writeSFixed32Array:values:tag:]_block_invoke.243",
              "coverage": 0
            },
            {
              "name": "__54-[GPBCodedOutputStream writeSFixed32Array:values:tag:]_block_invoke.249",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeBoolArray:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBCodedOutputStream writeBoolArray:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__50-[GPBCodedOutputStream writeBoolArray:values:tag:]_block_invoke.259",
              "coverage": 0
            },
            {
              "name": "__50-[GPBCodedOutputStream writeBoolArray:values:tag:]_block_invoke.265",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeEnumArray:values:tag:]",
              "coverage": 0
            },
            {
              "name": "__50-[GPBCodedOutputStream writeEnumArray:values:tag:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__50-[GPBCodedOutputStream writeEnumArray:values:tag:]_block_invoke.276",
              "coverage": 0
            },
            {
              "name": "__50-[GPBCodedOutputStream writeEnumArray:values:tag:]_block_invoke.282",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeStringArray:values:]",
              "coverage": 0.6
            },
            {
              "name": "-[GPBCodedOutputStream writeMessageArray:values:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeBytesArray:values:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeGroupArray:values:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeUnknownGroupArray:values:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeMessageSetExtension:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeRawMessageSetExtension:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream flush]",
              "coverage": 0.6
            },
            {
              "name": "-[GPBCodedOutputStream writeRawByte:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeRawData:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeRawPtr:offset:length:]",
              "coverage": 0.28205128205128205
            },
            {
              "name": "-[GPBCodedOutputStream writeTag:format:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeRawVarint32:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedOutputStream writeRawVarintSizeTAs32:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeRawVarint64:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeRawLittleEndian32:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedOutputStream writeRawLittleEndian64:]",
              "coverage": 0
            },
            {
              "name": "GPBComputeDoubleSizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeFloatSizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeUInt64SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeInt64SizeNoTag",
              "coverage": 1
            },
            {
              "name": "GPBComputeInt32SizeNoTag",
              "coverage": 1
            },
            {
              "name": "GPBComputeSizeTSizeAsInt32NoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeFixed64SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeFixed32SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeBoolSizeNoTag",
              "coverage": 1
            },
            {
              "name": "GPBComputeStringSizeNoTag",
              "coverage": 1
            },
            {
              "name": "GPBComputeGroupSizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeUnknownGroupSizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeMessageSizeNoTag",
              "coverage": 1
            },
            {
              "name": "GPBComputeBytesSizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeUInt32SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeEnumSizeNoTag",
              "coverage": 1
            },
            {
              "name": "GPBComputeSFixed32SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeSFixed64SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeSInt32SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeSInt64SizeNoTag",
              "coverage": 0
            },
            {
              "name": "GPBComputeDoubleSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeFloatSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeUInt64Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeInt64Size",
              "coverage": 1
            },
            {
              "name": "GPBComputeInt32Size",
              "coverage": 1
            },
            {
              "name": "GPBComputeFixed64Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeFixed32Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeBoolSize",
              "coverage": 1
            },
            {
              "name": "GPBComputeStringSize",
              "coverage": 1
            },
            {
              "name": "GPBComputeGroupSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeUnknownGroupSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeMessageSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeBytesSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeUInt32Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeEnumSize",
              "coverage": 1
            },
            {
              "name": "GPBComputeSFixed32Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeSFixed64Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeSInt32Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeSInt64Size",
              "coverage": 0
            },
            {
              "name": "GPBComputeMessageSetExtensionSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeRawMessageSetExtensionSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeTagSize",
              "coverage": 1
            },
            {
              "name": "GPBComputeWireFormatTagSize",
              "coverage": 0
            },
            {
              "name": "GPBComputeRawVarint32Size",
              "coverage": 0.625
            },
            {
              "name": "GPBComputeRawVarint32SizeForInteger",
              "coverage": 1
            },
            {
              "name": "GPBComputeRawVarint64Size",
              "coverage": 0.5
            }
          ]
        },
        {
          "name": "GPBDescriptor.m",
          "coverage": 0.2474460839954597,
          "type": "objc",
          "functions": [
            {
              "name": "SelFromStrings",
              "coverage": 0.9375
            },
            {
              "name": "NewFieldsArrayForHasIndex",
              "coverage": 0
            },
            {
              "name": "+[GPBDescriptor allocDescriptorForClass:rootClass:file:fields:fieldCount:storageSize:flags:]",
              "coverage": 0.9487179487179487
            },
            {
              "name": "-[GPBDescriptor initWithClass:file:fields:storageSize:wireFormat:]",
              "coverage": 1
            },
            {
              "name": "-[GPBDescriptor dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor setupOneofs:count:firstHasIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor setupExtraTextInfo:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor setupExtensionRanges:count:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor setupContainingMessageClassName:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor setupMessageClassNameSuffix:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor name]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor containingType]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor fullName]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor fieldWithNumber:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor fieldWithName:]",
              "coverage": 0
            },
            {
              "name": "-[GPBDescriptor oneofWithName:]",
              "coverage": 0
            },
            {
              "name": "-[GPBFileDescriptor initWithPackage:objcPrefix:syntax:]",
              "coverage": 1
            },
            {
              "name": "-[GPBFileDescriptor initWithPackage:syntax:]",
              "coverage": 1
            },
            {
              "name": "-[GPBFileDescriptor dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBOneofDescriptor initWithName:fields:]",
              "coverage": 0
            },
            {
              "name": "-[GPBOneofDescriptor dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBOneofDescriptor name]",
              "coverage": 0
            },
            {
              "name": "-[GPBOneofDescriptor fieldWithNumber:]",
              "coverage": 0
            },
            {
              "name": "-[GPBOneofDescriptor fieldWithName:]",
              "coverage": 0
            },
            {
              "name": "GPBFieldTag",
              "coverage": 0.8333333333333334
            },
            {
              "name": "GPBFieldAlternateTag",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor init]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor initWithFieldDescription:includesDefault:syntax:]",
              "coverage": 0.7397260273972602
            },
            {
              "name": "-[GPBFieldDescriptor dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor dataType]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor hasDefaultValue]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor number]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor name]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor isRequired]",
              "coverage": 1
            },
            {
              "name": "-[GPBFieldDescriptor isOptional]",
              "coverage": 1
            },
            {
              "name": "-[GPBFieldDescriptor fieldType]",
              "coverage": 0.9
            },
            {
              "name": "-[GPBFieldDescriptor mapKeyDataType]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor isPackable]",
              "coverage": 1
            },
            {
              "name": "-[GPBFieldDescriptor isValidEnumValue:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[GPBFieldDescriptor enumDescriptor]",
              "coverage": 0
            },
            {
              "name": "-[GPBFieldDescriptor defaultValue]",
              "coverage": 1
            },
            {
              "name": "-[GPBFieldDescriptor textFormatName]",
              "coverage": 0
            },
            {
              "name": "+[GPBEnumDescriptor allocDescriptorForName:valueNames:values:count:enumVerifier:]",
              "coverage": 1
            },
            {
              "name": "+[GPBEnumDescriptor allocDescriptorForName:valueNames:values:count:enumVerifier:extraTextFormatInfo:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor initWithName:valueNames:values:count:enumVerifier:]",
              "coverage": 1
            },
            {
              "name": "-[GPBEnumDescriptor dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor calcValueNameOffsets]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor enumNameForValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor getValue:forEnumName:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor getValue:forEnumTextFormatName:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor textFormatNameForValue:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor enumNameCount]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor getEnumNameForIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBEnumDescriptor getEnumTextFormatNameForIndex:]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor initWithExtensionDescription:]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor dealloc]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor singletonName]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor singletonNameC]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor fieldNumber]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor dataType]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor wireType]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor alternateWireType]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor isRepeated]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor isPackable]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor msgClass]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor enumDescriptor]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor defaultValue]",
              "coverage": 0
            },
            {
              "name": "-[GPBExtensionDescriptor compareByFieldNumber:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBMessage.m",
          "coverage": 0.3391755923401493,
          "type": "objc",
          "functions": [
            {
              "name": "MessageError",
              "coverage": 0
            },
            {
              "name": "ErrorFromException",
              "coverage": 0.5238095238095238
            },
            {
              "name": "CheckExtension",
              "coverage": 0
            },
            {
              "name": "CloneExtensionMap",
              "coverage": 0
            },
            {
              "name": "CreateArrayForField",
              "coverage": 0.4426229508196721
            },
            {
              "name": "CreateMapForField",
              "coverage": 0
            },
            {
              "name": "GetOrCreateArrayIvarWithField",
              "coverage": 1
            },
            {
              "name": "GetArrayIvarWithField",
              "coverage": 1
            },
            {
              "name": "GetOrCreateMapIvarWithField",
              "coverage": 0
            },
            {
              "name": "GetMapIvarWithField",
              "coverage": 0
            },
            {
              "name": "GPBCreateMessageWithAutocreator",
              "coverage": 0
            },
            {
              "name": "CreateMessageWithAutocreatorForExtension",
              "coverage": 0
            },
            {
              "name": "GPBWasMessageAutocreatedBy",
              "coverage": 0
            },
            {
              "name": "GPBBecomeVisibleToAutocreator",
              "coverage": 0.375
            },
            {
              "name": "GPBAutocreatedArrayModified",
              "coverage": 0.8095238095238095
            },
            {
              "name": "GPBAutocreatedDictionaryModified",
              "coverage": 0
            },
            {
              "name": "GPBClearMessageAutocreator",
              "coverage": 0.13333333333333333
            },
            {
              "name": "GPBPrepareReadOnlySemaphore",
              "coverage": 0.875
            },
            {
              "name": "GetOrMakeUnknownFields",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage initialize]",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage allocWithZone:]",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage alloc]",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage descriptor]",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage message]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage init]",
              "coverage": 1
            },
            {
              "name": "-[GPBMessage initWithData:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage initWithData:extensionRegistry:error:]",
              "coverage": 0.7777777777777778
            },
            {
              "name": "-[GPBMessage initWithCodedInputStream:extensionRegistry:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GPBMessage copyFieldsInto:zone:descriptor:]",
              "coverage": 0
            },
            {
              "name": "__45-[GPBMessage copyFieldsInto:zone:descriptor:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage copyWithZone:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage clear]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage internalClear:]",
              "coverage": 0.620253164556962
            },
            {
              "name": "-[GPBMessage isInitialized]",
              "coverage": 0.6794871794871795
            },
            {
              "name": "__27-[GPBMessage isInitialized]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage descriptor]",
              "coverage": 1
            },
            {
              "name": "-[GPBMessage data]",
              "coverage": 1
            },
            {
              "name": "-[GPBMessage delimitedData]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage writeToOutputStream:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage writeToCodedOutputStream:]",
              "coverage": 0.7142857142857143
            },
            {
              "name": "-[GPBMessage writeDelimitedToOutputStream:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage writeDelimitedToCodedOutputStream:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage writeField:toCodedOutputStream:]",
              "coverage": 0.4308755760368664
            },
            {
              "name": "-[GPBMessage getExtension:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage getExistingExtension:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage hasExtension:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage extensionsCurrentlySet]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage writeExtensionsToCodedOutputStream:range:sortedExtensions:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage setExtension:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage addExtension:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage setExtension:index:value:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage clearExtension:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage mergeFromData:extensionRegistry:]",
              "coverage": 1
            },
            {
              "name": "-[GPBMessage mergeDelimitedFromCodedInputStream:extensionRegistry:]",
              "coverage": 0
            },
            {
              "name": "+[GPBMessage parseFromData:error:]",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage parseFromData:extensionRegistry:error:]",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage parseFromCodedInputStream:extensionRegistry:error:]",
              "coverage": 0
            },
            {
              "name": "+[GPBMessage parseDelimitedFromCodedInputStream:extensionRegistry:error:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage unknownFields]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage setUnknownFields:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage parseMessageSet:extensionRegistry:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage parseUnknownField:extensionRegistry:tag:]",
              "coverage": 0.38095238095238093
            },
            {
              "name": "-[GPBMessage addUnknownMapEntry:value:]",
              "coverage": 0
            },
            {
              "name": "MergeSingleFieldFromCodedInputStream",
              "coverage": 0.6075949367088608
            },
            {
              "name": "MergeRepeatedPackedFieldFromCodedInputStream",
              "coverage": 0
            },
            {
              "name": "MergeRepeatedNotPackedFieldFromCodedInputStream",
              "coverage": 0.746031746031746
            },
            {
              "name": "-[GPBMessage mergeFromCodedInputStream:extensionRegistry:]",
              "coverage": 0.6804123711340206
            },
            {
              "name": "-[GPBMessage mergeFrom:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage isEqual:]",
              "coverage": 0.04032258064516129
            },
            {
              "name": "-[GPBMessage hash]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage description]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage debugQuickLookObject]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage serializedSize]",
              "coverage": 0.8441558441558441
            },
            {
              "name": "Definition at 2945:108",
              "coverage": 0
            },
            {
              "name": "ResolveIvarGet",
              "coverage": 1
            },
            {
              "name": "Definition at 3044:64",
              "coverage": 1
            },
            {
              "name": "Definition at 3052:64",
              "coverage": 1
            },
            {
              "name": "ResolveIvarSet",
              "coverage": 1
            },
            {
              "name": "Definition at 3088:76",
              "coverage": 1
            },
            {
              "name": "Definition at 3096:74",
              "coverage": 1
            },
            {
              "name": "+[GPBMessage resolveInstanceMethod:]",
              "coverage": 0.6448598130841121
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke_3",
              "coverage": 0
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke_4",
              "coverage": 1
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke_5",
              "coverage": 0
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke_6",
              "coverage": 1
            },
            {
              "name": "__36+[GPBMessage resolveInstanceMethod:]_block_invoke_7",
              "coverage": 0
            },
            {
              "name": "+[GPBMessage resolveClassMethod:]",
              "coverage": 0
            },
            {
              "name": "+[GPBMessage supportsSecureCoding]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage initWithCoder:]",
              "coverage": 0
            },
            {
              "name": "-[GPBMessage encodeWithCoder:]",
              "coverage": 0
            },
            {
              "name": "+[GPBMessage accessInstanceVariablesDirectly]",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageRepeatedField",
              "coverage": 0
            },
            {
              "name": "GPBGetMessageMapField",
              "coverage": 0
            },
            {
              "name": "GPBGetObjectIvarWithField",
              "coverage": 0.48148148148148145
            }
          ]
        },
        {
          "name": "GPBCodedInputStream.m",
          "coverage": 0.39452054794520547,
          "type": "objc",
          "functions": [
            {
              "name": "RaiseException",
              "coverage": 1
            },
            {
              "name": "CheckRecursionLimit",
              "coverage": 0.6
            },
            {
              "name": "CheckSize",
              "coverage": 0.45454545454545453
            },
            {
              "name": "ReadRawByte",
              "coverage": 1
            },
            {
              "name": "ReadRawLittleEndian32",
              "coverage": 0
            },
            {
              "name": "ReadRawLittleEndian64",
              "coverage": 0
            },
            {
              "name": "ReadRawVarint64",
              "coverage": 0.9285714285714286
            },
            {
              "name": "ReadRawVarint32",
              "coverage": 1
            },
            {
              "name": "SkipRawData",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadDouble",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadFloat",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadUInt64",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadUInt32",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadInt64",
              "coverage": 1
            },
            {
              "name": "GPBCodedInputStreamReadInt32",
              "coverage": 1
            },
            {
              "name": "GPBCodedInputStreamReadFixed64",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadFixed32",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadEnum",
              "coverage": 1
            },
            {
              "name": "GPBCodedInputStreamReadSFixed32",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadSFixed64",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadSInt32",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadSInt64",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadBool",
              "coverage": 1
            },
            {
              "name": "GPBCodedInputStreamReadTag",
              "coverage": 0.8421052631578947
            },
            {
              "name": "GPBCodedInputStreamReadRetainedString",
              "coverage": 0.6818181818181818
            },
            {
              "name": "GPBCodedInputStreamReadRetainedBytes",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamReadRetainedBytesNoCopy",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamPushLimit",
              "coverage": 0.7777777777777778
            },
            {
              "name": "GPBCodedInputStreamPopLimit",
              "coverage": 1
            },
            {
              "name": "GPBCodedInputStreamBytesUntilLimit",
              "coverage": 0
            },
            {
              "name": "GPBCodedInputStreamIsAtEnd",
              "coverage": 1
            },
            {
              "name": "GPBCodedInputStreamCheckLastTagWas",
              "coverage": 0.6
            },
            {
              "name": "+[GPBCodedInputStream streamWithData:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream initWithData:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedInputStream dealloc]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedInputStream readTag]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream checkLastTagWas:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedInputStream skipField:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream skipMessage]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream isAtEnd]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream position]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream pushLimit:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream popLimit:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readDouble]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readFloat]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readUInt64]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readInt64]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readInt32]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readFixed64]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readFixed32]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readBool]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readString]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readGroup:message:extensionRegistry:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readUnknownGroup:message:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedInputStream readMessage:extensionRegistry:]",
              "coverage": 1
            },
            {
              "name": "-[GPBCodedInputStream readMapEntry:extensionRegistry:field:parentMessage:]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readBytes]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readUInt32]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readEnum]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readSFixed32]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readSFixed64]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readSInt32]",
              "coverage": 0
            },
            {
              "name": "-[GPBCodedInputStream readSInt64]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBUtilities_PackagePrivate.h",
          "coverage": 0.4166666666666667,
          "type": "objc",
          "functions": [
            {
              "name": "Definition at 54:52",
              "coverage": 0
            },
            {
              "name": "Definition at 65:47",
              "coverage": 0
            },
            {
              "name": "Definition at 73:54",
              "coverage": 0
            },
            {
              "name": "Definition at 79:52",
              "coverage": 0
            },
            {
              "name": "Definition at 85:54",
              "coverage": 0
            },
            {
              "name": "Definition at 91:52",
              "coverage": 0
            },
            {
              "name": "Definition at 97:74",
              "coverage": 1
            },
            {
              "name": "Definition at 101:74",
              "coverage": 1
            },
            {
              "name": "Definition at 109:50",
              "coverage": 0
            },
            {
              "name": "Definition at 117:50",
              "coverage": 0
            },
            {
              "name": "Definition at 125:50",
              "coverage": 0
            },
            {
              "name": "Definition at 134:50",
              "coverage": 0
            },
            {
              "name": "Definition at 143:55",
              "coverage": 1
            },
            {
              "name": "Definition at 155:56",
              "coverage": 1
            },
            {
              "name": "Definition at 165:70",
              "coverage": 1
            },
            {
              "name": "Definition at 169:69",
              "coverage": 1
            },
            {
              "name": "Definition at 173:68",
              "coverage": 0
            },
            {
              "name": "Definition at 178:65",
              "coverage": 0
            },
            {
              "name": "Definition at 192:65",
              "coverage": 1
            },
            {
              "name": "Definition at 197:48",
              "coverage": 1
            }
          ]
        },
        {
          "name": "GPBDescriptor_PackagePrivate.h",
          "coverage": 0.64,
          "type": "objc",
          "functions": [
            {
              "name": "Definition at 262:65",
              "coverage": 1
            },
            {
              "name": "Definition at 267:71",
              "coverage": 1
            },
            {
              "name": "Definition at 271:64",
              "coverage": 1
            },
            {
              "name": "Definition at 275:63",
              "coverage": 1
            },
            {
              "name": "Definition at 289:76",
              "coverage": 1
            },
            {
              "name": "Definition at 293:78",
              "coverage": 0
            },
            {
              "name": "Definition at 297:76",
              "coverage": 0
            },
            {
              "name": "Definition at 301:80",
              "coverage": 0
            }
          ]
        },
        {
          "name": "GPBWireFormat.m",
          "coverage": 0.9523809523809523,
          "type": "objc",
          "functions": [
            {
              "name": "GPBWireFormatMakeTag",
              "coverage": 1
            },
            {
              "name": "GPBWireFormatGetTagWireType",
              "coverage": 1
            },
            {
              "name": "GPBWireFormatGetTagFieldNumber",
              "coverage": 1
            },
            {
              "name": "GPBWireFormatIsValidTag",
              "coverage": 1
            },
            {
              "name": "GPBWireFormatForType",
              "coverage": 0.9259259259259259
            }
          ]
        }
      ]
    },
    {
      "name": "Storage_Example_iOS.app",
      "coverage": 0.6872727272727273,
      "files": [
        {
          "name": "FIRStorageDownloadTask.m",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageDownloadTask initWithReference:fetcherService:dispatchQueue:file:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask dealloc]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask enqueue]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask enqueueWithData:]",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask enqueueWithData:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask enqueueWithData:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask enqueueWithData:]_block_invoke.58",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask enqueueWithData:]_block_invoke.75",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask enqueueWithData:]_block_invoke.88",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask enqueueWithData:]_block_invoke.100",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask cancel]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask cancelWithError:]",
              "coverage": 0
            },
            {
              "name": "__42-[FIRStorageDownloadTask cancelWithError:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask pause]",
              "coverage": 0
            },
            {
              "name": "__31-[FIRStorageDownloadTask pause]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageDownloadTask resume]",
              "coverage": 0
            },
            {
              "name": "__32-[FIRStorageDownloadTask resume]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorageGetDownloadURLTask.m",
          "coverage": 0.1569767441860465,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageGetDownloadURLTask initWithReference:fetcherService:dispatchQueue:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageGetDownloadURLTask dealloc]",
              "coverage": 0
            },
            {
              "name": "+[FIRStorageGetDownloadURLTask downloadURLFromMetadataDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageGetDownloadURLTask enqueue]",
              "coverage": 0
            },
            {
              "name": "__39-[FIRStorageGetDownloadURLTask enqueue]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__39-[FIRStorageGetDownloadURLTask enqueue]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__39-[FIRStorageGetDownloadURLTask enqueue]_block_invoke.91",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAppDelegate.m",
          "coverage": 0.27586206896551724,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRAppDelegate application:didFinishLaunchingWithOptions:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillResignActive:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidEnterBackground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationWillEnterForeground:]",
              "coverage": 0
            },
            {
              "name": "-[FIRAppDelegate applicationDidBecomeActive:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAppDelegate applicationWillTerminate:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorageTaskSnapshot.m",
          "coverage": 0.29310344827586204,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageTaskSnapshot initWithTask:state:metadata:reference:progress:error:]",
              "coverage": 0.40476190476190477
            },
            {
              "name": "-[FIRStorageTaskSnapshot description]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorageReference.m",
          "coverage": 0.3220338983050847,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageReference init]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference initWithStorage:path:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference isEqual:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRStorageReference isEqualToFIRStorageReference:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference hash]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference description]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference stringValue]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference bucket]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference fullPath]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference name]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference root]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference parent]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference child:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference putData:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference putData:metadata:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference putData:metadata:completion:]",
              "coverage": 0
            },
            {
              "name": "__51-[FIRStorageReference putData:metadata:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__51-[FIRStorageReference putData:metadata:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__51-[FIRStorageReference putData:metadata:completion:]_block_invoke.75",
              "coverage": 0
            },
            {
              "name": "__51-[FIRStorageReference putData:metadata:completion:]_block_invoke_2.76",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference putFile:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference putFile:metadata:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference putFile:metadata:completion:]",
              "coverage": 0.9444444444444444
            },
            {
              "name": "__51-[FIRStorageReference putFile:metadata:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__51-[FIRStorageReference putFile:metadata:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__51-[FIRStorageReference putFile:metadata:completion:]_block_invoke.97",
              "coverage": 1
            },
            {
              "name": "__51-[FIRStorageReference putFile:metadata:completion:]_block_invoke_2.98",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageReference dataWithMaxSize:completion:]",
              "coverage": 0
            },
            {
              "name": "__50-[FIRStorageReference dataWithMaxSize:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__50-[FIRStorageReference dataWithMaxSize:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__50-[FIRStorageReference dataWithMaxSize:completion:]_block_invoke.118",
              "coverage": 0
            },
            {
              "name": "__50-[FIRStorageReference dataWithMaxSize:completion:]_block_invoke_2.119",
              "coverage": 0
            },
            {
              "name": "__50-[FIRStorageReference dataWithMaxSize:completion:]_block_invoke.126",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference writeToFile:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference writeToFile:completion:]",
              "coverage": 0
            },
            {
              "name": "__46-[FIRStorageReference writeToFile:completion:]_block_invoke",
              "coverage": 0
            },
            {
              "name": "__46-[FIRStorageReference writeToFile:completion:]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__46-[FIRStorageReference writeToFile:completion:]_block_invoke.157",
              "coverage": 0
            },
            {
              "name": "__46-[FIRStorageReference writeToFile:completion:]_block_invoke_2.158",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference downloadURLWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference metadataWithCompletion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference updateMetadata:completion:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageReference deleteWithCompletion:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorageUploadTask.m",
          "coverage": 0.42782152230971127,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageUploadTask initWithReference:fetcherService:dispatchQueue:data:metadata:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageUploadTask initWithReference:fetcherService:dispatchQueue:file:metadata:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageUploadTask dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageUploadTask enqueue]",
              "coverage": 1
            },
            {
              "name": "__31-[FIRStorageUploadTask enqueue]_block_invoke",
              "coverage": 0.102803738317757
            },
            {
              "name": "__31-[FIRStorageUploadTask enqueue]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "__31-[FIRStorageUploadTask enqueue]_block_invoke.130",
              "coverage": 0
            },
            {
              "name": "__31-[FIRStorageUploadTask enqueue]_block_invoke.149",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageUploadTask finishTaskWithStatus:snapshot:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageUploadTask isContentToUploadValid:]",
              "coverage": 0.782608695652174
            },
            {
              "name": "-[FIRStorageUploadTask cancel]",
              "coverage": 0
            },
            {
              "name": "__30-[FIRStorageUploadTask cancel]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageUploadTask pause]",
              "coverage": 0
            },
            {
              "name": "__29-[FIRStorageUploadTask pause]_block_invoke",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageUploadTask resume]",
              "coverage": 0
            },
            {
              "name": "__30-[FIRStorageUploadTask resume]_block_invoke",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRViewController.m",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRViewController viewDidLoad]",
              "coverage": 1
            },
            {
              "name": "-[FIRViewController didReceiveMemoryWarning]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorageObservableTask.m",
          "coverage": 0.622093023255814,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageObservableTask initWithReference:fetcherService:dispatchQueue:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageObservableTask observeStatus:handler:]",
              "coverage": 0.5441176470588235
            },
            {
              "name": "-[FIRStorageObservableTask removeObserverWithHandle:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageObservableTask removeAllObserversForStatus:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageObservableTask removeAllObservers]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageObservableTask handlerDictionaryForStatus:]",
              "coverage": 0.6923076923076923
            },
            {
              "name": "-[FIRStorageObservableTask removeHandlersFromStatusMapForDictionary:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageObservableTask fireHandlersForStatus:snapshot:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageObservableTask fireHandlers:snapshot:]",
              "coverage": 0.8947368421052632
            },
            {
              "name": "__50-[FIRStorageObservableTask fireHandlers:snapshot:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__50-[FIRStorageObservableTask fireHandlers:snapshot:]_block_invoke_2",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageErrors.m",
          "coverage": 0.6981132075471698,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRStorageErrors errorWithCode:]",
              "coverage": 0
            },
            {
              "name": "+[FIRStorageErrors errorWithCode:infoDictionary:]",
              "coverage": 0.6222222222222222
            },
            {
              "name": "+[FIRStorageErrors errorWithServerError:reference:]",
              "coverage": 0.8823529411764706
            },
            {
              "name": "+[FIRStorageErrors errorWithInvalidRequest:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageErrors errorWithCustomMessage:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRDependency.m",
          "coverage": 0.7857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRDependency dependencyWithProtocol:]",
              "coverage": 0
            },
            {
              "name": "+[FIRDependency dependencyWithProtocol:isRequired:]",
              "coverage": 1
            },
            {
              "name": "-[FIRDependency initWithProtocol:isRequired:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRBundleUtil.m",
          "coverage": 0.7872340425531915,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRBundleUtil relevantBundles]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil optionsDictionaryPathWithResourceName:andFileType:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil relevantURLSchemes]",
              "coverage": 0
            },
            {
              "name": "+[FIRBundleUtil hasBundleIdentifierPrefix:inBundles:]",
              "coverage": 1
            },
            {
              "name": "+[FIRBundleUtil bundleIdentifierByRemovingLastPartFrom:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRConfiguration.m",
          "coverage": 0.8076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__34+[FIRConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration init]",
              "coverage": 1
            },
            {
              "name": "-[FIRConfiguration setLoggerLevel:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRLogger.m",
          "coverage": 0.8118811881188119,
          "type": "objc",
          "functions": [
            {
              "name": "FIRLoggerInitializeASL",
              "coverage": 1
            },
            {
              "name": "__FIRLoggerInitializeASL_block_invoke",
              "coverage": 0.9333333333333333
            },
            {
              "name": "FIRSetAnalyticsDebugMode",
              "coverage": 0
            },
            {
              "name": "FIRSetLoggerLevel",
              "coverage": 0
            },
            {
              "name": "FIRResetLogger",
              "coverage": 1
            },
            {
              "name": "FIRSetLoggerUserDefaults",
              "coverage": 1
            },
            {
              "name": "FIRIsLoggableLevel",
              "coverage": 0
            },
            {
              "name": "FIRLogBasic",
              "coverage": 1
            },
            {
              "name": "Definition at 158:95",
              "coverage": 1
            },
            {
              "name": "+[FIRLoggerWrapper logWithLevel:withService:withCode:withMessage:withArgs:]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorage.m",
          "coverage": 0.8274111675126904,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRStorage initialize]",
              "coverage": 1
            },
            {
              "name": "__24+[FIRStorage initialize]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__24+[FIRStorage initialize]_block_invoke_2",
              "coverage": 0
            },
            {
              "name": "+[FIRStorage fetcherServiceForApp:bucket:auth:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorage setGTMSessionFetcherLoggingEnabled:]",
              "coverage": 0
            },
            {
              "name": "+[FIRStorage storage]",
              "coverage": 0
            },
            {
              "name": "+[FIRStorage storageForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorage storageWithURL:]",
              "coverage": 0
            },
            {
              "name": "+[FIRStorage storageForApp:URL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage initWithApp:bucket:auth:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage isEqual:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRStorage isEqualToFIRStorage:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage hash]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage description]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorage reference]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage referenceForURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage referenceWithPath:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorage setCallbackQueue:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorage enableBackgroundTasks:]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorage uploadTasks]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorage downloadTasks]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRStorageTask.m",
          "coverage": 0.8484848484848485,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageTask init]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageTask initWithReference:fetcherService:dispatchQueue:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTask snapshot]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTask dispatchAsync:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRApp.m",
          "coverage": 0.8848,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRApp configure]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithOptions:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp configureWithName:options:]",
              "coverage": 0.9333333333333333
            },
            {
              "name": "+[FIRApp defaultApp]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp appNamed:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp allApps]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp resetApps]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp deleteApp:]",
              "coverage": 0.7916666666666666
            },
            {
              "name": "+[FIRApp addAppToAppDictionary:]",
              "coverage": 0.6666666666666666
            },
            {
              "name": "-[FIRApp initInstanceWithName:options:]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp configureCore]",
              "coverage": 0.7962962962962963
            },
            {
              "name": "-[FIRApp options]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp setDataCollectionDefaultEnabled:]",
              "coverage": 0.9354838709677419
            },
            {
              "name": "-[FIRApp isDataCollectionDefaultEnabled]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp sendNotificationsToSDKs:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForMissingOptions]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForSubspecConfigurationFailureWithDomain:errorCode:service:reason:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp errorForInvalidAppID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp isDefaultAppConfigured]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerLibrary:withVersion:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp registerInternalLibrary:withName:withVersion:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRApp registerInternalLibrary:withName:withVersion:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRApp firebaseUserAgent]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp checkExpectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp isAppIDValid]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp validateAppID:]",
              "coverage": 0.9473684210526315
            },
            {
              "name": "+[FIRApp actualBundleID]",
              "coverage": 0
            },
            {
              "name": "+[FIRApp validateAppIDFormat:withVersion:]",
              "coverage": 0.8450704225352113
            },
            {
              "name": "+[FIRApp validateAppIDFingerprint:withVersion:]",
              "coverage": 0.8620689655172413
            },
            {
              "name": "-[FIRApp expectedBundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIRApp clearDataCollectionSwitchFromUserDefaults]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromUserDefaultsForApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRApp readDataCollectionSwitchFromPlist]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRApp readDataCollectionSwitchFromPlist]_block_invoke",
              "coverage": 0.75
            },
            {
              "name": "-[FIRApp sendLogsWithServiceName:version:error:]",
              "coverage": 0.2631578947368421
            }
          ]
        },
        {
          "name": "FIRStoragePath.m",
          "coverage": 0.9285714285714286,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRStoragePath pathFromString:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStoragePath pathFromGSURI:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStoragePath pathFromHTTPURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath initWithBucket:object:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath isEqual:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRStoragePath isEqualToFIRStoragePath:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath hash]",
              "coverage": 0
            },
            {
              "name": "-[FIRStoragePath description]",
              "coverage": 0
            },
            {
              "name": "-[FIRStoragePath stringValue]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath child:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath parent]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath root]",
              "coverage": 1
            },
            {
              "name": "-[FIRStoragePath standardizedPathForString:]",
              "coverage": 1
            },
            {
              "name": "__44-[FIRStoragePath standardizedPathForString:]_block_invoke",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIROptions.m",
          "coverage": 0.9489795918367347,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIROptions defaultOptions]",
              "coverage": 0.8461538461538461
            },
            {
              "name": "+[FIROptions initialize]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions defaultOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions plistFilePathWithName:]",
              "coverage": 1
            },
            {
              "name": "+[FIROptions resetDefaultOptions]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initInternalWithOptionsDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithContentsOfFile:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions initWithGoogleAppID:GCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions APIKey]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions checkEditingLocked]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAPIKey:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions clientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions trackingID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setTrackingID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions GCMSenderID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGCMSenderID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions projectID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setProjectID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions androidClientID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setAndroidClientID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions googleAppID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setGoogleAppID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions libraryVersionID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setLibraryVersionID:]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions databaseURL]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDatabaseURL:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions storageBucket]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setStorageBucket:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setDeepLinkURLScheme:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions bundleID]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions setBundleID:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionaryWithInfoDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions analyticsOptionsDictionary]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isMeasurementEnabled]",
              "coverage": 0.8181818181818182
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionExplicitlySet]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionEnabled]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsCollectionDeactivated]",
              "coverage": 1
            },
            {
              "name": "-[FIROptions isAnalyticsEnabled]",
              "coverage": 0
            },
            {
              "name": "-[FIROptions isSignInEnabled]",
              "coverage": 0
            }
          ]
        },
        {
          "name": "FIRAnalyticsConfiguration.m",
          "coverage": 0.9545454545454546,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAnalyticsConfiguration sharedInstance]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRAnalyticsConfiguration sharedInstance]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration postNotificationName:value:]",
              "coverage": 0.75
            },
            {
              "name": "-[FIRAnalyticsConfiguration setMinimumSessionInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setSessionTimeoutInterval:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:]",
              "coverage": 1
            },
            {
              "name": "-[FIRAnalyticsConfiguration setAnalyticsCollectionEnabled:persistSetting:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageMetadata.m",
          "coverage": 0.9664804469273743,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageMetadata init]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata initWithDictionary:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata copyWithZone:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata isEqual:]",
              "coverage": 0.8333333333333334
            },
            {
              "name": "-[FIRStorageMetadata isEqualToFIRStorageMetadata:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata hash]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata description]",
              "coverage": 0
            },
            {
              "name": "-[FIRStorageMetadata dictionaryRepresentation]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata isFile]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata isFolder]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageMetadata removeMatchingMetadata:oldMetadata:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata updatedMetadata]",
              "coverage": 1
            },
            {
              "name": "setupDateFormatterOnce",
              "coverage": 1
            },
            {
              "name": "__setupDateFormatterOnce_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata dateFromRFC3339String:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageMetadata RFC3339StringFromDate:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageUtils.m",
          "coverage": 0.9746835443037974,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRStorageUtils GCSEscapedString:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageUtils MIMETypeForExtension:]",
              "coverage": 0.8823529411764706
            },
            {
              "name": "+[FIRStorageUtils queryStringForDictionary:]",
              "coverage": 1
            },
            {
              "name": "__44+[FIRStorageUtils queryStringForDictionary:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageUtils defaultRequestForPath:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageUtils encodedURLForPath:]",
              "coverage": 1
            },
            {
              "name": "+[NSDictionary(FIRStorageNSDictionaryJSONHelpers) frs_dictionaryFromJSONData:]",
              "coverage": 1
            },
            {
              "name": "+[NSData(FIRStorageNSDataJSONHelpers) frs_dataFromJSONDictionary:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageDeleteTask.m",
          "coverage": 0.9795918367346939,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageDeleteTask dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageDeleteTask initWithReference:fetcherService:dispatchQueue:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageDeleteTask enqueue]",
              "coverage": 1
            },
            {
              "name": "__31-[FIRStorageDeleteTask enqueue]_block_invoke",
              "coverage": 0.9444444444444444
            },
            {
              "name": "__31-[FIRStorageDeleteTask enqueue]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__31-[FIRStorageDeleteTask enqueue]_block_invoke.36",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentContainer.m",
          "coverage": 0.9818181818181818,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:]",
              "coverage": 1
            },
            {
              "name": "__55+[FIRComponentContainer registerAsComponentRegistrant:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "+[FIRComponentContainer registerAsComponentRegistrant:inSet:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer initWithApp:registrants:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer populateComponentsFromRegisteredClasses:forApp:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]",
              "coverage": 0.9285714285714286
            },
            {
              "name": "-[FIRComponentContainer instanceForProtocol:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponentContainer removeAllCachedInstances]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageGetMetadataTask.m",
          "coverage": 0.9848484848484849,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageGetMetadataTask initWithReference:fetcherService:dispatchQueue:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageGetMetadataTask dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageGetMetadataTask enqueue]",
              "coverage": 1
            },
            {
              "name": "__36-[FIRStorageGetMetadataTask enqueue]_block_invoke",
              "coverage": 0.9574468085106383
            },
            {
              "name": "__36-[FIRStorageGetMetadataTask enqueue]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__36-[FIRStorageGetMetadataTask enqueue]_block_invoke.48",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageUpdateMetadataTask.m",
          "coverage": 0.9865771812080537,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageUpdateMetadataTask initWithReference:fetcherService:dispatchQueue:metadata:completion:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageUpdateMetadataTask dealloc]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageUpdateMetadataTask enqueue]",
              "coverage": 1
            },
            {
              "name": "__39-[FIRStorageUpdateMetadataTask enqueue]_block_invoke",
              "coverage": 0.9636363636363636
            },
            {
              "name": "__39-[FIRStorageUpdateMetadataTask enqueue]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__39-[FIRStorageUpdateMetadataTask enqueue]_block_invoke.70",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageTokenAuthorizer.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageTokenAuthorizer initWithGoogleAppID:fetcherService:authProvider:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTokenAuthorizer authorizeRequest:delegate:didFinishSelector:]",
              "coverage": 1
            },
            {
              "name": "__73-[FIRStorageTokenAuthorizer authorizeRequest:delegate:didFinishSelector:]_block_invoke",
              "coverage": 1
            },
            {
              "name": "__73-[FIRStorageTokenAuthorizer authorizeRequest:delegate:didFinishSelector:]_block_invoke_2",
              "coverage": 1
            },
            {
              "name": "__73-[FIRStorageTokenAuthorizer authorizeRequest:delegate:didFinishSelector:]_block_invoke.54",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTokenAuthorizer stopAuthorization]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTokenAuthorizer stopAuthorizationForRequest:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTokenAuthorizer isAuthorizingRequest:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTokenAuthorizer isAuthorizedRequest:]",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageTokenAuthorizer userEmail]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRAppAssociationRegistration.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRAppAssociationRegistration registeredObjectWithHost:key:creationBlock:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "main.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "main",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRStorageComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "-[FIRStorageComponent initWithApp:]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageComponent load]",
              "coverage": 1
            },
            {
              "name": "+[FIRStorageComponent componentsToRegister]",
              "coverage": 1
            },
            {
              "name": "__43+[FIRStorageComponent componentsToRegister]_block_invoke",
              "coverage": 1
            },
            {
              "name": "-[FIRStorageComponent storageForBucket:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponentType.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponentType instanceForProtocol:inContainer:]",
              "coverage": 1
            }
          ]
        },
        {
          "name": "FIRComponent.m",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "+[FIRComponent componentWithProtocol:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "+[FIRComponent componentWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            },
            {
              "name": "-[FIRComponent initWithProtocol:instantiationTiming:dependencies:creationBlock:]",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "leveldb.framework",
      "coverage": 0.5077523967333413,
      "files": [
        {
          "name": "bloom.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::BloomHash(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::BloomFilterPolicy::BloomFilterPolicy(int)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::BloomFilterPolicy::Name() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::BloomFilterPolicy::CreateFilter(leveldb::Slice const*, int, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::BloomFilterPolicy::KeyMayMatch(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 0
            },
            {
              "name": "leveldb::NewBloomFilterPolicy(int)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "c.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb_comparator_t::~leveldb_comparator_t()",
              "coverage": 0
            },
            {
              "name": "leveldb_comparator_t::Compare(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 0
            },
            {
              "name": "leveldb_comparator_t::Name() const",
              "coverage": 0
            },
            {
              "name": "leveldb_comparator_t::FindShortestSeparator(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Slice const&amp;) const",
              "coverage": 0
            },
            {
              "name": "leveldb_comparator_t::FindShortSuccessor(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_t::~leveldb_filterpolicy_t()",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_t::Name() const",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_t::CreateFilter(leveldb::Slice const*, int, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_t::KeyMayMatch(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 0
            },
            {
              "name": "SaveError(char**, leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "CopyString(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb_open",
              "coverage": 0
            },
            {
              "name": "leveldb_close",
              "coverage": 0
            },
            {
              "name": "leveldb_put",
              "coverage": 0
            },
            {
              "name": "leveldb_delete",
              "coverage": 0
            },
            {
              "name": "leveldb_write",
              "coverage": 0
            },
            {
              "name": "leveldb_get",
              "coverage": 0
            },
            {
              "name": "leveldb_create_iterator",
              "coverage": 0
            },
            {
              "name": "leveldb_create_snapshot",
              "coverage": 0
            },
            {
              "name": "leveldb_release_snapshot",
              "coverage": 0
            },
            {
              "name": "leveldb_property_value",
              "coverage": 0
            },
            {
              "name": "leveldb_approximate_sizes",
              "coverage": 0
            },
            {
              "name": "leveldb_compact_range",
              "coverage": 0
            },
            {
              "name": "leveldb_destroy_db",
              "coverage": 0
            },
            {
              "name": "leveldb_repair_db",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_valid",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_seek_to_first",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_seek_to_last",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_seek",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_next",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_prev",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_key",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_value",
              "coverage": 0
            },
            {
              "name": "leveldb_iter_get_error",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_create",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_clear",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_put",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_delete",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_iterate",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_iterate::H::Put(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb_writebatch_iterate::H::Delete(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb_options_create",
              "coverage": 0
            },
            {
              "name": "leveldb_options_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_comparator",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_filter_policy",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_create_if_missing",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_error_if_exists",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_paranoid_checks",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_env",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_info_log",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_write_buffer_size",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_max_open_files",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_cache",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_block_size",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_block_restart_interval",
              "coverage": 0
            },
            {
              "name": "leveldb_options_set_compression",
              "coverage": 0
            },
            {
              "name": "leveldb_comparator_create",
              "coverage": 0
            },
            {
              "name": "leveldb_comparator_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create_bloom",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create_bloom::Wrapper::~Wrapper()",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create_bloom::Wrapper::Name() const",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create_bloom::Wrapper::CreateFilter(leveldb::Slice const*, int, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create_bloom::Wrapper::KeyMayMatch(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 0
            },
            {
              "name": "leveldb_filterpolicy_create_bloom::Wrapper::DoNothing(void*)",
              "coverage": 0
            },
            {
              "name": "leveldb_readoptions_create",
              "coverage": 0
            },
            {
              "name": "leveldb_readoptions_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_readoptions_set_verify_checksums",
              "coverage": 0
            },
            {
              "name": "leveldb_readoptions_set_fill_cache",
              "coverage": 0
            },
            {
              "name": "leveldb_readoptions_set_snapshot",
              "coverage": 0
            },
            {
              "name": "leveldb_writeoptions_create",
              "coverage": 0
            },
            {
              "name": "leveldb_writeoptions_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_writeoptions_set_sync",
              "coverage": 0
            },
            {
              "name": "leveldb_cache_create_lru",
              "coverage": 0
            },
            {
              "name": "leveldb_cache_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_create_default_env",
              "coverage": 0
            },
            {
              "name": "leveldb_env_destroy",
              "coverage": 0
            },
            {
              "name": "leveldb_free",
              "coverage": 0
            },
            {
              "name": "leveldb_major_version",
              "coverage": 0
            },
            {
              "name": "leveldb_minor_version",
              "coverage": 0
            }
          ]
        },
        {
          "name": "testutil.h",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::test::ErrorEnv::ErrorEnv()",
              "coverage": 0
            },
            {
              "name": "leveldb::test::ErrorEnv::NewWritableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::test::ErrorEnv::NewAppendableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "testutil.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::test::RandomString(leveldb::Random*, int, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0
            },
            {
              "name": "leveldb::test::RandomKey(leveldb::Random*, int)",
              "coverage": 0
            },
            {
              "name": "leveldb::test::CompressibleString(leveldb::Random*, double, unsigned long, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "testharness.h",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::test::Tester::Tester(char const*, int)",
              "coverage": 0
            },
            {
              "name": "leveldb::test::Tester::~Tester()",
              "coverage": 0
            },
            {
              "name": "leveldb::test::Tester::Is(bool, char const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::test::Tester::IsOk(leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::test::Tester&amp; leveldb::test::Tester::operator&lt;&lt;&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt;(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "block.h",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Block::size() const",
              "coverage": 0
            }
          ]
        },
        {
          "name": "testharness.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::test::RegisterTest(char const*, char const*, void (*)())",
              "coverage": 0
            },
            {
              "name": "leveldb::test::RunAllTests()",
              "coverage": 0
            },
            {
              "name": "leveldb::test::TmpDir()",
              "coverage": 0
            },
            {
              "name": "leveldb::test::RandomSeed()",
              "coverage": 0
            }
          ]
        },
        {
          "name": "dumpfile.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::GuessType(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::FileType*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::CorruptionReporter::Corruption(unsigned long, leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PrintLogContents(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, void (*)(unsigned long long, leveldb::Slice, leveldb::WritableFile*), leveldb::WritableFile*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::WriteBatchItemPrinter::Put(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::WriteBatchItemPrinter::Delete(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::WriteBatchPrinter(unsigned long long, leveldb::Slice, leveldb::WritableFile*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::DumpLog(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::VersionEditPrinter(unsigned long long, leveldb::Slice, leveldb::WritableFile*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::DumpDescriptor(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::DumpTable(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DumpFile(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile*)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "filter_block.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::FilterBlockBuilder::FilterBlockBuilder(leveldb::FilterPolicy const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::FilterBlockBuilder::StartBlock(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::FilterBlockBuilder::AddKey(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::FilterBlockBuilder::Finish()",
              "coverage": 0
            },
            {
              "name": "leveldb::FilterBlockBuilder::GenerateFilter()",
              "coverage": 0
            },
            {
              "name": "leveldb::FilterBlockReader::FilterBlockReader(leveldb::FilterPolicy const*, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::FilterBlockReader::KeyMayMatch(unsigned long long, leveldb::Slice const&amp;)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "histogram.h",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Histogram::Histogram()",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::~Histogram()",
              "coverage": 0
            }
          ]
        },
        {
          "name": "histogram.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Histogram::Clear()",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::Add(double)",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::Merge(leveldb::Histogram const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::Median() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::Percentile(double) const",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::Average() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::StandardDeviation() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Histogram::ToString() const",
              "coverage": 0
            }
          ]
        },
        {
          "name": "repair.cc",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::Repairer::Repairer(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Options const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::~Repairer()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::Run()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::FindFiles()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::ConvertLogFilesToTables()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::ConvertLogToTable(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::ConvertLogToTable(unsigned long long)::LogReporter::Corruption(unsigned long, leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::ExtractMetaData()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::NewTableIterator(leveldb::FileMetaData const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::ScanTable(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::RepairTable(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::(anonymous namespace)::Repairer::TableInfo)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::WriteDescriptor()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::Repairer::ArchiveFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::RepairDB(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Options const&amp;)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "env.h",
          "coverage": 0.10909090909090909,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Env::Env()",
              "coverage": 1
            },
            {
              "name": "leveldb::SequentialFile::SequentialFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::RandomAccessFile::RandomAccessFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::WritableFile::WritableFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::Logger::Logger()",
              "coverage": 1
            },
            {
              "name": "leveldb::FileLock::FileLock()",
              "coverage": 1
            },
            {
              "name": "leveldb::EnvWrapper::EnvWrapper(leveldb::Env*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::target() const",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::NewSequentialFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::SequentialFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::NewRandomAccessFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::RandomAccessFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::NewWritableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::NewAppendableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::FileExists(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::GetChildren(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt;*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::DeleteFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::CreateDir(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::DeleteDir(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::GetFileSize(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::RenameFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::LockFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::FileLock**)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::UnlockFile(leveldb::FileLock*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::Schedule(void (*)(void*), void*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::StartThread(void (*)(void*), void*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::GetTestDirectory(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::NewLogger(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Logger**)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::NowMicros()",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvWrapper::SleepForMicroseconds(int)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "snapshot.h",
          "coverage": 0.17391304347826086,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::SnapshotList::SnapshotList()",
              "coverage": 1
            },
            {
              "name": "leveldb::SnapshotList::empty() const",
              "coverage": 0
            },
            {
              "name": "leveldb::SnapshotList::oldest() const",
              "coverage": 0
            },
            {
              "name": "leveldb::SnapshotList::newest() const",
              "coverage": 0
            },
            {
              "name": "leveldb::SnapshotList::New(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::SnapshotList::Delete(leveldb::SnapshotImpl const*)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "port_posix.h",
          "coverage": 0.3076923076923077,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::port::Mutex::AssertHeld()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::Snappy_Compress(char const*, unsigned long, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 1
            },
            {
              "name": "leveldb::port::Snappy_GetUncompressedLength(char const*, unsigned long, unsigned long*)",
              "coverage": 0
            },
            {
              "name": "leveldb::port::Snappy_Uncompress(char const*, unsigned long, char*)",
              "coverage": 0
            },
            {
              "name": "leveldb::port::GetHeapProfile(void (*)(void*, char const*, int), void*)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "db.h",
          "coverage": 0.3333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Range::Range()",
              "coverage": 0
            },
            {
              "name": "leveldb::Range::Range(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::DB::DB()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "logging.cc",
          "coverage": 0.39215686274509803,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::AppendNumberTo(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::AppendEscapedStringTo(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::NumberToString(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::EscapeString(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::ConsumeDecimalNumber(leveldb::Slice*, unsigned long long*)",
              "coverage": 0.8695652173913043
            }
          ]
        },
        {
          "name": "dbformat.cc",
          "coverage": 0.4247787610619469,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::PackSequenceAndType(unsigned long long, leveldb::ValueType)",
              "coverage": 1
            },
            {
              "name": "leveldb::AppendInternalKey(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::ParsedInternalKey const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::ParsedInternalKey::DebugString() const",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalKey::DebugString() const",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalKeyComparator::Name() const",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalKeyComparator::Compare(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKeyComparator::FindShortestSeparator(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Slice const&amp;) const",
              "coverage": 0.5625
            },
            {
              "name": "leveldb::InternalKeyComparator::FindShortSuccessor(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalFilterPolicy::Name() const",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalFilterPolicy::CreateFilter(leveldb::Slice const*, int, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalFilterPolicy::KeyMayMatch(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 0
            },
            {
              "name": "leveldb::LookupKey::LookupKey(leveldb::Slice const&amp;, unsigned long long)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "iterator.cc",
          "coverage": 0.4444444444444444,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Iterator::Iterator()",
              "coverage": 1
            },
            {
              "name": "leveldb::Iterator::~Iterator()",
              "coverage": 0.5454545454545454
            },
            {
              "name": "leveldb::Iterator::RegisterCleanup(void (*)(void*, void*), void*, void*)",
              "coverage": 0.7142857142857143
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::EmptyIterator(leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::Valid() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::Seek(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::SeekToFirst()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::Next()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::key() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::value() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::EmptyIterator::status() const",
              "coverage": 0
            },
            {
              "name": "leveldb::NewEmptyIterator()",
              "coverage": 0
            },
            {
              "name": "leveldb::NewErrorIterator(leveldb::Status const&amp;)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "table.cc",
          "coverage": 0.4458874458874459,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Table::Rep::~Rep()",
              "coverage": 1
            },
            {
              "name": "leveldb::Table::Open(leveldb::Options const&amp;, leveldb::RandomAccessFile*, unsigned long long, leveldb::Table**)",
              "coverage": 0.8775510204081632
            },
            {
              "name": "leveldb::Table::ReadMeta(leveldb::Footer const&amp;)",
              "coverage": 0.14285714285714285
            },
            {
              "name": "leveldb::Table::ReadFilter(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Table::~Table()",
              "coverage": 1
            },
            {
              "name": "leveldb::DeleteBlock(void*, void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DeleteCachedBlock(leveldb::Slice const&amp;, void*)",
              "coverage": 0
            },
            {
              "name": "leveldb::ReleaseBlock(void*, void*)",
              "coverage": 0
            },
            {
              "name": "leveldb::Table::BlockReader(void*, leveldb::ReadOptions const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0.7547169811320755
            },
            {
              "name": "leveldb::Table::NewIterator(leveldb::ReadOptions const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::Table::InternalGet(leveldb::ReadOptions const&amp;, leveldb::Slice const&amp;, void*, void (*)(void*, leveldb::Slice const&amp;, leveldb::Slice const&amp;))",
              "coverage": 0
            },
            {
              "name": "leveldb::Table::ApproximateOffsetOf(leveldb::Slice const&amp;) const",
              "coverage": 0
            }
          ]
        },
        {
          "name": "db_impl.cc",
          "coverage": 0.4696969696969697,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::DBImpl::Writer::Writer(leveldb::port::Mutex*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::CompactionState::current_output()",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::CompactionState::CompactionState(leveldb::Compaction*)",
              "coverage": 0
            },
            {
              "name": "Definition at 86:57",
              "coverage": 1
            },
            {
              "name": "leveldb::SanitizeOptions(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::InternalKeyComparator const*, leveldb::InternalFilterPolicy const*, leveldb::Options const&amp;)",
              "coverage": 0.8695652173913043
            },
            {
              "name": "leveldb::DBImpl::DBImpl(leveldb::Options const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::~DBImpl()",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::NewDB()",
              "coverage": 0.8709677419354839
            },
            {
              "name": "leveldb::DBImpl::MaybeIgnoreError(leveldb::Status*) const",
              "coverage": 0.625
            },
            {
              "name": "leveldb::DBImpl::DeleteObsoleteFiles()",
              "coverage": 0.8181818181818182
            },
            {
              "name": "leveldb::DBImpl::Recover(leveldb::VersionEdit*, bool*)",
              "coverage": 0.7777777777777778
            },
            {
              "name": "leveldb::DBImpl::RecoverLogFile(unsigned long long, bool, bool*, leveldb::VersionEdit*, unsigned long long*)",
              "coverage": 0.7333333333333333
            },
            {
              "name": "leveldb::DBImpl::RecoverLogFile(unsigned long long, bool, bool*, leveldb::VersionEdit*, unsigned long long*)::LogReporter::Corruption(unsigned long, leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::WriteLevel0Table(leveldb::MemTable*, leveldb::VersionEdit*, leveldb::Version*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::CompactMemTable()",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::CompactRange(leveldb::Slice const*, leveldb::Slice const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::TEST_CompactRange(int, leveldb::Slice const*, leveldb::Slice const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::TEST_CompactMemTable()",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::RecordBackgroundError(leveldb::Status const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::MaybeScheduleCompaction()",
              "coverage": 0.8823529411764706
            },
            {
              "name": "leveldb::DBImpl::BGWork(void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::BackgroundCall()",
              "coverage": 0.8888888888888888
            },
            {
              "name": "leveldb::DBImpl::BackgroundCompaction()",
              "coverage": 0.08333333333333333
            },
            {
              "name": "leveldb::DBImpl::CleanupCompaction(leveldb::DBImpl::CompactionState*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::OpenCompactionOutputFile(leveldb::DBImpl::CompactionState*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::FinishCompactionOutputFile(leveldb::DBImpl::CompactionState*, leveldb::Iterator*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::InstallCompactionResults(leveldb::DBImpl::CompactionState*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::DoCompactionWork(leveldb::DBImpl::CompactionState*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::CleanupIteratorState(void*, void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::NewInternalIterator(leveldb::ReadOptions const&amp;, unsigned long long*, unsigned int*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::TEST_NewInternalIterator()",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::TEST_MaxNextLevelOverlappingBytes()",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::Get(leveldb::ReadOptions const&amp;, leveldb::Slice const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::NewIterator(leveldb::ReadOptions const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::RecordReadSample(leveldb::Slice)",
              "coverage": 0.6666666666666666
            },
            {
              "name": "leveldb::DBImpl::GetSnapshot()",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::ReleaseSnapshot(leveldb::Snapshot const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::Put(leveldb::WriteOptions const&amp;, leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::Delete(leveldb::WriteOptions const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::Write(leveldb::WriteOptions const&amp;, leveldb::WriteBatch*)",
              "coverage": 0.7222222222222222
            },
            {
              "name": "leveldb::DBImpl::BuildBatchGroup(leveldb::DBImpl::Writer**)",
              "coverage": 0.4782608695652174
            },
            {
              "name": "leveldb::DBImpl::MakeRoomForWrite(bool)",
              "coverage": 0.6774193548387096
            },
            {
              "name": "leveldb::DBImpl::GetProperty(leveldb::Slice const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DBImpl::GetApproximateSizes(leveldb::Range const*, int, unsigned long long*)",
              "coverage": 0
            },
            {
              "name": "leveldb::DB::Put(leveldb::WriteOptions const&amp;, leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DB::Delete(leveldb::WriteOptions const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DB::~DB()",
              "coverage": 1
            },
            {
              "name": "leveldb::DB::Open(leveldb::Options const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::DB**)",
              "coverage": 1
            },
            {
              "name": "leveldb::Snapshot::~Snapshot()",
              "coverage": 1
            },
            {
              "name": "leveldb::DestroyDB(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Options const&amp;)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "log_reader.cc",
          "coverage": 0.47580645161290325,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::log::Reader::Reporter::~Reporter()",
              "coverage": 1
            },
            {
              "name": "leveldb::log::Reader::Reader(leveldb::SequentialFile*, leveldb::log::Reader::Reporter*, bool, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::log::Reader::~Reader()",
              "coverage": 1
            },
            {
              "name": "leveldb::log::Reader::SkipToInitialBlock()",
              "coverage": 0
            },
            {
              "name": "leveldb::log::Reader::ReadRecord(leveldb::Slice*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0.4959349593495935
            },
            {
              "name": "leveldb::log::Reader::LastRecordOffset()",
              "coverage": 0
            },
            {
              "name": "leveldb::log::Reader::ReportCorruption(unsigned long long, char const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::log::Reader::ReportDrop(unsigned long long, leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::log::Reader::ReadPhysicalRecord(leveldb::Slice*)",
              "coverage": 0.6024096385542169
            }
          ]
        },
        {
          "name": "merger.cc",
          "coverage": 0.48936170212765956,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::MergingIterator(leveldb::Comparator const*, leveldb::Iterator**, int)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::~MergingIterator()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::Seek(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::Next()",
              "coverage": 0.52
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::status() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::FindSmallest()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MergingIterator::FindLargest()",
              "coverage": 0
            },
            {
              "name": "leveldb::NewMergingIterator(leveldb::Comparator const*, leveldb::Iterator**, int)",
              "coverage": 0.9
            }
          ]
        },
        {
          "name": "version_set.cc",
          "coverage": 0.4955022488755622,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::TargetFileSize(leveldb::Options const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::MaxGrandParentOverlapBytes(leveldb::Options const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::ExpandedCompactionByteSizeLimit(leveldb::Options const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::MaxBytesForLevel(leveldb::Options const*, int)",
              "coverage": 1
            },
            {
              "name": "leveldb::MaxFileSizeForLevel(leveldb::Options const*, int)",
              "coverage": 0
            },
            {
              "name": "leveldb::TotalFileSize(std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::~Version()",
              "coverage": 1
            },
            {
              "name": "leveldb::FindFile(leveldb::InternalKeyComparator const&amp;, std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::AfterFile(leveldb::Comparator const*, leveldb::Slice const*, leveldb::FileMetaData const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::BeforeFile(leveldb::Comparator const*, leveldb::Slice const*, leveldb::FileMetaData const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::SomeFileOverlapsRange(leveldb::InternalKeyComparator const&amp;, bool, std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const&amp;, leveldb::Slice const*, leveldb::Slice const*)",
              "coverage": 0.6451612903225806
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::LevelFileNumIterator(leveldb::InternalKeyComparator const&amp;, std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::Seek(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::Next()",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::LevelFileNumIterator::status() const",
              "coverage": 0
            },
            {
              "name": "leveldb::GetFileIterator(void*, leveldb::ReadOptions const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0.8181818181818182
            },
            {
              "name": "leveldb::Version::NewConcatenatingIterator(leveldb::ReadOptions const&amp;, int) const",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::AddIterators(leveldb::ReadOptions const&amp;, std::__1::vector&lt;leveldb::Iterator*, std::__1::allocator&lt;leveldb::Iterator*&gt; &gt;*)",
              "coverage": 0.7647058823529411
            },
            {
              "name": "leveldb::SaveValue(void*, leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::NewestFirst(leveldb::FileMetaData*, leveldb::FileMetaData*)",
              "coverage": 0
            },
            {
              "name": "leveldb::Version::ForEachOverlapping(leveldb::Slice, leveldb::Slice, void*, bool (*)(void*, int, leveldb::FileMetaData*))",
              "coverage": 0.6190476190476191
            },
            {
              "name": "leveldb::Version::Get(leveldb::ReadOptions const&amp;, leveldb::LookupKey const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Version::GetStats*)",
              "coverage": 0
            },
            {
              "name": "leveldb::Version::UpdateStats(leveldb::Version::GetStats const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Version::RecordReadSample(leveldb::Slice)",
              "coverage": 0.8648648648648649
            },
            {
              "name": "leveldb::Version::RecordReadSample(leveldb::Slice)::State::Match(void*, int, leveldb::FileMetaData*)",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::Ref()",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::Unref()",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::OverlapInLevel(int, leveldb::Slice const*, leveldb::Slice const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::Version::PickLevelForMemTableOutput(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0.84
            },
            {
              "name": "leveldb::Version::GetOverlappingInputs(int, leveldb::InternalKey const*, leveldb::InternalKey const*, std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt;*)",
              "coverage": 0.5526315789473685
            },
            {
              "name": "leveldb::Version::DebugString() const",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::Builder::BySmallestKey::operator()(leveldb::FileMetaData*, leveldb::FileMetaData*) const",
              "coverage": 0.6666666666666666
            },
            {
              "name": "leveldb::VersionSet::Builder::Builder(leveldb::VersionSet*, leveldb::Version*)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::Builder::~Builder()",
              "coverage": 0.9
            },
            {
              "name": "leveldb::VersionSet::Builder::Apply(leveldb::VersionEdit*)",
              "coverage": 0.8181818181818182
            },
            {
              "name": "leveldb::VersionSet::Builder::SaveTo(leveldb::Version*)",
              "coverage": 0.7659574468085106
            },
            {
              "name": "leveldb::VersionSet::Builder::MaybeAddFile(leveldb::Version*, int, leveldb::FileMetaData*)",
              "coverage": 0.6428571428571429
            },
            {
              "name": "leveldb::VersionSet::VersionSet(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Options const*, leveldb::TableCache*, leveldb::InternalKeyComparator const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::~VersionSet()",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::AppendVersion(leveldb::Version*)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::LogAndApply(leveldb::VersionEdit*, leveldb::port::Mutex*)",
              "coverage": 0.8214285714285714
            },
            {
              "name": "leveldb::VersionSet::Recover(bool*)",
              "coverage": 0.8925619834710744
            },
            {
              "name": "leveldb::VersionSet::Recover(bool*)::LogReporter::Corruption(unsigned long, leveldb::Status const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::ReuseManifest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0.13793103448275862
            },
            {
              "name": "leveldb::VersionSet::MarkFileNumberUsed(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::Finalize(leveldb::Version*)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::WriteSnapshot(leveldb::log::Writer*)",
              "coverage": 0.8620689655172413
            },
            {
              "name": "leveldb::VersionSet::NumLevelFiles(int) const",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::LevelSummary(leveldb::VersionSet::LevelSummaryStorage*) const",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::ApproximateOffsetOf(leveldb::Version*, leveldb::InternalKey const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::AddLiveFiles(std::__1::set&lt;unsigned long long, std::__1::less&lt;unsigned long long&gt;, std::__1::allocator&lt;unsigned long long&gt; &gt;*)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::NumLevelBytes(int) const",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::MaxNextLevelOverlappingBytes()",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::GetRange(std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const&amp;, leveldb::InternalKey*, leveldb::InternalKey*)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::GetRange2(std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const&amp;, std::__1::vector&lt;leveldb::FileMetaData*, std::__1::allocator&lt;leveldb::FileMetaData*&gt; &gt; const&amp;, leveldb::InternalKey*, leveldb::InternalKey*)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::MakeInputIterator(leveldb::Compaction*)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::PickCompaction()",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::SetupOtherInputs(leveldb::Compaction*)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::CompactRange(int, leveldb::InternalKey const*, leveldb::InternalKey const*)",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::Compaction(leveldb::Options const*, int)",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::~Compaction()",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::IsTrivialMove() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::AddInputDeletions(leveldb::VersionEdit*)",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::IsBaseLevelForKey(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::ShouldStopBefore(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::ReleaseInputs()",
              "coverage": 0
            }
          ]
        },
        {
          "name": "cache.h",
          "coverage": 0.5,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Cache::Cache()",
              "coverage": 1
            },
            {
              "name": "leveldb::Cache::Prune()",
              "coverage": 0
            }
          ]
        },
        {
          "name": "db_iter.cc",
          "coverage": 0.5145631067961165,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::DBIter::DBIter(leveldb::DBImpl*, leveldb::Comparator const*, leveldb::Iterator*, unsigned long long, unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::~DBIter()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::status() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::SaveKey(leveldb::Slice const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::ClearSavedValue()",
              "coverage": 0.75
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::RandomPeriod()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::ParseKey(leveldb::ParsedInternalKey*)",
              "coverage": 0.8666666666666667
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::Next()",
              "coverage": 0.46153846153846156
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::FindNextUserEntry(bool, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::FindPrevUserEntry()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::Seek(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::SeekToFirst()",
              "coverage": 0.8
            },
            {
              "name": "leveldb::(anonymous namespace)::DBIter::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::NewDBIterator(leveldb::DBImpl*, leveldb::Comparator const*, leveldb::Iterator*, unsigned long long, unsigned int)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "version_edit.cc",
          "coverage": 0.5854700854700855,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::VersionEdit::Clear()",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::EncodeTo(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 0.8260869565217391
            },
            {
              "name": "leveldb::GetInternalKey(leveldb::Slice*, leveldb::InternalKey*)",
              "coverage": 0.7777777777777778
            },
            {
              "name": "leveldb::GetLevel(leveldb::Slice*, int*)",
              "coverage": 0.8
            },
            {
              "name": "leveldb::VersionEdit::DecodeFrom(leveldb::Slice const&amp;)",
              "coverage": 0.6862745098039216
            },
            {
              "name": "leveldb::VersionEdit::DebugString() const",
              "coverage": 0
            }
          ]
        },
        {
          "name": "version_set.h",
          "coverage": 0.5925925925925926,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Version::NumFiles(int) const",
              "coverage": 0
            },
            {
              "name": "leveldb::Version::Version(leveldb::VersionSet*)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::current() const",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::ManifestFileNumber() const",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::NewFileNumber()",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::ReuseFileNumber(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionSet::LastSequence() const",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::SetLastSequence(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::LogNumber() const",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::PrevLogNumber() const",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionSet::NeedsCompaction() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Compaction::level() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::edit()",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::num_input_files(int) const",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::input(int, int) const",
              "coverage": 0
            },
            {
              "name": "leveldb::Compaction::MaxOutputFileSize() const",
              "coverage": 0
            }
          ]
        },
        {
          "name": "dbformat.h",
          "coverage": 0.6037735849056604,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::ParsedInternalKey::ParsedInternalKey()",
              "coverage": 1
            },
            {
              "name": "leveldb::ParsedInternalKey::ParsedInternalKey(leveldb::Slice const&amp;, unsigned long long const&amp;, leveldb::ValueType)",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKeyEncodingLength(leveldb::ParsedInternalKey const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::ExtractUserKey(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::ExtractValueType(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalKeyComparator::InternalKeyComparator(leveldb::Comparator const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKeyComparator::user_comparator() const",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalFilterPolicy::InternalFilterPolicy(leveldb::FilterPolicy const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKey::InternalKey()",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKey::InternalKey(leveldb::Slice const&amp;, unsigned long long, leveldb::ValueType)",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKey::DecodeFrom(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKey::Encode() const",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKey::user_key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::InternalKey::SetFrom(leveldb::ParsedInternalKey const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalKey::Clear()",
              "coverage": 0
            },
            {
              "name": "leveldb::InternalKeyComparator::Compare(leveldb::InternalKey const&amp;, leveldb::InternalKey const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::ParseInternalKey(leveldb::Slice const&amp;, leveldb::ParsedInternalKey*)",
              "coverage": 1
            },
            {
              "name": "leveldb::LookupKey::memtable_key() const",
              "coverage": 0
            },
            {
              "name": "leveldb::LookupKey::internal_key() const",
              "coverage": 0
            },
            {
              "name": "leveldb::LookupKey::user_key() const",
              "coverage": 0
            },
            {
              "name": "leveldb::LookupKey::~LookupKey()",
              "coverage": 0
            }
          ]
        },
        {
          "name": "memtable.cc",
          "coverage": 0.6161616161616161,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::GetLengthPrefixedSlice(char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::MemTable(leveldb::InternalKeyComparator const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::~MemTable()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::ApproximateMemoryUsage()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::KeyComparator::operator()(char const*, char const*) const",
              "coverage": 1
            },
            {
              "name": "leveldb::EncodeKey(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::MemTableIterator(leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;*)",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::Seek(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::MemTableIterator::Next()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::MemTableIterator::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTableIterator::status() const",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::NewIterator()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::Add(unsigned long long, leveldb::ValueType, leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::Get(leveldb::LookupKey const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Status*)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "status.h",
          "coverage": 0.631578947368421,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Status::Status()",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::~Status()",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::OK()",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::NotFound(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::Corruption(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::NotSupported(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::InvalidArgument(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IOError(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::ok() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::IsNotFound() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsCorruption() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsIOError() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsNotSupportedError() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::IsInvalidArgument() const",
              "coverage": 0
            },
            {
              "name": "leveldb::Status::code() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::Status(leveldb::Status const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::operator=(leveldb::Status const&amp;)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "block.cc",
          "coverage": 0.6354166666666666,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Block::NumRestarts() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Block(leveldb::BlockContents const&amp;)",
              "coverage": 0.7692307692307693
            },
            {
              "name": "leveldb::Block::~Block()",
              "coverage": 0.6
            },
            {
              "name": "leveldb::DecodeEntry(char const*, char const*, unsigned int*, unsigned int*, unsigned int*)",
              "coverage": 0.8947368421052632
            },
            {
              "name": "leveldb::Block::Iter::Compare(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::NextEntryOffset() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::GetRestartPoint(unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::SeekToRestartPoint(unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::Iter(leveldb::Comparator const*, char const*, unsigned int, unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::status() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::Next()",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::Block::Iter::Seek(leveldb::Slice const&amp;)",
              "coverage": 0.41025641025641024
            },
            {
              "name": "leveldb::Block::Iter::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::Block::Iter::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::Block::Iter::CorruptionError()",
              "coverage": 0
            },
            {
              "name": "leveldb::Block::Iter::ParseNextKey()",
              "coverage": 0.8571428571428571
            },
            {
              "name": "leveldb::Block::NewIterator(leveldb::Comparator const*)",
              "coverage": 0.7272727272727273
            }
          ]
        },
        {
          "name": "table_cache.cc",
          "coverage": 0.6470588235294118,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::DeleteEntry(leveldb::Slice const&amp;, void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::UnrefEntry(void*, void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::TableCache::TableCache(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Options const*, int)",
              "coverage": 1
            },
            {
              "name": "leveldb::TableCache::~TableCache()",
              "coverage": 1
            },
            {
              "name": "leveldb::TableCache::FindTable(unsigned long long, unsigned long long, leveldb::Cache::Handle**)",
              "coverage": 0.7428571428571429
            },
            {
              "name": "leveldb::TableCache::NewIterator(leveldb::ReadOptions const&amp;, unsigned long long, unsigned long long, leveldb::Table**)",
              "coverage": 0.6842105263157895
            },
            {
              "name": "leveldb::TableCache::Get(leveldb::ReadOptions const&amp;, unsigned long long, unsigned long long, leveldb::Slice const&amp;, void*, void (*)(void*, leveldb::Slice const&amp;, leveldb::Slice const&amp;))",
              "coverage": 0
            },
            {
              "name": "leveldb::TableCache::Evict(unsigned long long)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "env_posix.cc",
          "coverage": 0.6597077244258872,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::IOError(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, int)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::Limiter::Limiter(long)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::Limiter::Acquire()",
              "coverage": 0.7692307692307693
            },
            {
              "name": "leveldb::(anonymous namespace)::Limiter::Release()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::Limiter::GetAllowed() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::Limiter::SetAllowed(long)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixSequentialFile::PosixSequentialFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, __sFILE*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixSequentialFile::~PosixSequentialFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixSequentialFile::Read(unsigned long, leveldb::Slice*, char*)",
              "coverage": 0.7857142857142857
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixSequentialFile::Skip(unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixRandomAccessFile::PosixRandomAccessFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, int, leveldb::(anonymous namespace)::Limiter*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixRandomAccessFile::~PosixRandomAccessFile()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixRandomAccessFile::Read(unsigned long long, unsigned long, leveldb::Slice*, char*) const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixMmapReadableFile::PosixMmapReadableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, void*, unsigned long, leveldb::(anonymous namespace)::Limiter*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixMmapReadableFile::~PosixMmapReadableFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixMmapReadableFile::Read(unsigned long long, unsigned long, leveldb::Slice*, char*) const",
              "coverage": 0.8
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::PosixWritableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, __sFILE*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::~PosixWritableFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::Append(leveldb::Slice const&amp;)",
              "coverage": 0.7142857142857143
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::Close()",
              "coverage": 0.75
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::Flush()",
              "coverage": 0.6666666666666666
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::SyncDirIfManifest()",
              "coverage": 0.8076923076923077
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixWritableFile::Sync()",
              "coverage": 0.6666666666666666
            },
            {
              "name": "leveldb::(anonymous namespace)::LockOrUnlock(int, bool)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixLockTable::Insert(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixLockTable::Remove(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::~PosixEnv()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::NewSequentialFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::SequentialFile**)",
              "coverage": 0.8
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::NewRandomAccessFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::RandomAccessFile**)",
              "coverage": 0.7307692307692307
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::NewWritableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0.8181818181818182
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::NewAppendableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::FileExists(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::GetChildren(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt;*)",
              "coverage": 0.8461538461538461
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::DeleteFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0.7142857142857143
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::CreateDir(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::DeleteDir(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::GetFileSize(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long*)",
              "coverage": 0.8181818181818182
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::RenameFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::LockFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::FileLock**)",
              "coverage": 0.7142857142857143
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::UnlockFile(leveldb::FileLock*)",
              "coverage": 0.8181818181818182
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::GetTestDirectory(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::gettid()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::NewLogger(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Logger**)",
              "coverage": 0.8
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::NowMicros()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::SleepForMicroseconds(int)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::PthreadCall(char const*, int)",
              "coverage": 0.5
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::BGThreadWrapper(void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MaxMmaps()",
              "coverage": 0.75
            },
            {
              "name": "leveldb::(anonymous namespace)::MaxOpenFiles()",
              "coverage": 0.6875
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::PosixEnv()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::Schedule(void (*)(void*), void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::BGThread()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::StartThreadWrapper(void*)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::PosixEnv::StartThread(void (*)(void*), void*)",
              "coverage": 0
            },
            {
              "name": "leveldb::InitDefaultEnv()",
              "coverage": 1
            },
            {
              "name": "leveldb::EnvPosixTestHelper::SetReadOnlyFDLimit(int)",
              "coverage": 0
            },
            {
              "name": "leveldb::EnvPosixTestHelper::SetReadOnlyMMapLimit(int)",
              "coverage": 0
            },
            {
              "name": "leveldb::Env::Default()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "format.cc",
          "coverage": 0.6611570247933884,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::BlockHandle::EncodeTo(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockHandle::DecodeFrom(leveldb::Slice*)",
              "coverage": 0.75
            },
            {
              "name": "leveldb::Footer::EncodeTo(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 1
            },
            {
              "name": "leveldb::Footer::DecodeFrom(leveldb::Slice*)",
              "coverage": 0.9047619047619048
            },
            {
              "name": "leveldb::ReadBlock(leveldb::RandomAccessFile*, leveldb::ReadOptions const&amp;, leveldb::BlockHandle const&amp;, leveldb::BlockContents*)",
              "coverage": 0.5066666666666667
            }
          ]
        },
        {
          "name": "hash.cc",
          "coverage": 0.6875,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Hash(char const*, unsigned long, unsigned int)",
              "coverage": 0.6875
            }
          ]
        },
        {
          "name": "cache.cc",
          "coverage": 0.6882591093117408,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Cache::~Cache()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUHandle::key() const",
              "coverage": 0.8888888888888888
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::HandleTable()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::~HandleTable()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::Lookup(leveldb::Slice const&amp;, unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::Insert(leveldb::(anonymous namespace)::LRUHandle*)",
              "coverage": 0.7333333333333333
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::Remove(leveldb::Slice const&amp;, unsigned int)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::FindPointer(leveldb::Slice const&amp;, unsigned int)",
              "coverage": 0.75
            },
            {
              "name": "leveldb::(anonymous namespace)::HandleTable::Resize()",
              "coverage": 0.48
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::SetCapacity(unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::TotalCharge() const",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::LRUCache()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::~LRUCache()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Ref(leveldb::(anonymous namespace)::LRUHandle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Unref(leveldb::(anonymous namespace)::LRUHandle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::LRU_Remove(leveldb::(anonymous namespace)::LRUHandle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::LRU_Append(leveldb::(anonymous namespace)::LRUHandle*, leveldb::(anonymous namespace)::LRUHandle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Lookup(leveldb::Slice const&amp;, unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Release(leveldb::Cache::Handle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Insert(leveldb::Slice const&amp;, unsigned int, void*, unsigned long, void (*)(leveldb::Slice const&amp;, void*))",
              "coverage": 0.7878787878787878
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::FinishErase(leveldb::(anonymous namespace)::LRUHandle*)",
              "coverage": 0.4
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Erase(leveldb::Slice const&amp;, unsigned int)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::LRUCache::Prune()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::HashSlice(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Shard(unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::ShardedLRUCache(unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::~ShardedLRUCache()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Insert(leveldb::Slice const&amp;, void*, unsigned long, void (*)(leveldb::Slice const&amp;, void*))",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Lookup(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Release(leveldb::Cache::Handle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Erase(leveldb::Slice const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Value(leveldb::Cache::Handle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::NewId()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::Prune()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::ShardedLRUCache::TotalCharge() const",
              "coverage": 0
            },
            {
              "name": "leveldb::NewLRUCache(unsigned long)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "skiplist.h",
          "coverage": 0.7142857142857143,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::GetMaxHeight() const",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Equal(char const* const&amp;, char const* const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node::Node(char const* const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node::Next(int)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node::SetNext(int, leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node*)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node::NoBarrier_Next(int)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node::NoBarrier_SetNext(int, leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node*)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::NewNode(char const* const&amp;, int)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::Iterator(leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt; const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::Next()",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::Seek(char const* const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Iterator::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::RandomHeight()",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::KeyIsAfterNode(char const* const&amp;, leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node*) const",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::FindGreaterOrEqual(char const* const&amp;, leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Node**) const",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::FindLessThan(char const* const&amp;) const",
              "coverage": 0
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::FindLast() const",
              "coverage": 0
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::SkipList(leveldb::MemTable::KeyComparator, leveldb::Arena*)",
              "coverage": 1
            },
            {
              "name": "leveldb::SkipList&lt;char const*, leveldb::MemTable::KeyComparator&gt;::Insert(char const* const&amp;)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "two_level_iterator.cc",
          "coverage": 0.7352941176470589,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::status() const",
              "coverage": 0.8
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::SaveError(leveldb::Status const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::TwoLevelIterator(leveldb::Iterator*, leveldb::Iterator* (*)(void*, leveldb::ReadOptions const&amp;, leveldb::Slice const&amp;), void*, leveldb::ReadOptions const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::~TwoLevelIterator()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::Seek(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::Next()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksForward()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::SkipEmptyDataBlocksBackward()",
              "coverage": 0
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::SetDataIterator(leveldb::Iterator*)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::TwoLevelIterator::InitDataBlock()",
              "coverage": 0.8666666666666667
            },
            {
              "name": "leveldb::NewTwoLevelIterator(leveldb::Iterator*, leveldb::Iterator* (*)(void*, leveldb::ReadOptions const&amp;, leveldb::Slice const&amp;), void*, leveldb::ReadOptions const&amp;)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "random.h",
          "coverage": 0.75,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Random::Random(unsigned int)",
              "coverage": 0.6666666666666666
            },
            {
              "name": "leveldb::Random::Next()",
              "coverage": 0.9047619047619048
            },
            {
              "name": "leveldb::Random::Uniform(int)",
              "coverage": 1
            },
            {
              "name": "leveldb::Random::OneIn(int)",
              "coverage": 0
            },
            {
              "name": "leveldb::Random::Skewed(int)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "env.cc",
          "coverage": 0.7567567567567568,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Env::~Env()",
              "coverage": 0
            },
            {
              "name": "leveldb::Env::NewAppendableFile(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::WritableFile**)",
              "coverage": 0
            },
            {
              "name": "leveldb::SequentialFile::~SequentialFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::RandomAccessFile::~RandomAccessFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::WritableFile::~WritableFile()",
              "coverage": 1
            },
            {
              "name": "leveldb::Logger::~Logger()",
              "coverage": 1
            },
            {
              "name": "leveldb::FileLock::~FileLock()",
              "coverage": 1
            },
            {
              "name": "leveldb::Log(leveldb::Logger*, char const*, ...)",
              "coverage": 1
            },
            {
              "name": "leveldb::DoWriteStringToFile(leveldb::Env*, leveldb::Slice const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, bool)",
              "coverage": 0.7894736842105263
            },
            {
              "name": "leveldb::WriteStringToFile(leveldb::Env*, leveldb::Slice const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::WriteStringToFileSync(leveldb::Env*, leveldb::Slice const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::ReadFileToString(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*)",
              "coverage": 0.8333333333333334
            },
            {
              "name": "leveldb::EnvWrapper::~EnvWrapper()",
              "coverage": 0
            }
          ]
        },
        {
          "name": "port_posix.cc",
          "coverage": 0.7692307692307693,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::port::PthreadCall(char const*, int)",
              "coverage": 0.5
            },
            {
              "name": "leveldb::port::Mutex::Mutex()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::Mutex::~Mutex()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::Mutex::Lock()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::Mutex::Unlock()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::CondVar::CondVar(leveldb::port::Mutex*)",
              "coverage": 1
            },
            {
              "name": "leveldb::port::CondVar::~CondVar()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::CondVar::Wait()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::CondVar::Signal()",
              "coverage": 0
            },
            {
              "name": "leveldb::port::CondVar::SignalAll()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::InitOnce(_opaque_pthread_once_t*, void (*)())",
              "coverage": 1
            }
          ]
        },
        {
          "name": "status.cc",
          "coverage": 0.7704918032786885,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Status::CopyState(char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::Status(leveldb::Status::Code, leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Status::ToString() const",
              "coverage": 0.631578947368421
            }
          ]
        },
        {
          "name": "table_builder.cc",
          "coverage": 0.7846153846153846,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::TableBuilder::Rep::Rep(leveldb::Options const&amp;, leveldb::WritableFile*)",
              "coverage": 1
            },
            {
              "name": "leveldb::TableBuilder::TableBuilder(leveldb::Options const&amp;, leveldb::WritableFile*)",
              "coverage": 0.6
            },
            {
              "name": "leveldb::TableBuilder::~TableBuilder()",
              "coverage": 1
            },
            {
              "name": "leveldb::TableBuilder::ChangeOptions(leveldb::Options const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::TableBuilder::Add(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 0.9333333333333333
            },
            {
              "name": "leveldb::TableBuilder::Flush()",
              "coverage": 0.8666666666666667
            },
            {
              "name": "leveldb::TableBuilder::WriteBlock(leveldb::BlockBuilder*, leveldb::BlockHandle*)",
              "coverage": 0.9142857142857143
            },
            {
              "name": "leveldb::TableBuilder::WriteRawBlock(leveldb::Slice const&amp;, leveldb::CompressionType, leveldb::BlockHandle*)",
              "coverage": 1
            },
            {
              "name": "leveldb::TableBuilder::status() const",
              "coverage": 1
            },
            {
              "name": "leveldb::TableBuilder::Finish()",
              "coverage": 0.8214285714285714
            },
            {
              "name": "leveldb::TableBuilder::Abandon()",
              "coverage": 0
            },
            {
              "name": "leveldb::TableBuilder::NumEntries() const",
              "coverage": 0
            },
            {
              "name": "leveldb::TableBuilder::FileSize() const",
              "coverage": 1
            }
          ]
        },
        {
          "name": "coding.cc",
          "coverage": 0.8132530120481928,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::EncodeFixed32(char*, unsigned int)",
              "coverage": 0.5
            },
            {
              "name": "leveldb::EncodeFixed64(char*, unsigned long long)",
              "coverage": 0.35714285714285715
            },
            {
              "name": "leveldb::PutFixed32(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::PutFixed64(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::EncodeVarint32(char*, unsigned int)",
              "coverage": 0.7777777777777778
            },
            {
              "name": "leveldb::PutVarint32(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::EncodeVarint64(char*, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::PutVarint64(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::PutLengthPrefixedSlice(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::VarintLength(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::GetVarint32PtrFallback(char const*, char const*, unsigned int*)",
              "coverage": 1
            },
            {
              "name": "leveldb::GetVarint32(leveldb::Slice*, unsigned int*)",
              "coverage": 1
            },
            {
              "name": "leveldb::GetVarint64Ptr(char const*, char const*, unsigned long long*)",
              "coverage": 1
            },
            {
              "name": "leveldb::GetVarint64(leveldb::Slice*, unsigned long long*)",
              "coverage": 0.9090909090909091
            },
            {
              "name": "leveldb::GetLengthPrefixedSlice(char const*, char const*, leveldb::Slice*)",
              "coverage": 0
            },
            {
              "name": "leveldb::GetLengthPrefixedSlice(leveldb::Slice*, leveldb::Slice*)",
              "coverage": 0.8181818181818182
            }
          ]
        },
        {
          "name": "version_edit.h",
          "coverage": 0.8378378378378378,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::FileMetaData::FileMetaData()",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::VersionEdit()",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::~VersionEdit()",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::SetComparatorName(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::SetLogNumber(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::SetPrevLogNumber(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::SetNextFile(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::SetLastSequence(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::SetCompactPointer(int, leveldb::InternalKey const&amp;)",
              "coverage": 0
            },
            {
              "name": "leveldb::VersionEdit::AddFile(int, unsigned long long, unsigned long long, leveldb::InternalKey const&amp;, leveldb::InternalKey const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::VersionEdit::DeleteFile(int, unsigned long long)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "posix_logger.h",
          "coverage": 0.8428571428571429,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::PosixLogger::PosixLogger(__sFILE*, unsigned long long (*)())",
              "coverage": 1
            },
            {
              "name": "leveldb::PosixLogger::~PosixLogger()",
              "coverage": 1
            },
            {
              "name": "leveldb::PosixLogger::Logv(char const*, __va_list_tag*)",
              "coverage": 0.8333333333333334
            }
          ]
        },
        {
          "name": "filename.cc",
          "coverage": 0.8613861386138614,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::MakeFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long, char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::LogFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::TableFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::SSTTableFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::DescriptorFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::CurrentFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::LockFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::TempFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::InfoLogFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::OldInfoLogFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::ParseFileName(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long*, leveldb::FileType*)",
              "coverage": 0.813953488372093
            },
            {
              "name": "leveldb::SetCurrentFile(leveldb::Env*, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned long long)",
              "coverage": 0.875
            }
          ]
        },
        {
          "name": "write_batch.cc",
          "coverage": 0.8617021276595744,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::WriteBatch::WriteBatch()",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatch::~WriteBatch()",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatch::Handler::~Handler()",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatch::Clear()",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatch::Iterate(leveldb::WriteBatch::Handler*) const",
              "coverage": 0.7948717948717948
            },
            {
              "name": "leveldb::WriteBatchInternal::Count(leveldb::WriteBatch const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::SetCount(leveldb::WriteBatch*, int)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::Sequence(leveldb::WriteBatch const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::SetSequence(leveldb::WriteBatch*, unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatch::Put(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatch::Delete(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MemTableInserter::Put(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::MemTableInserter::Delete(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::InsertInto(leveldb::WriteBatch const*, leveldb::MemTable*)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::SetContents(leveldb::WriteBatch*, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::Append(leveldb::WriteBatch*, leveldb::WriteBatch const*)",
              "coverage": 0
            }
          ]
        },
        {
          "name": "builder.cc",
          "coverage": 0.8769230769230769,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::BuildTable(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, leveldb::Env*, leveldb::Options const&amp;, leveldb::TableCache*, leveldb::Iterator*, leveldb::FileMetaData*)",
              "coverage": 0.8769230769230769
            }
          ]
        },
        {
          "name": "coding.h",
          "coverage": 0.8857142857142857,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::DecodeFixed32(char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::DecodeFixed64(char const*)",
              "coverage": 0.6666666666666666
            },
            {
              "name": "leveldb::GetVarint32Ptr(char const*, char const*, unsigned int*)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "comparator.cc",
          "coverage": 0.9183673469387755,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Comparator::~Comparator()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::BytewiseComparatorImpl::BytewiseComparatorImpl()",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::BytewiseComparatorImpl::Name() const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::BytewiseComparatorImpl::Compare(leveldb::Slice const&amp;, leveldb::Slice const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::(anonymous namespace)::BytewiseComparatorImpl::FindShortestSeparator(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*, leveldb::Slice const&amp;) const",
              "coverage": 0.8095238095238095
            },
            {
              "name": "leveldb::(anonymous namespace)::BytewiseComparatorImpl::FindShortSuccessor(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;*) const",
              "coverage": 1
            },
            {
              "name": "leveldb::InitModule()",
              "coverage": 1
            },
            {
              "name": "leveldb::BytewiseComparator()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "log_writer.cc",
          "coverage": 0.9195402298850575,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::log::InitTypeCrc(unsigned int*)",
              "coverage": 1
            },
            {
              "name": "leveldb::log::Writer::Writer(leveldb::WritableFile*)",
              "coverage": 1
            },
            {
              "name": "leveldb::log::Writer::Writer(leveldb::WritableFile*, unsigned long long)",
              "coverage": 0
            },
            {
              "name": "leveldb::log::Writer::~Writer()",
              "coverage": 1
            },
            {
              "name": "leveldb::log::Writer::AddRecord(leveldb::Slice const&amp;)",
              "coverage": 0.9148936170212766
            },
            {
              "name": "leveldb::log::Writer::EmitPhysicalRecord(leveldb::log::RecordType, char const*, unsigned long)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "iterator_wrapper.h",
          "coverage": 0.9333333333333333,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::IteratorWrapper::IteratorWrapper()",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::IteratorWrapper(leveldb::Iterator*)",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::~IteratorWrapper()",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::iter() const",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::Set(leveldb::Iterator*)",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::Valid() const",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::key() const",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::value() const",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::status() const",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::Next()",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::Prev()",
              "coverage": 0
            },
            {
              "name": "leveldb::IteratorWrapper::Seek(leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::SeekToFirst()",
              "coverage": 1
            },
            {
              "name": "leveldb::IteratorWrapper::SeekToLast()",
              "coverage": 0
            },
            {
              "name": "leveldb::IteratorWrapper::Update()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "crc32c.cc",
          "coverage": 0.9666666666666667,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::crc32c::LE_LOAD32(unsigned char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::crc32c::CanAccelerateCRC32C()",
              "coverage": 1
            },
            {
              "name": "leveldb::crc32c::Extend(unsigned int, char const*, unsigned long)",
              "coverage": 0.9591836734693877
            }
          ]
        },
        {
          "name": "mutexlock.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::MutexLock::MutexLock(leveldb::port::Mutex*)",
              "coverage": 1
            },
            {
              "name": "leveldb::MutexLock::~MutexLock()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "options.cc",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Options::Options()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "options.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::ReadOptions::ReadOptions()",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteOptions::WriteOptions()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "write_batch_internal.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::WriteBatchInternal::Contents(leveldb::WriteBatch const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::WriteBatchInternal::ByteSize(leveldb::WriteBatch const*)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "db_impl.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::DBImpl::CompactionStats::CompactionStats()",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::CompactionStats::Add(leveldb::DBImpl::CompactionStats const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::DBImpl::user_comparator() const",
              "coverage": 1
            }
          ]
        },
        {
          "name": "atomic_pointer.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::port::MemoryBarrier()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::AtomicPointer::AtomicPointer()",
              "coverage": 1
            },
            {
              "name": "leveldb::port::AtomicPointer::AtomicPointer(void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::port::AtomicPointer::NoBarrier_Load() const",
              "coverage": 1
            },
            {
              "name": "leveldb::port::AtomicPointer::NoBarrier_Store(void*)",
              "coverage": 1
            },
            {
              "name": "leveldb::port::AtomicPointer::Acquire_Load() const",
              "coverage": 1
            },
            {
              "name": "leveldb::port::AtomicPointer::Release_Store(void*)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "format.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::BlockHandle::offset() const",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockHandle::set_offset(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockHandle::size() const",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockHandle::set_size(unsigned long long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Footer::Footer()",
              "coverage": 1
            },
            {
              "name": "leveldb::Footer::metaindex_handle() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Footer::set_metaindex_handle(leveldb::BlockHandle const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Footer::index_handle() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Footer::set_index_handle(leveldb::BlockHandle const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockHandle::BlockHandle()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "block_builder.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::BlockBuilder::empty() const",
              "coverage": 1
            }
          ]
        },
        {
          "name": "arena.cc",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Arena::Arena()",
              "coverage": 1
            },
            {
              "name": "leveldb::Arena::~Arena()",
              "coverage": 1
            },
            {
              "name": "leveldb::Arena::AllocateFallback(unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Arena::AllocateAligned(unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Arena::AllocateNewBlock(unsigned long)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "arena.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Arena::MemoryUsage() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Arena::Allocate(unsigned long)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "block_builder.cc",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::BlockBuilder::BlockBuilder(leveldb::Options const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockBuilder::Reset()",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockBuilder::CurrentSizeEstimate() const",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockBuilder::Finish()",
              "coverage": 1
            },
            {
              "name": "leveldb::BlockBuilder::Add(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "port_posix_sse.cc",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::port::AcceleratedCRC32C(unsigned int, char const*, unsigned long)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "crc32c.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::crc32c::Value(char const*, unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::crc32c::Mask(unsigned int)",
              "coverage": 1
            },
            {
              "name": "leveldb::crc32c::Unmask(unsigned int)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "memtable.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::MemTable::Ref()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::Unref()",
              "coverage": 1
            },
            {
              "name": "leveldb::MemTable::KeyComparator::KeyComparator(leveldb::InternalKeyComparator const&amp;)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "table_builder.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::TableBuilder::ok() const",
              "coverage": 1
            }
          ]
        },
        {
          "name": "filter_policy.cc",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::FilterPolicy::~FilterPolicy()",
              "coverage": 1
            }
          ]
        },
        {
          "name": "table.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Table::Table(leveldb::Table::Rep*)",
              "coverage": 1
            }
          ]
        },
        {
          "name": "slice.h",
          "coverage": 1,
          "type": "objc",
          "functions": [
            {
              "name": "leveldb::Slice::Slice()",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::Slice(char const*, unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::Slice(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::Slice(char const*)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::data() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::size() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::empty() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::operator[](unsigned long) const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::clear()",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::remove_prefix(unsigned long)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::ToString() const",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::starts_with(leveldb::Slice const&amp;) const",
              "coverage": 1
            },
            {
              "name": "leveldb::operator==(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::operator!=(leveldb::Slice const&amp;, leveldb::Slice const&amp;)",
              "coverage": 1
            },
            {
              "name": "leveldb::Slice::compare(leveldb::Slice const&amp;) const",
              "coverage": 1
            }
          ]
        }
      ]
    },
    {
      "name": "nanopb.framework",
      "coverage": 0.15256797583081572,
      "files": [
        {
          "name": "pb_decode.c",
          "coverage": 0,
          "type": "objc",
          "functions": [
            {
              "name": "buf_read",
              "coverage": 0
            },
            {
              "name": "pb_read",
              "coverage": 0
            },
            {
              "name": "pb_readbyte",
              "coverage": 0
            },
            {
              "name": "pb_istream_from_buffer",
              "coverage": 0
            },
            {
              "name": "pb_decode_varint32_eof",
              "coverage": 0
            },
            {
              "name": "pb_decode_varint32",
              "coverage": 0
            },
            {
              "name": "pb_decode_varint",
              "coverage": 0
            },
            {
              "name": "pb_skip_varint",
              "coverage": 0
            },
            {
              "name": "pb_skip_string",
              "coverage": 0
            },
            {
              "name": "pb_decode_tag",
              "coverage": 0
            },
            {
              "name": "pb_skip_field",
              "coverage": 0
            },
            {
              "name": "read_raw_value",
              "coverage": 0
            },
            {
              "name": "pb_make_string_substream",
              "coverage": 0
            },
            {
              "name": "pb_close_string_substream",
              "coverage": 0
            },
            {
              "name": "decode_static_field",
              "coverage": 0
            },
            {
              "name": "allocate_field",
              "coverage": 0
            },
            {
              "name": "initialize_pointer_field",
              "coverage": 0
            },
            {
              "name": "decode_pointer_field",
              "coverage": 0
            },
            {
              "name": "decode_callback_field",
              "coverage": 0
            },
            {
              "name": "decode_field",
              "coverage": 0
            },
            {
              "name": "iter_from_extension",
              "coverage": 0
            },
            {
              "name": "default_extension_decoder",
              "coverage": 0
            },
            {
              "name": "decode_extension",
              "coverage": 0
            },
            {
              "name": "find_extension_field",
              "coverage": 0
            },
            {
              "name": "pb_field_set_to_default",
              "coverage": 0
            },
            {
              "name": "pb_message_set_to_defaults",
              "coverage": 0
            },
            {
              "name": "pb_decode_noinit",
              "coverage": 0
            },
            {
              "name": "pb_decode",
              "coverage": 0
            },
            {
              "name": "pb_decode_delimited_noinit",
              "coverage": 0
            },
            {
              "name": "pb_decode_delimited",
              "coverage": 0
            },
            {
              "name": "pb_decode_nullterminated",
              "coverage": 0
            },
            {
              "name": "pb_release_union_field",
              "coverage": 0
            },
            {
              "name": "pb_release_single_field",
              "coverage": 0
            },
            {
              "name": "pb_release",
              "coverage": 0
            },
            {
              "name": "pb_decode_svarint",
              "coverage": 0
            },
            {
              "name": "pb_decode_fixed32",
              "coverage": 0
            },
            {
              "name": "pb_decode_fixed64",
              "coverage": 0
            },
            {
              "name": "pb_dec_varint",
              "coverage": 0
            },
            {
              "name": "pb_dec_uvarint",
              "coverage": 0
            },
            {
              "name": "pb_dec_svarint",
              "coverage": 0
            },
            {
              "name": "pb_dec_fixed32",
              "coverage": 0
            },
            {
              "name": "pb_dec_fixed64",
              "coverage": 0
            },
            {
              "name": "pb_dec_bytes",
              "coverage": 0
            },
            {
              "name": "pb_dec_string",
              "coverage": 0
            },
            {
              "name": "pb_dec_submessage",
              "coverage": 0
            },
            {
              "name": "pb_dec_fixed_length_bytes",
              "coverage": 0
            }
          ]
        },
        {
          "name": "pb_encode.c",
          "coverage": 0.3941717791411043,
          "type": "objc",
          "functions": [
            {
              "name": "buf_write",
              "coverage": 1
            },
            {
              "name": "pb_ostream_from_buffer",
              "coverage": 1
            },
            {
              "name": "pb_write",
              "coverage": 1
            },
            {
              "name": "encode_array",
              "coverage": 0
            },
            {
              "name": "pb_check_proto3_default_value",
              "coverage": 0
            },
            {
              "name": "encode_basic_field",
              "coverage": 0.39285714285714285
            },
            {
              "name": "encode_callback_field",
              "coverage": 1
            },
            {
              "name": "encode_field",
              "coverage": 0.9285714285714286
            },
            {
              "name": "default_extension_encoder",
              "coverage": 0
            },
            {
              "name": "encode_extension_field",
              "coverage": 0.4
            },
            {
              "name": "pb_const_cast",
              "coverage": 1
            },
            {
              "name": "pb_encode",
              "coverage": 0.8636363636363636
            },
            {
              "name": "pb_encode_delimited",
              "coverage": 0
            },
            {
              "name": "pb_encode_nullterminated",
              "coverage": 0
            },
            {
              "name": "pb_get_encoded_size",
              "coverage": 0
            },
            {
              "name": "pb_encode_varint",
              "coverage": 1
            },
            {
              "name": "pb_encode_svarint",
              "coverage": 0
            },
            {
              "name": "pb_encode_fixed32",
              "coverage": 0
            },
            {
              "name": "pb_encode_fixed64",
              "coverage": 0
            },
            {
              "name": "pb_encode_tag",
              "coverage": 1
            },
            {
              "name": "pb_encode_tag_for_field",
              "coverage": 0.8387096774193549
            },
            {
              "name": "pb_encode_string",
              "coverage": 0.8333333333333334
            },
            {
              "name": "pb_encode_submessage",
              "coverage": 0.8541666666666666
            },
            {
              "name": "pb_enc_varint",
              "coverage": 0.9375
            },
            {
              "name": "pb_enc_uvarint",
              "coverage": 0.625
            },
            {
              "name": "pb_enc_svarint",
              "coverage": 0
            },
            {
              "name": "pb_enc_fixed64",
              "coverage": 0
            },
            {
              "name": "pb_enc_fixed32",
              "coverage": 0
            },
            {
              "name": "pb_enc_bytes",
              "coverage": 0
            },
            {
              "name": "pb_enc_string",
              "coverage": 0
            },
            {
              "name": "pb_enc_submessage",
              "coverage": 1
            },
            {
              "name": "pb_enc_fixed_length_bytes",
              "coverage": 0
            }
          ]
        },
        {
          "name": "pb_common.c",
          "coverage": 0.5542168674698795,
          "type": "objc",
          "functions": [
            {
              "name": "pb_field_iter_begin",
              "coverage": 1
            },
            {
              "name": "pb_field_iter_next",
              "coverage": 0.6428571428571429
            },
            {
              "name": "pb_field_iter_find",
              "coverage": 0
            }
          ]
        }
      ]
    }
  ]
}