{"action":"created","issue":{"url":"https://api.github.com/repos/realm/jazzy/issues/370","labels_url":"https://api.github.com/repos/realm/jazzy/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/realm/jazzy/issues/370/comments","events_url":"https://api.github.com/repos/realm/jazzy/issues/370/events","html_url":"https://github.com/realm/jazzy/issues/370","id":117182489,"number":370,"title":"NSRegularExpression exception while generating objc documentation","user":{"login":"matej","id":91322,"avatar_url":"https://avatars.githubusercontent.com/u/91322?v=3","gravatar_id":"","url":"https://api.github.com/users/matej","html_url":"https://github.com/matej","followers_url":"https://api.github.com/users/matej/followers","following_url":"https://api.github.com/users/matej/following{/other_user}","gists_url":"https://api.github.com/users/matej/gists{/gist_id}","starred_url":"https://api.github.com/users/matej/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matej/subscriptions","organizations_url":"https://api.github.com/users/matej/orgs","repos_url":"https://api.github.com/users/matej/repos","events_url":"https://api.github.com/users/matej/events{/privacy}","received_events_url":"https://api.github.com/users/matej/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-16T17:54:47Z","updated_at":"2015-11-16T20:01:34Z","closed_at":"2015-11-16T19:42:27Z","body":"This might be better suited as a SourceKitten issue, but since we stumbled upon it using jazzy and since using it is the easiest way I know of reproducing it, I'm posting here instead.  \r\n\r\nWe tried using the new jazzy version to generate documentation for PSPDFKit, a fairly large Object-C framework. The command that seems to be getting us the farthest is this one:\r\n\r\n```\r\njazzy --objc -x --objc,PSPDFKit.h,-x,objective-c,-isysroot,(xcrun --show-sdk-path --sdk iphonesimulator),-I,(pwd) --module PSPDFKit --output docs\r\n```\r\n\r\nUnfortunately this does end up throwing and exception after processing for a bit. `sourcekitten[60380:28736521] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]: Range or index out of bounds'`. \r\n\r\nHere's the full output:\r\n\r\n```\r\n/usr/local/lib/ruby/gems/2.2.0/gems/rouge-1.9.1/lib/rouge/lexers/shell.rb:20: warning: already initialized constant Rouge::Lexers::Shell::KEYWORDS\r\n/usr/local/lib/ruby/gems/2.2.0/gems/rouge-1.9.1/lib/rouge/lexers/shell.rb:20: warning: previous definition of KEYWORDS was here\r\n/usr/local/lib/ruby/gems/2.2.0/gems/rouge-1.9.1/lib/rouge/lexers/shell.rb:25: warning: already initialized constant Rouge::Lexers::Shell::BUILTINS\r\n/usr/local/lib/ruby/gems/2.2.0/gems/rouge-1.9.1/lib/rouge/lexers/shell.rb:25: warning: previous definition of BUILTINS was here\r\n2015-11-16 18:35:55.684 sourcekitten[60380:28736521] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]: Range or index out of bounds'\r\n*** First throw call stack:\r\n(\r\n\t0   CoreFoundation                      0x00007fff9c72ce32 __exceptionPreprocess + 178\r\n\t1   libobjc.A.dylib                     0x00007fff9b7194fa objc_exception_throw + 48\r\n\t2   CoreFoundation                      0x00007fff9c79365d +[NSException raise:format:] + 205\r\n\t3   Foundation                          0x00007fff9483d085 -[NSRegularExpression(NSMatching) enumerateMatchesInString:options:range:usingBlock:] + 347\r\n\t4   Foundation                          0x00007fff9483cf18 -[NSRegularExpression(NSMatching) matchesInString:options:range:] + 159\r\n\t5   SourceKittenFramework               0x0000000102ffbe46 _TTSf4g_n___TF21SourceKittenFramework11insertMarksFTGSaVS_17SourceDeclaration_10limitRangeGSqVSC8_NSRange__GSaS0__ + 630\r\n\t6   SourceKittenFramework               0x0000000102fff0ff _TFF21SourceKittenFramework11insertMarksFTGSaVS_17SourceDeclaration_10limitRangeGSqVSC8_NSRange__GSaS0__U0_FS0_S0_ + 431\r\n\t7   SourceKittenFramework               0x0000000102fff477 _TTRXFo_oV21SourceKittenFramework17SourceDeclaration_oS0_zoPSs9ErrorType__XFo_iS0__iS0_zoPS1___ + 455\r\n\t8   SourceKittenFramework               0x0000000102ffc428 _TPA__TTRXFo_oV21SourceKittenFramework17SourceDeclaration_oS0_zoPSs9ErrorType__XFo_iS0__iS0_zoPS1___ + 72\r\n\t9   SourceKittenFramework               0x0000000103002d75 _TTSf4g_n___TTSg5GSaV21SourceKittenFramework17SourceDeclaration_GSaS0__Ss14CollectionTypeSs_GVSs17IndexingGeneratorGSaS0___GS2_GSaS0___Ss13GeneratorTypeSs_S0__SiSiSs16ForwardIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_Si_GVSs10ArraySliceS0__GS7_S0__Ss9IndexableSsGS7_S0__Ss12SequenceTypeSs_GS2_GS7_S0___GS2_GS7_S0___S3_Ss_S0__SiSiS4_Ss_SiSiS5_Ss_SiSiS6_Ss_Si_GS7_S0___S0__S0__S0____TFeRq_Ss14CollectionType_SsS_3mapu__Rq_S__fq_FzFzqqq_S_9GeneratorSs13GeneratorType7Elementqd__GSaqd___ + 1365\r\n\t10  SourceKittenFramework               0x0000000102ffbfea _TTSf4g_n___TF21SourceKittenFramework11insertMarksFTGSaVS_17SourceDeclaration_10limitRangeGSqVSC8_NSRange__GSaS0__ + 1050\r\n\t11  SourceKittenFramework               0x0000000102fb1b58 _TFFV21SourceKittenFramework20ClangTranslationUnitcFMS0_FT11headerFilesGSaSS_17compilerArgumentsGSaSS__S0_U3_FGSaVS_17SourceDeclaration_GSaS1__ + 24\r\n\t12  SourceKittenFramework               0x0000000102fb0f50 _TPA__TTRXFo_oGSaV21SourceKittenFramework17SourceDeclaration__oGSaS0__zoPSs9ErrorType__XFo_iGSaS0___iGSaS0__zoPS1___ + 64\r\n\t13  SourceKittenFramework               0x0000000102fb100f _TPA__TTSg5SSSSSs8HashableSs_GSaV21SourceKittenFramework17SourceDeclaration__GSaS1_____TFFe0_Rq_Ss8Hashable_21SourceKittenFrameworkVSs10Dictionary3mapu0__Rq_S__FGS1_q_q0__FzFzq0_qd__GS1_q_qd___U_FzTQd__Qd_0__TQd__Q__ + 95\r\n\t14  SourceKittenFramework               0x0000000102fb10aa _TPA__TTSg5SSSSSs8HashableSs_GSaV21SourceKittenFramework17SourceDeclaration__GSaS1_____TTRG0__Rq_Ss8Hashable_XFo_iq_iq0__iTq_qd___zoPSs9ErrorType__XFo_iTq_q0___iTq_qd___zoPS0___ + 74\r\n\t15  SourceKittenFramework               0x0000000102fc4aa8 _TTSf4g_n___TTSg5GVSs10DictionarySSGSaV21SourceKittenFramework17SourceDeclaration__GS_SSGSaS1___Ss14CollectionTypeSs_GVSs19DictionaryGeneratorSSGSaS1___GS3_SSGSaS1___Ss13GeneratorTypeSs_TSSGSaS1____GVSs15DictionaryIndexSSGSaS1___GS5_SSGSaS1___Ss16ForwardIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_VSs20_DisabledRangeIndex__GVSs5SliceGS_SSGSaS1____GS10_GS_SSGSaS1____Ss9IndexableSsGS10_GS_SSGSaS1____Ss12SequenceTypeSs_GVSs17IndexingGeneratorGS10_GS_SSGSaS1_____GS13_GS10_GS_SSGSaS1_____S4_Ss_TSSGSaS1____GS5_SSGSaS1___GS5_SSGSaS1___S6_Ss_SiSiS7_Ss_SiSiS8_Ss_S9__GS10_GS_SSGSaS1_____TSSGSaS1____TSSGSaS1____TSSGSaS1______TFeRq_Ss14CollectionType_SsS_3mapu__Rq_S__fq_FzFzqqq_S_9GeneratorSs13GeneratorType7Elementqd__GSaqd___ + 1736\r\n\t16  SourceKittenFramework               0x0000000102fb0943 _TTSf4n_n_d___TFV21SourceKittenFramework20ClangTranslationUnitCfMS0_FT11headerFilesGSaSS_17compilerArgumentsGSaSS__S0_ + 2707\r\n\t17  sourcekitten                        0x0000000102f3439b sourcekitten + 33691\r\n\t18  sourcekitten                        0x0000000102f2ed6c sourcekitten + 11628\r\n\t19  sourcekitten                        0x0000000102f2ee13 sourcekitten + 11795\r\n\t20  Result                              0x0000000102f8820a _TFO6Result6Result8analysisu0__Rq0_Ss9ErrorType_fGS0_q_q0__FT9ifSuccessFq_qd__9ifFailureFq0_qd___qd__ + 378\r\n\t21  Result                              0x0000000102f8945b _TTWu0_Rq0_Ss9ErrorType_GO6Result6Resultq_q0__S0_10ResultTypeS0_FS2_8analysisu__Rq_S2__fq_FT9ifSuccessFqq_S2_5Valueqd__9ifFailureFqq_S2_5Errorqd___qd__ + 235\r\n\t22  Result                              0x0000000102f86af1 _TFeRq_6Result10ResultType_S_S0_7flatMapu__Rq_S0__fq_FFqq_S0_5ValueGOS_6Resultqd__qq_S0_5Error_GS1_qd__qq_S0_5Error_ + 145\r\n\t23  sourcekitten                        0x0000000102f2e65e sourcekitten + 9822\r\n\t24  Commandant                          0x0000000102f5683e _TPA__TFFV10Commandant10AnyCommandcu__Rqd__S_11CommandTypezq_qqd__S1_11ClientError_FMGS0_q__Fqd__GS0_q__U_FOS_11CommandModeGO6Result6ResultT_GOS_15CommandantErrorQd____ + 94\r\n\t25  Commandant                          0x0000000102f565a1 _TFC10Commandant15CommandRegistry10runCommandurfGS0_q__FTSS9argumentsGSaSS__GSqGO6Result6ResultT_GOS_15CommandantErrorq____ + 273\r\n\t26  Commandant                          0x0000000102f56b87 _TFC10Commandant15CommandRegistry4mainurfGS0_q__FT9argumentsGSaSS_11defaultVerbSS12errorHandlerFq_T__T_ + 503\r\n\t27  Commandant                          0x0000000102f56987 _TFC10Commandant15CommandRegistry4mainurfGS0_q__FT11defaultVerbSS12errorHandlerFq_T__T_ + 135\r\n\t28  sourcekitten                        0x0000000102f2dff0 sourcekitten + 8176\r\n\t29  libdyld.dylib                       0x00007fff99c905ad start + 1\r\n\t30  ???                                 0x000000000000000a 0x0 + 10\r\n)\r\nlibc++abi.dylib: terminating with uncaught exception of type NSException\r\n/usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/lib/jazzy/executable.rb:36:in `execute_command': /usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/lib/jazzy/SourceKitten/bin/sourcekitten [\"doc\", \"--objc\", \"PSPDFKit.h\", \"-x\", \"objective-c\", \"-isysroot\", \"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.1.sdk\", \"-I\", \"/Users/matej/Desktop/PSPDFKit\"] (RuntimeError)\r\n\r\n2015-11-16 18:35:55.684 sourcekitten[60380:28736521] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]: Range or index out of bounds'\r\n\r\n*** First throw call stack:\r\n\r\n(\r\n\r\n\t0   CoreFoundation                      0x00007fff9c72ce32 __exceptionPreprocess + 178\r\n\r\n\t1   libobjc.A.dylib                     0x00007fff9b7194fa objc_exception_throw + 48\r\n\r\n\t2   CoreFoundation                      0x00007fff9c79365d +[NSException raise:format:] + 205\r\n\r\n\t3   Foundation                          0x00007fff9483d085 -[NSRegularExpression(NSMatching) enumerateMatchesInString:options:range:usingBlock:] + 347\r\n\r\n\t4   Foundation                          0x00007fff9483cf18 -[NSRegularExpression(NSMatching) matchesInString:options:range:] + 159\r\n\r\n\t5   SourceKittenFramework               0x0000000102ffbe46 _TTSf4g_n___TF21SourceKittenFramework11insertMarksFTGSaVS_17SourceDeclaration_10limitRangeGSqVSC8_NSRange__GSaS0__ + 630\r\n\r\n\t6   SourceKittenFramework               0x0000000102fff0ff _TFF21SourceKittenFramework11insertMarksFTGSaVS_17SourceDeclaration_10limitRangeGSqVSC8_NSRange__GSaS0__U0_FS0_S0_ + 431\r\n\r\n\t7   SourceKittenFramework               0x0000000102fff477 _TTRXFo_oV21SourceKittenFramework17SourceDeclaration_oS0_zoPSs9ErrorType__XFo_iS0__iS0_zoPS1___ + 455\r\n\r\n\t8   SourceKittenFramework               0x0000000102ffc428 _TPA__TTRXFo_oV21SourceKittenFramework17SourceDeclaration_oS0_zoPSs9ErrorType__XFo_iS0__iS0_zoPS1___ + 72\r\n\r\n\t9   SourceKittenFramework               0x0000000103002d75 _TTSf4g_n___TTSg5GSaV21SourceKittenFramework17SourceDeclaration_GSaS0__Ss14CollectionTypeSs_GVSs17IndexingGeneratorGSaS0___GS2_GSaS0___Ss13GeneratorTypeSs_S0__SiSiSs16ForwardIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_Si_GVSs10ArraySliceS0__GS7_S0__Ss9IndexableSsGS7_S0__Ss12SequenceTypeSs_GS2_GS7_S0___GS2_GS7_S0___S3_Ss_S0__SiSiS4_Ss_SiSiS5_Ss_SiSiS6_Ss_Si_GS7_S0___S0__S0__S0____TFeRq_Ss14CollectionType_SsS_3mapu__Rq_S__fq_FzFzqqq_S_9GeneratorSs13GeneratorType7Elementqd__GSaqd___ + 1365\r\n\r\n\t10  SourceKittenFramework               0x0000000102ffbfea _TTSf4g_n___TF21SourceKittenFramework11insertMarksFTGSaVS_17SourceDeclaration_10limitRangeGSqVSC8_NSRange__GSaS0__ + 1050\r\n\r\n\t11  SourceKittenFramework               0x0000000102fb1b58 _TFFV21SourceKittenFramework20ClangTranslationUnitcFMS0_FT11headerFilesGSaSS_17compilerArgumentsGSaSS__S0_U3_FGSaVS_17SourceDeclaration_GSaS1__ + 24\r\n\r\n\t12  SourceKittenFramework               0x0000000102fb0f50 _TPA__TTRXFo_oGSaV21SourceKittenFramework17SourceDeclaration__oGSaS0__zoPSs9ErrorType__XFo_iGSaS0___iGSaS0__zoPS1___ + 64\r\n\r\n\t13  SourceKittenFramework               0x0000000102fb100f _TPA__TTSg5SSSSSs8HashableSs_GSaV21SourceKittenFramework17SourceDeclaration__GSaS1_____TFFe0_Rq_Ss8Hashable_21SourceKittenFrameworkVSs10Dictionary3mapu0__Rq_S__FGS1_q_q0__FzFzq0_qd__GS1_q_qd___U_FzTQd__Qd_0__TQd__Q__ + 95\r\n\r\n\t14  SourceKittenFramework               0x0000000102fb10aa _TPA__TTSg5SSSSSs8HashableSs_GSaV21SourceKittenFramework17SourceDeclaration__GSaS1_____TTRG0__Rq_Ss8Hashable_XFo_iq_iq0__iTq_qd___zoPSs9ErrorType__XFo_iTq_q0___iTq_qd___zoPS0___ + 74\r\n\r\n\t15  SourceKittenFramework               0x0000000102fc4aa8 _TTSf4g_n___TTSg5GVSs10DictionarySSGSaV21SourceKittenFramework17SourceDeclaration__GS_SSGSaS1___Ss14CollectionTypeSs_GVSs19DictionaryGeneratorSSGSaS1___GS3_SSGSaS1___Ss13GeneratorTypeSs_TSSGSaS1____GVSs15DictionaryIndexSSGSaS1___GS5_SSGSaS1___Ss16ForwardIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_VSs20_DisabledRangeIndex__GVSs5SliceGS_SSGSaS1____GS10_GS_SSGSaS1____Ss9IndexableSsGS10_GS_SSGSaS1____Ss12SequenceTypeSs_GVSs17IndexingGeneratorGS10_GS_SSGSaS1_____GS13_GS10_GS_SSGSaS1_____S4_Ss_TSSGSaS1____GS5_SSGSaS1___GS5_SSGSaS1___S6_Ss_SiSiS7_Ss_SiSiS8_Ss_S9__GS10_GS_SSGSaS1_____TSSGSaS1____TSSGSaS1____TSSGSaS1______TFeRq_Ss14CollectionType_SsS_3mapu__Rq_S__fq_FzFzqqq_S_9GeneratorSs13GeneratorType7Elementqd__GSaqd___ + 1736\r\n\r\n\t16  SourceKittenFramework               0x0000000102fb0943 _TTSf4n_n_d___TFV21SourceKittenFramework20ClangTranslationUnitCfMS0_FT11headerFilesGSaSS_17compilerArgumentsGSaSS__S0_ + 2707\r\n\r\n\t17  sourcekitten                        0x0000000102f3439b sourcekitten + 33691\r\n\r\n\t18  sourcekitten                        0x0000000102f2ed6c sourcekitten + 11628\r\n\r\n\t19  sourcekitten                        0x0000000102f2ee13 sourcekitten + 11795\r\n\r\n\t20  Result                              0x0000000102f8820a _TFO6Result6Result8analysisu0__Rq0_Ss9ErrorType_fGS0_q_q0__FT9ifSuccessFq_qd__9ifFailureFq0_qd___qd__ + 378\r\n\r\n\t21  Result                              0x0000000102f8945b _TTWu0_Rq0_Ss9ErrorType_GO6Result6Resultq_q0__S0_10ResultTypeS0_FS2_8analysisu__Rq_S2__fq_FT9ifSuccessFqq_S2_5Valueqd__9ifFailureFqq_S2_5Errorqd___qd__ + 235\r\n\r\n\t22  Result                              0x0000000102f86af1 _TFeRq_6Result10ResultType_S_S0_7flatMapu__Rq_S0__fq_FFqq_S0_5ValueGOS_6Resultqd__qq_S0_5Error_GS1_qd__qq_S0_5Error_ + 145\r\n\r\n\t23  sourcekitten                        0x0000000102f2e65e sourcekitten + 9822\r\n\r\n\t24  Commandant                          0x0000000102f5683e _TPA__TFFV10Commandant10AnyCommandcu__Rqd__S_11CommandTypezq_qqd__S1_11ClientError_FMGS0_q__Fqd__GS0_q__U_FOS_11CommandModeGO6Result6ResultT_GOS_15CommandantErrorQd____ + 94\r\n\r\n\t25  Commandant                          0x0000000102f565a1 _TFC10Commandant15CommandRegistry10runCommandurfGS0_q__FTSS9argumentsGSaSS__GSqGO6Result6ResultT_GOS_15CommandantErrorq____ + 273\r\n\r\n\t26  Commandant                          0x0000000102f56b87 _TFC10Commandant15CommandRegistry4mainurfGS0_q__FT9argumentsGSaSS_11defaultVerbSS12errorHandlerFq_T__T_ + 503\r\n\r\n\t27  Commandant                          0x0000000102f56987 _TFC10Commandant15CommandRegistry4mainurfGS0_q__FT11defaultVerbSS12errorHandlerFq_T__T_ + 135\r\n\r\n\t28  sourcekitten                        0x0000000102f2dff0 sourcekitten + 8176\r\n\r\n\t29  libdyld.dylib                       0x00007fff99c905ad start + 1\r\n\r\n\t30  ???                                 0x000000000000000a 0x0 + 10\r\n\r\n)\r\n\r\nlibc++abi.dylib: terminating with uncaught exception of type NSException\r\n\tfrom /usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/lib/jazzy/sourcekitten.rb:136:in `run_sourcekitten'\r\n\tfrom /usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/lib/jazzy/doc_builder.rb:57:in `block in build'\r\n\tfrom /usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/lib/jazzy/doc_builder.rb:55:in `chdir'\r\n\tfrom /usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/lib/jazzy/doc_builder.rb:55:in `build'\r\n\tfrom /usr/local/lib/ruby/gems/2.2.0/gems/jazzy-0.4.0/bin/jazzy:15:in `<top (required)>'\r\n\tfrom /usr/local/bin/jazzy:23:in `load'\r\n\tfrom /usr/local/bin/jazzy:23:in `<main>'\r\n```\r\n\r\nAnd here are our headers: http://cl.ly/2u3K3S1P3C0B\r\n\r\nAny ideas what goes wrong here? "},"comment":{"url":"https://api.github.com/repos/realm/jazzy/issues/comments/157153542","html_url":"https://github.com/realm/jazzy/issues/370#issuecomment-157153542","issue_url":"https://api.github.com/repos/realm/jazzy/issues/370","id":157153542,"user":{"login":"jpsim","id":474794,"avatar_url":"https://avatars.githubusercontent.com/u/474794?v=3","gravatar_id":"","url":"https://api.github.com/users/jpsim","html_url":"https://github.com/jpsim","followers_url":"https://api.github.com/users/jpsim/followers","following_url":"https://api.github.com/users/jpsim/following{/other_user}","gists_url":"https://api.github.com/users/jpsim/gists{/gist_id}","starred_url":"https://api.github.com/users/jpsim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpsim/subscriptions","organizations_url":"https://api.github.com/users/jpsim/orgs","repos_url":"https://api.github.com/users/jpsim/repos","events_url":"https://api.github.com/users/jpsim/events{/privacy}","received_events_url":"https://api.github.com/users/jpsim/received_events","type":"User","site_admin":false},"created_at":"2015-11-16T20:01:34Z","updated_at":"2015-11-16T20:01:34Z","body":"This issue is now fixed on jazzy's master branch, which you can install locally by running `bundle install && bundle exec rake install`.\r\n\r\nHowever, PSPDFKit really highlights that jazzy needs some performance optimizations to handle larger projects gracefully. Generating docs for your project takes ~50 seconds on my Macbook Pro!\r\n\r\nThe silver lining of this is that we've never done much profiling or optimization before, so there must be lots of low hanging fruit that we could tackle to improve the situation. I've opened #372 to track that effort.\r\n\r\nThe other major problem is a usability one. By my count, PSPDFKit has 116 categories, 273 classes, 352 constants, 103 enums, 97 protocols, 16 type definitions and 31 functions, which means that the resulting docs look like this: https://static.realm.io/jazzy_demo/PSPDFKit\r\n\r\nTo make this usable, you'll definitely have to use custom templates (`-t`) that can visually organize the structure of the project in a more approachable way. I'm certainly amenable to PRs that can improve this for everyone in the general sense too."}}