Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -45,450 +45,6 @@
     'AphrontSchemaQueryException' => 'aphront/storage/exception/AphrontSchemaQueryException.php',
     'AphrontScopedUnguardedWriteCapability' => 'aphront/writeguard/AphrontScopedUnguardedWriteCapability.php',
     'AphrontWriteGuard' => 'aphront/writeguard/AphrontWriteGuard.php',
-    'BaseHTTPFuture' => 'future/http/BaseHTTPFuture.php',
-    'CaseInsensitiveArray' => 'utils/CaseInsensitiveArray.php',
-    'CaseInsensitiveArrayTestCase' => 'utils/__tests__/CaseInsensitiveArrayTestCase.php',
-    'CommandException' => 'future/exec/CommandException.php',
-    'ConduitClient' => 'conduit/ConduitClient.php',
-    'ConduitClientException' => 'conduit/ConduitClientException.php',
-    'ConduitClientTestCase' => 'conduit/__tests__/ConduitClientTestCase.php',
-    'ConduitFuture' => 'conduit/ConduitFuture.php',
-    'ExecFuture' => 'future/exec/ExecFuture.php',
-    'ExecFutureTestCase' => 'future/exec/__tests__/ExecFutureTestCase.php',
-    'ExecPassthruTestCase' => 'future/exec/__tests__/ExecPassthruTestCase.php',
-    'FileFinder' => 'filesystem/FileFinder.php',
-    'FileFinderTestCase' => 'filesystem/__tests__/FileFinderTestCase.php',
-    'FileList' => 'filesystem/FileList.php',
-    'Filesystem' => 'filesystem/Filesystem.php',
-    'FilesystemException' => 'filesystem/FilesystemException.php',
-    'FilesystemTestCase' => 'filesystem/__tests__/FilesystemTestCase.php',
-    'Future' => 'future/Future.php',
-    'FutureIterator' => 'future/FutureIterator.php',
-    'FutureIteratorTestCase' => 'future/__tests__/FutureIteratorTestCase.php',
-    'FutureProxy' => 'future/FutureProxy.php',
-    'HTTPFuture' => 'future/http/HTTPFuture.php',
-    'HTTPFutureCURLResponseStatus' => 'future/http/status/HTTPFutureCURLResponseStatus.php',
-    'HTTPFutureCertificateResponseStatus' => 'future/http/status/HTTPFutureCertificateResponseStatus.php',
-    'HTTPFutureHTTPResponseStatus' => 'future/http/status/HTTPFutureHTTPResponseStatus.php',
-    'HTTPFutureParseResponseStatus' => 'future/http/status/HTTPFutureParseResponseStatus.php',
-    'HTTPFutureResponseStatus' => 'future/http/status/HTTPFutureResponseStatus.php',
-    'HTTPFutureTransportResponseStatus' => 'future/http/status/HTTPFutureTransportResponseStatus.php',
-    'HTTPSFuture' => 'future/http/HTTPSFuture.php',
-    'ImmediateFuture' => 'future/ImmediateFuture.php',
-    'LibphutilUSEnglishTranslation' => 'internationalization/translation/LibphutilUSEnglishTranslation.php',
-    'LinesOfALarge' => 'filesystem/linesofalarge/LinesOfALarge.php',
-    'LinesOfALargeExecFuture' => 'filesystem/linesofalarge/LinesOfALargeExecFuture.php',
-    'LinesOfALargeExecFutureTestCase' => 'filesystem/linesofalarge/__tests__/LinesOfALargeExecFutureTestCase.php',
-    'LinesOfALargeFile' => 'filesystem/linesofalarge/LinesOfALargeFile.php',
-    'LinesOfALargeFileTestCase' => 'filesystem/linesofalarge/__tests__/LinesOfALargeFileTestCase.php',
-    'MFilterTestHelper' => 'utils/__tests__/MFilterTestHelper.php',
-    'PHPASTParserTestCase' => 'parser/xhpast/__tests__/PHPASTParserTestCase.php',
-    'PhageAction' => 'phage/action/PhageAction.php',
-    'PhageAgentAction' => 'phage/action/PhageAgentAction.php',
-    'PhageAgentBootloader' => 'phage/bootloader/PhageAgentBootloader.php',
-    'PhageAgentTestCase' => 'phage/__tests__/PhageAgentTestCase.php',
-    'PhageExecuteAction' => 'phage/action/PhageExecuteAction.php',
-    'PhageLocalAction' => 'phage/action/PhageLocalAction.php',
-    'PhagePHPAgent' => 'phage/agent/PhagePHPAgent.php',
-    'PhagePHPAgentBootloader' => 'phage/bootloader/PhagePHPAgentBootloader.php',
-    'PhagePlanAction' => 'phage/action/PhagePlanAction.php',
-    'Phobject' => 'object/Phobject.php',
-    'PhobjectTestCase' => 'object/__tests__/PhobjectTestCase.php',
-    'PhutilAPCKeyValueCache' => 'cache/PhutilAPCKeyValueCache.php',
-    'PhutilAWSCloudFormationFuture' => 'future/aws/PhutilAWSCloudFormationFuture.php',
-    'PhutilAWSCloudWatchFuture' => 'future/aws/PhutilAWSCloudWatchFuture.php',
-    'PhutilAWSEC2Future' => 'future/aws/PhutilAWSEC2Future.php',
-    'PhutilAWSException' => 'future/aws/PhutilAWSException.php',
-    'PhutilAWSFuture' => 'future/aws/PhutilAWSFuture.php',
-    'PhutilAWSManagementWorkflow' => 'future/aws/management/PhutilAWSManagementWorkflow.php',
-    'PhutilAWSS3DeleteManagementWorkflow' => 'future/aws/management/PhutilAWSS3DeleteManagementWorkflow.php',
-    'PhutilAWSS3Future' => 'future/aws/PhutilAWSS3Future.php',
-    'PhutilAWSS3GetManagementWorkflow' => 'future/aws/management/PhutilAWSS3GetManagementWorkflow.php',
-    'PhutilAWSS3ManagementWorkflow' => 'future/aws/management/PhutilAWSS3ManagementWorkflow.php',
-    'PhutilAWSS3PutManagementWorkflow' => 'future/aws/management/PhutilAWSS3PutManagementWorkflow.php',
-    'PhutilAWSv4Signature' => 'future/aws/PhutilAWSv4Signature.php',
-    'PhutilAWSv4SignatureTestCase' => 'future/aws/__tests__/PhutilAWSv4SignatureTestCase.php',
-    'PhutilAggregateException' => 'error/PhutilAggregateException.php',
-    'PhutilAllCapsEnglishLocale' => 'internationalization/locales/PhutilAllCapsEnglishLocale.php',
-    'PhutilAmazonAuthAdapter' => 'auth/PhutilAmazonAuthAdapter.php',
-    'PhutilArgumentParser' => 'parser/argument/PhutilArgumentParser.php',
-    'PhutilArgumentParserException' => 'parser/argument/exception/PhutilArgumentParserException.php',
-    'PhutilArgumentParserTestCase' => 'parser/argument/__tests__/PhutilArgumentParserTestCase.php',
-    'PhutilArgumentSpecification' => 'parser/argument/PhutilArgumentSpecification.php',
-    'PhutilArgumentSpecificationException' => 'parser/argument/exception/PhutilArgumentSpecificationException.php',
-    'PhutilArgumentSpecificationTestCase' => 'parser/argument/__tests__/PhutilArgumentSpecificationTestCase.php',
-    'PhutilArgumentSpellingCorrector' => 'parser/argument/PhutilArgumentSpellingCorrector.php',
-    'PhutilArgumentSpellingCorrectorTestCase' => 'parser/argument/__tests__/PhutilArgumentSpellingCorrectorTestCase.php',
-    'PhutilArgumentUsageException' => 'parser/argument/exception/PhutilArgumentUsageException.php',
-    'PhutilArgumentWorkflow' => 'parser/argument/workflow/PhutilArgumentWorkflow.php',
-    'PhutilArray' => 'utils/PhutilArray.php',
-    'PhutilArrayTestCase' => 'utils/__tests__/PhutilArrayTestCase.php',
-    'PhutilArrayWithDefaultValue' => 'utils/PhutilArrayWithDefaultValue.php',
-    'PhutilAsanaAuthAdapter' => 'auth/PhutilAsanaAuthAdapter.php',
-    'PhutilAsanaFuture' => 'future/asana/PhutilAsanaFuture.php',
-    'PhutilAuthAdapter' => 'auth/PhutilAuthAdapter.php',
-    'PhutilAuthConfigurationException' => 'auth/exception/PhutilAuthConfigurationException.php',
-    'PhutilAuthCredentialException' => 'auth/exception/PhutilAuthCredentialException.php',
-    'PhutilAuthException' => 'auth/exception/PhutilAuthException.php',
-    'PhutilAuthUserAbortedException' => 'auth/exception/PhutilAuthUserAbortedException.php',
-    'PhutilBacktraceSignalHandler' => 'future/exec/PhutilBacktraceSignalHandler.php',
-    'PhutilBallOfPHP' => 'phage/util/PhutilBallOfPHP.php',
-    'PhutilBinaryAnalyzer' => 'filesystem/binary/PhutilBinaryAnalyzer.php',
-    'PhutilBinaryAnalyzerTestCase' => 'filesystem/binary/__tests__/PhutilBinaryAnalyzerTestCase.php',
-    'PhutilBitbucketAuthAdapter' => 'auth/PhutilBitbucketAuthAdapter.php',
-    'PhutilBootloader' => 'moduleutils/PhutilBootloader.php',
-    'PhutilBootloaderException' => 'moduleutils/PhutilBootloaderException.php',
-    'PhutilBritishEnglishLocale' => 'internationalization/locales/PhutilBritishEnglishLocale.php',
-    'PhutilBufferedIterator' => 'utils/PhutilBufferedIterator.php',
-    'PhutilBufferedIteratorTestCase' => 'utils/__tests__/PhutilBufferedIteratorTestCase.php',
-    'PhutilBugtraqParser' => 'parser/PhutilBugtraqParser.php',
-    'PhutilBugtraqParserTestCase' => 'parser/__tests__/PhutilBugtraqParserTestCase.php',
-    'PhutilCIDRBlock' => 'ip/PhutilCIDRBlock.php',
-    'PhutilCIDRList' => 'ip/PhutilCIDRList.php',
-    'PhutilCLikeCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilCLikeCodeSnippetContextFreeGrammar.php',
-    'PhutilCalendarAbsoluteDateTime' => 'parser/calendar/data/PhutilCalendarAbsoluteDateTime.php',
-    'PhutilCalendarContainerNode' => 'parser/calendar/data/PhutilCalendarContainerNode.php',
-    'PhutilCalendarDateTime' => 'parser/calendar/data/PhutilCalendarDateTime.php',
-    'PhutilCalendarDateTimeTestCase' => 'parser/calendar/data/__tests__/PhutilCalendarDateTimeTestCase.php',
-    'PhutilCalendarDocumentNode' => 'parser/calendar/data/PhutilCalendarDocumentNode.php',
-    'PhutilCalendarDuration' => 'parser/calendar/data/PhutilCalendarDuration.php',
-    'PhutilCalendarEventNode' => 'parser/calendar/data/PhutilCalendarEventNode.php',
-    'PhutilCalendarNode' => 'parser/calendar/data/PhutilCalendarNode.php',
-    'PhutilCalendarProxyDateTime' => 'parser/calendar/data/PhutilCalendarProxyDateTime.php',
-    'PhutilCalendarRawNode' => 'parser/calendar/data/PhutilCalendarRawNode.php',
-    'PhutilCalendarRecurrenceList' => 'parser/calendar/data/PhutilCalendarRecurrenceList.php',
-    'PhutilCalendarRecurrenceRule' => 'parser/calendar/data/PhutilCalendarRecurrenceRule.php',
-    'PhutilCalendarRecurrenceRuleTestCase' => 'parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php',
-    'PhutilCalendarRecurrenceSet' => 'parser/calendar/data/PhutilCalendarRecurrenceSet.php',
-    'PhutilCalendarRecurrenceSource' => 'parser/calendar/data/PhutilCalendarRecurrenceSource.php',
-    'PhutilCalendarRecurrenceTestCase' => 'parser/calendar/data/__tests__/PhutilCalendarRecurrenceTestCase.php',
-    'PhutilCalendarRelativeDateTime' => 'parser/calendar/data/PhutilCalendarRelativeDateTime.php',
-    'PhutilCalendarRootNode' => 'parser/calendar/data/PhutilCalendarRootNode.php',
-    'PhutilCalendarUserNode' => 'parser/calendar/data/PhutilCalendarUserNode.php',
-    'PhutilCallbackFilterIterator' => 'utils/PhutilCallbackFilterIterator.php',
-    'PhutilCallbackSignalHandler' => 'future/exec/PhutilCallbackSignalHandler.php',
-    'PhutilChannel' => 'channel/PhutilChannel.php',
-    'PhutilChannelChannel' => 'channel/PhutilChannelChannel.php',
-    'PhutilChannelTestCase' => 'channel/__tests__/PhutilChannelTestCase.php',
-    'PhutilChunkedIterator' => 'utils/PhutilChunkedIterator.php',
-    'PhutilChunkedIteratorTestCase' => 'utils/__tests__/PhutilChunkedIteratorTestCase.php',
-    'PhutilClassMapQuery' => 'symbols/PhutilClassMapQuery.php',
-    'PhutilCloudWatchMetric' => 'future/aws/PhutilCloudWatchMetric.php',
-    'PhutilCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilCodeSnippetContextFreeGrammar.php',
-    'PhutilCommandString' => 'xsprintf/PhutilCommandString.php',
-    'PhutilConsole' => 'console/PhutilConsole.php',
-    'PhutilConsoleBlock' => 'console/view/PhutilConsoleBlock.php',
-    'PhutilConsoleError' => 'console/view/PhutilConsoleError.php',
-    'PhutilConsoleFormatter' => 'console/PhutilConsoleFormatter.php',
-    'PhutilConsoleInfo' => 'console/view/PhutilConsoleInfo.php',
-    'PhutilConsoleList' => 'console/view/PhutilConsoleList.php',
-    'PhutilConsoleLogLine' => 'console/view/PhutilConsoleLogLine.php',
-    'PhutilConsoleMessage' => 'console/PhutilConsoleMessage.php',
-    'PhutilConsoleMetrics' => 'console/PhutilConsoleMetrics.php',
-    'PhutilConsoleMetricsSignalHandler' => 'future/exec/PhutilConsoleMetricsSignalHandler.php',
-    'PhutilConsoleProgressBar' => 'console/PhutilConsoleProgressBar.php',
-    'PhutilConsoleServer' => 'console/PhutilConsoleServer.php',
-    'PhutilConsoleServerChannel' => 'console/PhutilConsoleServerChannel.php',
-    'PhutilConsoleSkip' => 'console/view/PhutilConsoleSkip.php',
-    'PhutilConsoleStdinNotInteractiveException' => 'console/PhutilConsoleStdinNotInteractiveException.php',
-    'PhutilConsoleSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilConsoleSyntaxHighlighter.php',
-    'PhutilConsoleTable' => 'console/view/PhutilConsoleTable.php',
-    'PhutilConsoleView' => 'console/view/PhutilConsoleView.php',
-    'PhutilConsoleWarning' => 'console/view/PhutilConsoleWarning.php',
-    'PhutilConsoleWrapTestCase' => 'console/__tests__/PhutilConsoleWrapTestCase.php',
-    'PhutilContextFreeGrammar' => 'grammar/PhutilContextFreeGrammar.php',
-    'PhutilCowsay' => 'utils/PhutilCowsay.php',
-    'PhutilCowsayTestCase' => 'utils/__tests__/PhutilCowsayTestCase.php',
-    'PhutilCsprintfTestCase' => 'xsprintf/__tests__/PhutilCsprintfTestCase.php',
-    'PhutilCzechLocale' => 'internationalization/locales/PhutilCzechLocale.php',
-    'PhutilDaemon' => 'daemon/PhutilDaemon.php',
-    'PhutilDaemonHandle' => 'daemon/PhutilDaemonHandle.php',
-    'PhutilDaemonOverseer' => 'daemon/PhutilDaemonOverseer.php',
-    'PhutilDaemonOverseerModule' => 'daemon/PhutilDaemonOverseerModule.php',
-    'PhutilDaemonPool' => 'daemon/PhutilDaemonPool.php',
-    'PhutilDefaultSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php',
-    'PhutilDefaultSyntaxHighlighterEngine' => 'markup/syntax/engine/PhutilDefaultSyntaxHighlighterEngine.php',
-    'PhutilDefaultSyntaxHighlighterEnginePygmentsFuture' => 'markup/syntax/highlighter/pygments/PhutilDefaultSyntaxHighlighterEnginePygmentsFuture.php',
-    'PhutilDefaultSyntaxHighlighterEngineTestCase' => 'markup/syntax/engine/__tests__/PhutilDefaultSyntaxHighlighterEngineTestCase.php',
-    'PhutilDeferredLog' => 'filesystem/PhutilDeferredLog.php',
-    'PhutilDeferredLogTestCase' => 'filesystem/__tests__/PhutilDeferredLogTestCase.php',
-    'PhutilDiffBinaryAnalyzer' => 'filesystem/binary/PhutilDiffBinaryAnalyzer.php',
-    'PhutilDirectedScalarGraph' => 'utils/PhutilDirectedScalarGraph.php',
-    'PhutilDirectoryFixture' => 'filesystem/PhutilDirectoryFixture.php',
-    'PhutilDirectoryKeyValueCache' => 'cache/PhutilDirectoryKeyValueCache.php',
-    'PhutilDisqusAuthAdapter' => 'auth/PhutilDisqusAuthAdapter.php',
-    'PhutilDivinerSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilDivinerSyntaxHighlighter.php',
-    'PhutilDocblockParser' => 'parser/PhutilDocblockParser.php',
-    'PhutilDocblockParserTestCase' => 'parser/__tests__/PhutilDocblockParserTestCase.php',
-    'PhutilEditDistanceMatrix' => 'utils/PhutilEditDistanceMatrix.php',
-    'PhutilEditDistanceMatrixTestCase' => 'utils/__tests__/PhutilEditDistanceMatrixTestCase.php',
-    'PhutilEditorConfig' => 'parser/PhutilEditorConfig.php',
-    'PhutilEditorConfigTestCase' => 'parser/__tests__/PhutilEditorConfigTestCase.php',
-    'PhutilEmailAddress' => 'parser/PhutilEmailAddress.php',
-    'PhutilEmailAddressTestCase' => 'parser/__tests__/PhutilEmailAddressTestCase.php',
-    'PhutilEmojiLocale' => 'internationalization/locales/PhutilEmojiLocale.php',
-    'PhutilEmptyAuthAdapter' => 'auth/PhutilEmptyAuthAdapter.php',
-    'PhutilEnglishCanadaLocale' => 'internationalization/locales/PhutilEnglishCanadaLocale.php',
-    'PhutilErrorHandler' => 'error/PhutilErrorHandler.php',
-    'PhutilErrorHandlerTestCase' => 'error/__tests__/PhutilErrorHandlerTestCase.php',
-    'PhutilErrorTrap' => 'error/PhutilErrorTrap.php',
-    'PhutilEvent' => 'events/PhutilEvent.php',
-    'PhutilEventConstants' => 'events/constant/PhutilEventConstants.php',
-    'PhutilEventEngine' => 'events/PhutilEventEngine.php',
-    'PhutilEventListener' => 'events/PhutilEventListener.php',
-    'PhutilEventType' => 'events/constant/PhutilEventType.php',
-    'PhutilExampleBufferedIterator' => 'utils/PhutilExampleBufferedIterator.php',
-    'PhutilExcessiveServiceCallsDaemon' => 'daemon/torture/PhutilExcessiveServiceCallsDaemon.php',
-    'PhutilExecChannel' => 'channel/PhutilExecChannel.php',
-    'PhutilExecPassthru' => 'future/exec/PhutilExecPassthru.php',
-    'PhutilExecutableFuture' => 'future/exec/PhutilExecutableFuture.php',
-    'PhutilExecutionEnvironment' => 'utils/PhutilExecutionEnvironment.php',
-    'PhutilExtensionsTestCase' => 'moduleutils/__tests__/PhutilExtensionsTestCase.php',
-    'PhutilFacebookAuthAdapter' => 'auth/PhutilFacebookAuthAdapter.php',
-    'PhutilFatalDaemon' => 'daemon/torture/PhutilFatalDaemon.php',
-    'PhutilFileLock' => 'filesystem/PhutilFileLock.php',
-    'PhutilFileLockTestCase' => 'filesystem/__tests__/PhutilFileLockTestCase.php',
-    'PhutilFileTree' => 'filesystem/PhutilFileTree.php',
-    'PhutilFrenchLocale' => 'internationalization/locales/PhutilFrenchLocale.php',
-    'PhutilGermanLocale' => 'internationalization/locales/PhutilGermanLocale.php',
-    'PhutilGitBinaryAnalyzer' => 'filesystem/binary/PhutilGitBinaryAnalyzer.php',
-    'PhutilGitHubAuthAdapter' => 'auth/PhutilGitHubAuthAdapter.php',
-    'PhutilGitHubFuture' => 'future/github/PhutilGitHubFuture.php',
-    'PhutilGitHubResponse' => 'future/github/PhutilGitHubResponse.php',
-    'PhutilGitURI' => 'parser/PhutilGitURI.php',
-    'PhutilGitURITestCase' => 'parser/__tests__/PhutilGitURITestCase.php',
-    'PhutilGoogleAuthAdapter' => 'auth/PhutilGoogleAuthAdapter.php',
-    'PhutilHTTPEngineExtension' => 'future/http/PhutilHTTPEngineExtension.php',
-    'PhutilHTTPResponse' => 'parser/http/PhutilHTTPResponse.php',
-    'PhutilHTTPResponseParser' => 'parser/http/PhutilHTTPResponseParser.php',
-    'PhutilHTTPResponseParserTestCase' => 'parser/http/__tests__/PhutilHTTPResponseParserTestCase.php',
-    'PhutilHangForeverDaemon' => 'daemon/torture/PhutilHangForeverDaemon.php',
-    'PhutilHashingIterator' => 'utils/PhutilHashingIterator.php',
-    'PhutilHashingIteratorTestCase' => 'utils/__tests__/PhutilHashingIteratorTestCase.php',
-    'PhutilHelpArgumentWorkflow' => 'parser/argument/workflow/PhutilHelpArgumentWorkflow.php',
-    'PhutilHgsprintfTestCase' => 'xsprintf/__tests__/PhutilHgsprintfTestCase.php',
-    'PhutilHighIntensityIntervalDaemon' => 'daemon/torture/PhutilHighIntensityIntervalDaemon.php',
-    'PhutilICSParser' => 'parser/calendar/ics/PhutilICSParser.php',
-    'PhutilICSParserException' => 'parser/calendar/ics/PhutilICSParserException.php',
-    'PhutilICSParserTestCase' => 'parser/calendar/ics/__tests__/PhutilICSParserTestCase.php',
-    'PhutilICSWriter' => 'parser/calendar/ics/PhutilICSWriter.php',
-    'PhutilICSWriterTestCase' => 'parser/calendar/ics/__tests__/PhutilICSWriterTestCase.php',
-    'PhutilINIParserException' => 'parser/exception/PhutilINIParserException.php',
-    'PhutilIPAddress' => 'ip/PhutilIPAddress.php',
-    'PhutilIPAddressTestCase' => 'ip/__tests__/PhutilIPAddressTestCase.php',
-    'PhutilIPv4Address' => 'ip/PhutilIPv4Address.php',
-    'PhutilIPv6Address' => 'ip/PhutilIPv6Address.php',
-    'PhutilInRequestKeyValueCache' => 'cache/PhutilInRequestKeyValueCache.php',
-    'PhutilInteractiveEditor' => 'console/PhutilInteractiveEditor.php',
-    'PhutilInvalidRuleParserGeneratorException' => 'parser/generator/exception/PhutilInvalidRuleParserGeneratorException.php',
-    'PhutilInvalidStateException' => 'exception/PhutilInvalidStateException.php',
-    'PhutilInvalidStateExceptionTestCase' => 'exception/__tests__/PhutilInvalidStateExceptionTestCase.php',
-    'PhutilInvisibleSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php',
-    'PhutilIrreducibleRuleParserGeneratorException' => 'parser/generator/exception/PhutilIrreducibleRuleParserGeneratorException.php',
-    'PhutilJIRAAuthAdapter' => 'auth/PhutilJIRAAuthAdapter.php',
-    'PhutilJSON' => 'parser/PhutilJSON.php',
-    'PhutilJSONFragmentLexer' => 'lexer/PhutilJSONFragmentLexer.php',
-    'PhutilJSONFragmentLexerHighlighterTestCase' => 'markup/syntax/highlighter/__tests__/PhutilJSONFragmentLexerHighlighterTestCase.php',
-    'PhutilJSONParser' => 'parser/PhutilJSONParser.php',
-    'PhutilJSONParserException' => 'parser/exception/PhutilJSONParserException.php',
-    'PhutilJSONParserTestCase' => 'parser/__tests__/PhutilJSONParserTestCase.php',
-    'PhutilJSONProtocolChannel' => 'channel/PhutilJSONProtocolChannel.php',
-    'PhutilJSONProtocolChannelTestCase' => 'channel/__tests__/PhutilJSONProtocolChannelTestCase.php',
-    'PhutilJSONTestCase' => 'parser/__tests__/PhutilJSONTestCase.php',
-    'PhutilJavaCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilJavaCodeSnippetContextFreeGrammar.php',
-    'PhutilJavaFragmentLexer' => 'lexer/PhutilJavaFragmentLexer.php',
-    'PhutilKeyValueCache' => 'cache/PhutilKeyValueCache.php',
-    'PhutilKeyValueCacheNamespace' => 'cache/PhutilKeyValueCacheNamespace.php',
-    'PhutilKeyValueCacheProfiler' => 'cache/PhutilKeyValueCacheProfiler.php',
-    'PhutilKeyValueCacheProxy' => 'cache/PhutilKeyValueCacheProxy.php',
-    'PhutilKeyValueCacheStack' => 'cache/PhutilKeyValueCacheStack.php',
-    'PhutilKeyValueCacheTestCase' => 'cache/__tests__/PhutilKeyValueCacheTestCase.php',
-    'PhutilKoreanLocale' => 'internationalization/locales/PhutilKoreanLocale.php',
-    'PhutilLDAPAuthAdapter' => 'auth/PhutilLDAPAuthAdapter.php',
-    'PhutilLanguageGuesser' => 'parser/PhutilLanguageGuesser.php',
-    'PhutilLanguageGuesserTestCase' => 'parser/__tests__/PhutilLanguageGuesserTestCase.php',
-    'PhutilLexer' => 'lexer/PhutilLexer.php',
-    'PhutilLexerSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilLexerSyntaxHighlighter.php',
-    'PhutilLibraryConflictException' => 'moduleutils/PhutilLibraryConflictException.php',
-    'PhutilLibraryMapBuilder' => 'moduleutils/PhutilLibraryMapBuilder.php',
-    'PhutilLibraryTestCase' => '__tests__/PhutilLibraryTestCase.php',
-    'PhutilLipsumContextFreeGrammar' => 'grammar/PhutilLipsumContextFreeGrammar.php',
-    'PhutilLocale' => 'internationalization/PhutilLocale.php',
-    'PhutilLocaleTestCase' => 'internationalization/__tests__/PhutilLocaleTestCase.php',
-    'PhutilLock' => 'filesystem/PhutilLock.php',
-    'PhutilLockException' => 'filesystem/PhutilLockException.php',
-    'PhutilLogFileChannel' => 'channel/PhutilLogFileChannel.php',
-    'PhutilLunarPhase' => 'utils/PhutilLunarPhase.php',
-    'PhutilLunarPhaseTestCase' => 'utils/__tests__/PhutilLunarPhaseTestCase.php',
-    'PhutilMarkupEngine' => 'markup/PhutilMarkupEngine.php',
-    'PhutilMarkupTestCase' => 'markup/__tests__/PhutilMarkupTestCase.php',
-    'PhutilMemcacheKeyValueCache' => 'cache/PhutilMemcacheKeyValueCache.php',
-    'PhutilMercurialBinaryAnalyzer' => 'filesystem/binary/PhutilMercurialBinaryAnalyzer.php',
-    'PhutilMethodNotImplementedException' => 'error/PhutilMethodNotImplementedException.php',
-    'PhutilMetricsChannel' => 'channel/PhutilMetricsChannel.php',
-    'PhutilMissingSymbolException' => 'symbols/exception/PhutilMissingSymbolException.php',
-    'PhutilModuleUtilsTestCase' => 'moduleutils/__tests__/PhutilModuleUtilsTestCase.php',
-    'PhutilNiceDaemon' => 'daemon/torture/PhutilNiceDaemon.php',
-    'PhutilNumber' => 'internationalization/PhutilNumber.php',
-    'PhutilOAuth1AuthAdapter' => 'auth/PhutilOAuth1AuthAdapter.php',
-    'PhutilOAuth1Future' => 'future/oauth/PhutilOAuth1Future.php',
-    'PhutilOAuth1FutureTestCase' => 'future/oauth/__tests__/PhutilOAuth1FutureTestCase.php',
-    'PhutilOAuthAuthAdapter' => 'auth/PhutilOAuthAuthAdapter.php',
-    'PhutilOnDiskKeyValueCache' => 'cache/PhutilOnDiskKeyValueCache.php',
-    'PhutilOpaqueEnvelope' => 'error/PhutilOpaqueEnvelope.php',
-    'PhutilOpaqueEnvelopeKey' => 'error/PhutilOpaqueEnvelopeKey.php',
-    'PhutilOpaqueEnvelopeTestCase' => 'error/__tests__/PhutilOpaqueEnvelopeTestCase.php',
-    'PhutilPHPCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilPHPCodeSnippetContextFreeGrammar.php',
-    'PhutilPHPFragmentLexer' => 'lexer/PhutilPHPFragmentLexer.php',
-    'PhutilPHPFragmentLexerHighlighterTestCase' => 'markup/syntax/highlighter/__tests__/PhutilPHPFragmentLexerHighlighterTestCase.php',
-    'PhutilPHPFragmentLexerTestCase' => 'lexer/__tests__/PhutilPHPFragmentLexerTestCase.php',
-    'PhutilPHPObjectProtocolChannel' => 'channel/PhutilPHPObjectProtocolChannel.php',
-    'PhutilPHPObjectProtocolChannelTestCase' => 'channel/__tests__/PhutilPHPObjectProtocolChannelTestCase.php',
-    'PhutilParserGenerator' => 'parser/PhutilParserGenerator.php',
-    'PhutilParserGeneratorException' => 'parser/generator/exception/PhutilParserGeneratorException.php',
-    'PhutilParserGeneratorTestCase' => 'parser/__tests__/PhutilParserGeneratorTestCase.php',
-    'PhutilPayPalAPIFuture' => 'future/paypal/PhutilPayPalAPIFuture.php',
-    'PhutilPerson' => 'internationalization/PhutilPerson.php',
-    'PhutilPersonTest' => 'internationalization/__tests__/PhutilPersonTest.php',
-    'PhutilPhabricatorAuthAdapter' => 'auth/PhutilPhabricatorAuthAdapter.php',
-    'PhutilPhtTestCase' => 'internationalization/__tests__/PhutilPhtTestCase.php',
-    'PhutilPirateEnglishLocale' => 'internationalization/locales/PhutilPirateEnglishLocale.php',
-    'PhutilPortugueseBrazilLocale' => 'internationalization/locales/PhutilPortugueseBrazilLocale.php',
-    'PhutilPortuguesePortugalLocale' => 'internationalization/locales/PhutilPortuguesePortugalLocale.php',
-    'PhutilPostmarkFuture' => 'future/postmark/PhutilPostmarkFuture.php',
-    'PhutilPregsprintfTestCase' => 'xsprintf/__tests__/PhutilPregsprintfTestCase.php',
-    'PhutilProcessGroupDaemon' => 'daemon/torture/PhutilProcessGroupDaemon.php',
-    'PhutilProseDiff' => 'utils/PhutilProseDiff.php',
-    'PhutilProseDiffTestCase' => 'utils/__tests__/PhutilProseDiffTestCase.php',
-    'PhutilProseDifferenceEngine' => 'utils/PhutilProseDifferenceEngine.php',
-    'PhutilProtocolChannel' => 'channel/PhutilProtocolChannel.php',
-    'PhutilProxyException' => 'error/PhutilProxyException.php',
-    'PhutilProxyIterator' => 'utils/PhutilProxyIterator.php',
-    'PhutilPygmentizeBinaryAnalyzer' => 'filesystem/binary/PhutilPygmentizeBinaryAnalyzer.php',
-    'PhutilPygmentizeParser' => 'parser/PhutilPygmentizeParser.php',
-    'PhutilPygmentizeParserTestCase' => 'parser/__tests__/PhutilPygmentizeParserTestCase.php',
-    'PhutilPygmentsSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilPygmentsSyntaxHighlighter.php',
-    'PhutilPythonFragmentLexer' => 'lexer/PhutilPythonFragmentLexer.php',
-    'PhutilQsprintfInterface' => 'xsprintf/PhutilQsprintfInterface.php',
-    'PhutilQueryStringParser' => 'parser/PhutilQueryStringParser.php',
-    'PhutilQueryStringParserTestCase' => 'parser/__tests__/PhutilQueryStringParserTestCase.php',
-    'PhutilRainbowSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilRainbowSyntaxHighlighter.php',
-    'PhutilRawEnglishLocale' => 'internationalization/locales/PhutilRawEnglishLocale.php',
-    'PhutilReadableSerializer' => 'readableserializer/PhutilReadableSerializer.php',
-    'PhutilReadableSerializerTestCase' => 'readableserializer/__tests__/PhutilReadableSerializerTestCase.php',
-    'PhutilRealNameContextFreeGrammar' => 'grammar/PhutilRealNameContextFreeGrammar.php',
-    'PhutilRemarkupBlockInterpreter' => 'markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php',
-    'PhutilRemarkupBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php',
-    'PhutilRemarkupBlockStorage' => 'markup/engine/remarkup/PhutilRemarkupBlockStorage.php',
-    'PhutilRemarkupBoldRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupBoldRule.php',
-    'PhutilRemarkupCodeBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupCodeBlockRule.php',
-    'PhutilRemarkupDefaultBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupDefaultBlockRule.php',
-    'PhutilRemarkupDelRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupDelRule.php',
-    'PhutilRemarkupDocumentLinkRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupDocumentLinkRule.php',
-    'PhutilRemarkupEngine' => 'markup/engine/PhutilRemarkupEngine.php',
-    'PhutilRemarkupEngineTestCase' => 'markup/engine/__tests__/PhutilRemarkupEngineTestCase.php',
-    'PhutilRemarkupEscapeRemarkupRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupEscapeRemarkupRule.php',
-    'PhutilRemarkupHeaderBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupHeaderBlockRule.php',
-    'PhutilRemarkupHighlightRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupHighlightRule.php',
-    'PhutilRemarkupHorizontalRuleBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupHorizontalRuleBlockRule.php',
-    'PhutilRemarkupHyperlinkRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupHyperlinkRule.php',
-    'PhutilRemarkupInlineBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupInlineBlockRule.php',
-    'PhutilRemarkupInterpreterBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupInterpreterBlockRule.php',
-    'PhutilRemarkupItalicRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupItalicRule.php',
-    'PhutilRemarkupLinebreaksRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupLinebreaksRule.php',
-    'PhutilRemarkupListBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupListBlockRule.php',
-    'PhutilRemarkupLiteralBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupLiteralBlockRule.php',
-    'PhutilRemarkupMonospaceRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupMonospaceRule.php',
-    'PhutilRemarkupNoteBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupNoteBlockRule.php',
-    'PhutilRemarkupQuotesBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupQuotesBlockRule.php',
-    'PhutilRemarkupReplyBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupReplyBlockRule.php',
-    'PhutilRemarkupRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupRule.php',
-    'PhutilRemarkupSimpleTableBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupSimpleTableBlockRule.php',
-    'PhutilRemarkupTableBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupTableBlockRule.php',
-    'PhutilRemarkupTestInterpreterRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupTestInterpreterRule.php',
-    'PhutilRemarkupUnderlineRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupUnderlineRule.php',
-    'PhutilRope' => 'utils/PhutilRope.php',
-    'PhutilRopeTestCase' => 'utils/__tests__/PhutilRopeTestCase.php',
-    'PhutilSafeHTML' => 'markup/PhutilSafeHTML.php',
-    'PhutilSafeHTMLProducerInterface' => 'markup/PhutilSafeHTMLProducerInterface.php',
-    'PhutilSafeHTMLTestCase' => 'markup/__tests__/PhutilSafeHTMLTestCase.php',
-    'PhutilSaturateStdoutDaemon' => 'daemon/torture/PhutilSaturateStdoutDaemon.php',
-    'PhutilSearchQueryCompiler' => 'search/PhutilSearchQueryCompiler.php',
-    'PhutilSearchQueryCompilerSyntaxException' => 'search/PhutilSearchQueryCompilerSyntaxException.php',
-    'PhutilSearchQueryCompilerTestCase' => 'search/__tests__/PhutilSearchQueryCompilerTestCase.php',
-    'PhutilSearchQueryToken' => 'search/PhutilSearchQueryToken.php',
-    'PhutilSearchStemmer' => 'search/PhutilSearchStemmer.php',
-    'PhutilSearchStemmerTestCase' => 'search/__tests__/PhutilSearchStemmerTestCase.php',
-    'PhutilServiceProfiler' => 'serviceprofiler/PhutilServiceProfiler.php',
-    'PhutilShellLexer' => 'lexer/PhutilShellLexer.php',
-    'PhutilShellLexerTestCase' => 'lexer/__tests__/PhutilShellLexerTestCase.php',
-    'PhutilSignalHandler' => 'future/exec/PhutilSignalHandler.php',
-    'PhutilSignalRouter' => 'future/exec/PhutilSignalRouter.php',
-    'PhutilSimpleOptions' => 'parser/PhutilSimpleOptions.php',
-    'PhutilSimpleOptionsLexer' => 'lexer/PhutilSimpleOptionsLexer.php',
-    'PhutilSimpleOptionsLexerTestCase' => 'lexer/__tests__/PhutilSimpleOptionsLexerTestCase.php',
-    'PhutilSimpleOptionsTestCase' => 'parser/__tests__/PhutilSimpleOptionsTestCase.php',
-    'PhutilSimplifiedChineseLocale' => 'internationalization/locales/PhutilSimplifiedChineseLocale.php',
-    'PhutilSlackAuthAdapter' => 'auth/PhutilSlackAuthAdapter.php',
-    'PhutilSlackFuture' => 'future/slack/PhutilSlackFuture.php',
-    'PhutilSocketChannel' => 'channel/PhutilSocketChannel.php',
-    'PhutilSortVector' => 'utils/PhutilSortVector.php',
-    'PhutilSpanishSpainLocale' => 'internationalization/locales/PhutilSpanishSpainLocale.php',
-    'PhutilSprite' => 'sprites/PhutilSprite.php',
-    'PhutilSpriteSheet' => 'sprites/PhutilSpriteSheet.php',
-    'PhutilStreamIterator' => 'utils/PhutilStreamIterator.php',
-    'PhutilSubversionBinaryAnalyzer' => 'filesystem/binary/PhutilSubversionBinaryAnalyzer.php',
-    'PhutilSymbolLoader' => 'symbols/PhutilSymbolLoader.php',
-    'PhutilSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilSyntaxHighlighter.php',
-    'PhutilSyntaxHighlighterEngine' => 'markup/syntax/engine/PhutilSyntaxHighlighterEngine.php',
-    'PhutilSyntaxHighlighterException' => 'markup/syntax/highlighter/PhutilSyntaxHighlighterException.php',
-    'PhutilSystem' => 'utils/PhutilSystem.php',
-    'PhutilSystemTestCase' => 'utils/__tests__/PhutilSystemTestCase.php',
-    'PhutilTerminalString' => 'xsprintf/PhutilTerminalString.php',
-    'PhutilTestPhobject' => 'object/__tests__/PhutilTestPhobject.php',
-    'PhutilTortureTestDaemon' => 'daemon/torture/PhutilTortureTestDaemon.php',
-    'PhutilTraditionalChineseLocale' => 'internationalization/locales/PhutilTraditionalChineseLocale.php',
-    'PhutilTranslation' => 'internationalization/PhutilTranslation.php',
-    'PhutilTranslationTestCase' => 'internationalization/__tests__/PhutilTranslationTestCase.php',
-    'PhutilTranslator' => 'internationalization/PhutilTranslator.php',
-    'PhutilTranslatorTestCase' => 'internationalization/__tests__/PhutilTranslatorTestCase.php',
-    'PhutilTsprintfTestCase' => 'xsprintf/__tests__/PhutilTsprintfTestCase.php',
-    'PhutilTwitchAuthAdapter' => 'auth/PhutilTwitchAuthAdapter.php',
-    'PhutilTwitchFuture' => 'future/twitch/PhutilTwitchFuture.php',
-    'PhutilTwitterAuthAdapter' => 'auth/PhutilTwitterAuthAdapter.php',
-    'PhutilTypeCheckException' => 'parser/exception/PhutilTypeCheckException.php',
-    'PhutilTypeExtraParametersException' => 'parser/exception/PhutilTypeExtraParametersException.php',
-    'PhutilTypeLexer' => 'lexer/PhutilTypeLexer.php',
-    'PhutilTypeMissingParametersException' => 'parser/exception/PhutilTypeMissingParametersException.php',
-    'PhutilTypeSpec' => 'parser/PhutilTypeSpec.php',
-    'PhutilTypeSpecTestCase' => 'parser/__tests__/PhutilTypeSpecTestCase.php',
-    'PhutilURI' => 'parser/PhutilURI.php',
-    'PhutilURITestCase' => 'parser/__tests__/PhutilURITestCase.php',
-    'PhutilUSEnglishLocale' => 'internationalization/locales/PhutilUSEnglishLocale.php',
-    'PhutilUTF8StringTruncator' => 'utils/PhutilUTF8StringTruncator.php',
-    'PhutilUTF8TestCase' => 'utils/__tests__/PhutilUTF8TestCase.php',
-    'PhutilUnknownSymbolParserGeneratorException' => 'parser/generator/exception/PhutilUnknownSymbolParserGeneratorException.php',
-    'PhutilUnreachableRuleParserGeneratorException' => 'parser/generator/exception/PhutilUnreachableRuleParserGeneratorException.php',
-    'PhutilUnreachableTerminalParserGeneratorException' => 'parser/generator/exception/PhutilUnreachableTerminalParserGeneratorException.php',
-    'PhutilUrisprintfTestCase' => 'xsprintf/__tests__/PhutilUrisprintfTestCase.php',
-    'PhutilUtilsTestCase' => 'utils/__tests__/PhutilUtilsTestCase.php',
-    'PhutilVeryWowEnglishLocale' => 'internationalization/locales/PhutilVeryWowEnglishLocale.php',
-    'PhutilWordPressAuthAdapter' => 'auth/PhutilWordPressAuthAdapter.php',
-    'PhutilWordPressFuture' => 'future/wordpress/PhutilWordPressFuture.php',
-    'PhutilXHPASTBinary' => 'parser/xhpast/bin/PhutilXHPASTBinary.php',
-    'PhutilXHPASTSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilXHPASTSyntaxHighlighter.php',
-    'PhutilXHPASTSyntaxHighlighterFuture' => 'markup/syntax/highlighter/xhpast/PhutilXHPASTSyntaxHighlighterFuture.php',
-    'PhutilXHPASTSyntaxHighlighterTestCase' => 'markup/syntax/highlighter/__tests__/PhutilXHPASTSyntaxHighlighterTestCase.php',
-    'QueryFuture' => 'future/query/QueryFuture.php',
-    'TempFile' => 'filesystem/TempFile.php',
-    'TestAbstractDirectedGraph' => 'utils/__tests__/TestAbstractDirectedGraph.php',
-    'XHPASTNode' => 'parser/xhpast/api/XHPASTNode.php',
-    'XHPASTNodeTestCase' => 'parser/xhpast/api/__tests__/XHPASTNodeTestCase.php',
-    'XHPASTSyntaxErrorException' => 'parser/xhpast/api/XHPASTSyntaxErrorException.php',
-    'XHPASTToken' => 'parser/xhpast/api/XHPASTToken.php',
-    'XHPASTTree' => 'parser/xhpast/api/XHPASTTree.php',
-    'XHPASTTreeTestCase' => 'parser/xhpast/api/__tests__/XHPASTTreeTestCase.php',
-    'XsprintfUnknownConversionException' => 'xsprintf/exception/XsprintfUnknownConversionException.php',
     'ArcanistAbstractMethodBodyXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistAbstractMethodBodyXHPASTLinterRule.php',
     'ArcanistAbstractMethodBodyXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistAbstractMethodBodyXHPASTLinterRuleTestCase.php',
     'ArcanistAbstractPrivateMethodXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistAbstractPrivateMethodXHPASTLinterRule.php',
@@ -498,6 +54,7 @@
     'ArcanistAliasWorkflow' => 'toolset/ArcanistAliasWorkflow.php',
     'ArcanistAmendWorkflow' => 'workflow/ArcanistAmendWorkflow.php',
     'ArcanistAnoidWorkflow' => 'workflow/ArcanistAnoidWorkflow.php',
+    'ArcanistArcConfigurationEngineExtension' => 'config/ArcanistArcConfigurationEngineExtension.php',
     'ArcanistArcToolset' => 'toolset/ArcanistArcToolset.php',
     'ArcanistArcWorkflow' => 'workflow/ArcanistArcWorkflow.php',
     'ArcanistArrayCombineXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistArrayCombineXHPASTLinterRule.php',
@@ -577,10 +134,16 @@
     'ArcanistConcatenationOperatorXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistConcatenationOperatorXHPASTLinterRule.php',
     'ArcanistConcatenationOperatorXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistConcatenationOperatorXHPASTLinterRuleTestCase.php',
     'ArcanistConduitCall' => 'conduit/ArcanistConduitCall.php',
+    'ArcanistConduitConfigurationEngineExtension' => 'config/ArcanistConduitConfigurationEngineExtension.php',
     'ArcanistConduitEngine' => 'conduit/ArcanistConduitEngine.php',
+    'ArcanistConfigOption' => 'config/ArcanistConfigOption.php',
     'ArcanistConfigurationDrivenLintEngine' => 'lint/engine/ArcanistConfigurationDrivenLintEngine.php',
     'ArcanistConfigurationDrivenUnitTestEngine' => 'unit/engine/ArcanistConfigurationDrivenUnitTestEngine.php',
+    'ArcanistConfigurationEngine' => 'config/ArcanistConfigurationEngine.php',
+    'ArcanistConfigurationEngineExtension' => 'config/ArcanistConfigurationEngineExtension.php',
     'ArcanistConfigurationManager' => 'configuration/ArcanistConfigurationManager.php',
+    'ArcanistConfigurationSource' => 'config/source/ArcanistConfigurationSource.php',
+    'ArcanistConfigurationSourceList' => 'config/ArcanistConfigurationSourceList.php',
     'ArcanistConsoleLintRenderer' => 'lint/renderer/ArcanistConsoleLintRenderer.php',
     'ArcanistConsoleLintRendererTestCase' => 'lint/renderer/__tests__/ArcanistConsoleLintRendererTestCase.php',
     'ArcanistConstructorParenthesesXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistConstructorParenthesesXHPASTLinterRule.php',
@@ -598,6 +161,7 @@
     'ArcanistDeclarationParenthesesXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistDeclarationParenthesesXHPASTLinterRuleTestCase.php',
     'ArcanistDefaultParametersXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistDefaultParametersXHPASTLinterRule.php',
     'ArcanistDefaultParametersXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistDefaultParametersXHPASTLinterRuleTestCase.php',
+    'ArcanistDefaultsConfigurationSource' => 'config/source/ArcanistDefaultsConfigurationSource.php',
     'ArcanistDeprecationXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistDeprecationXHPASTLinterRule.php',
     'ArcanistDeprecationXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistDeprecationXHPASTLinterRuleTestCase.php',
     'ArcanistDiffByteSizeException' => 'exception/ArcanistDiffByteSizeException.php',
@@ -637,10 +201,12 @@
     'ArcanistExtractUseXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistExtractUseXHPASTLinterRule.php',
     'ArcanistExtractUseXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistExtractUseXHPASTLinterRuleTestCase.php',
     'ArcanistFeatureWorkflow' => 'workflow/ArcanistFeatureWorkflow.php',
+    'ArcanistFileConfigurationSource' => 'config/source/ArcanistFileConfigurationSource.php',
     'ArcanistFileDataRef' => 'upload/ArcanistFileDataRef.php',
     'ArcanistFileUploader' => 'upload/ArcanistFileUploader.php',
     'ArcanistFilenameLinter' => 'lint/linter/ArcanistFilenameLinter.php',
     'ArcanistFilenameLinterTestCase' => 'lint/linter/__tests__/ArcanistFilenameLinterTestCase.php',
+    'ArcanistFilesystemConfigurationSource' => 'config/source/ArcanistFilesystemConfigurationSource.php',
     'ArcanistFlagWorkflow' => 'workflow/ArcanistFlagWorkflow.php',
     'ArcanistFlake8Linter' => 'lint/linter/ArcanistFlake8Linter.php',
     'ArcanistFlake8LinterTestCase' => 'lint/linter/__tests__/ArcanistFlake8LinterTestCase.php',
@@ -658,6 +224,7 @@
     'ArcanistGitLandEngine' => 'land/ArcanistGitLandEngine.php',
     'ArcanistGitRevisionHardpointLoader' => 'loader/ArcanistGitRevisionHardpointLoader.php',
     'ArcanistGitUpstreamPath' => 'repository/api/ArcanistGitUpstreamPath.php',
+    'ArcanistGitWorkingCopy' => 'workingcopy/ArcanistGitWorkingCopy.php',
     'ArcanistGlobalVariableXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistGlobalVariableXHPASTLinterRule.php',
     'ArcanistGlobalVariableXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistGlobalVariableXHPASTLinterRuleTestCase.php',
     'ArcanistGoLintLinter' => 'lint/linter/ArcanistGoLintLinter.php',
@@ -736,6 +303,7 @@
     'ArcanistListAssignmentXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistListAssignmentXHPASTLinterRule.php',
     'ArcanistListAssignmentXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistListAssignmentXHPASTLinterRuleTestCase.php',
     'ArcanistListWorkflow' => 'workflow/ArcanistListWorkflow.php',
+    'ArcanistLocalConfigurationSource' => 'config/source/ArcanistLocalConfigurationSource.php',
     'ArcanistLogicalOperatorsXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistLogicalOperatorsXHPASTLinterRule.php',
     'ArcanistLogicalOperatorsXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistLogicalOperatorsXHPASTLinterRuleTestCase.php',
     'ArcanistLowercaseFunctionsXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistLowercaseFunctionsXHPASTLinterRule.php',
@@ -745,6 +313,7 @@
     'ArcanistMercurialHardpointLoader' => 'loader/ArcanistMercurialHardpointLoader.php',
     'ArcanistMercurialParser' => 'repository/parser/ArcanistMercurialParser.php',
     'ArcanistMercurialParserTestCase' => 'repository/parser/__tests__/ArcanistMercurialParserTestCase.php',
+    'ArcanistMercurialWorkingCopy' => 'workingcopy/ArcanistMercurialWorkingCopy.php',
     'ArcanistMercurialWorkingCopyCommitHardpointLoader' => 'loader/ArcanistMercurialWorkingCopyCommitHardpointLoader.php',
     'ArcanistMergeConflictLinter' => 'lint/linter/ArcanistMergeConflictLinter.php',
     'ArcanistMergeConflictLinterTestCase' => 'lint/linter/__tests__/ArcanistMergeConflictLinterTestCase.php',
@@ -805,6 +374,7 @@
     'ArcanistPlusOperatorOnStringsXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistPlusOperatorOnStringsXHPASTLinterRuleTestCase.php',
     'ArcanistPregQuoteMisuseXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistPregQuoteMisuseXHPASTLinterRule.php',
     'ArcanistPregQuoteMisuseXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistPregQuoteMisuseXHPASTLinterRuleTestCase.php',
+    'ArcanistProjectConfigurationSource' => 'config/source/ArcanistProjectConfigurationSource.php',
     'ArcanistPublicPropertyXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistPublicPropertyXHPASTLinterRule.php',
     'ArcanistPublicPropertyXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistPublicPropertyXHPASTLinterRuleTestCase.php',
     'ArcanistPuppetLintLinter' => 'lint/linter/ArcanistPuppetLintLinter.php',
@@ -834,6 +404,7 @@
     'ArcanistRuboCopLinterTestCase' => 'lint/linter/__tests__/ArcanistRuboCopLinterTestCase.php',
     'ArcanistRubyLinter' => 'lint/linter/ArcanistRubyLinter.php',
     'ArcanistRubyLinterTestCase' => 'lint/linter/__tests__/ArcanistRubyLinterTestCase.php',
+    'ArcanistRuntimeConfigurationSource' => 'config/source/ArcanistRuntimeConfigurationSource.php',
     'ArcanistScriptAndRegexLinter' => 'lint/linter/ArcanistScriptAndRegexLinter.php',
     'ArcanistSelfClassReferenceXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistSelfClassReferenceXHPASTLinterRule.php',
     'ArcanistSelfClassReferenceXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistSelfClassReferenceXHPASTLinterRuleTestCase.php',
@@ -855,8 +426,10 @@
     'ArcanistStaticThisXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistStaticThisXHPASTLinterRuleTestCase.php',
     'ArcanistStopWorkflow' => 'workflow/ArcanistStopWorkflow.php',
     'ArcanistSubversionAPI' => 'repository/api/ArcanistSubversionAPI.php',
+    'ArcanistSubversionWorkingCopy' => 'workingcopy/ArcanistSubversionWorkingCopy.php',
     'ArcanistSummaryLintRenderer' => 'lint/renderer/ArcanistSummaryLintRenderer.php',
     'ArcanistSyntaxErrorXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistSyntaxErrorXHPASTLinterRule.php',
+    'ArcanistSystemConfigurationSource' => 'config/source/ArcanistSystemConfigurationSource.php',
     'ArcanistTasksWorkflow' => 'workflow/ArcanistTasksWorkflow.php',
     'ArcanistTautologicalExpressionXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistTautologicalExpressionXHPASTLinterRule.php',
     'ArcanistTautologicalExpressionXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistTautologicalExpressionXHPASTLinterRuleTestCase.php',
@@ -905,6 +478,7 @@
     'ArcanistUselessOverridingMethodXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUselessOverridingMethodXHPASTLinterRule.php',
     'ArcanistUselessOverridingMethodXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUselessOverridingMethodXHPASTLinterRuleTestCase.php',
     'ArcanistUserAbortException' => 'exception/usage/ArcanistUserAbortException.php',
+    'ArcanistUserConfigurationSource' => 'config/source/ArcanistUserConfigurationSource.php',
     'ArcanistVariableReferenceSpacingXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistVariableReferenceSpacingXHPASTLinterRule.php',
     'ArcanistVariableReferenceSpacingXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistVariableReferenceSpacingXHPASTLinterRuleTestCase.php',
     'ArcanistVariableVariableXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistVariableVariableXHPASTLinterRule.php',
@@ -913,7 +487,8 @@
     'ArcanistWeldWorkflow' => 'workflow/ArcanistWeldWorkflow.php',
     'ArcanistWhichWorkflow' => 'workflow/ArcanistWhichWorkflow.php',
     'ArcanistWorkflow' => 'toolset/ArcanistWorkflow.php',
-    'ArcanistWorkingCopyIdentity' => 'workingcopyidentity/ArcanistWorkingCopyIdentity.php',
+    'ArcanistWorkingCopy' => 'workingcopy/ArcanistWorkingCopy.php',
+    'ArcanistWorkingCopyConfigurationSource' => 'config/source/ArcanistWorkingCopyConfigurationSource.php',
     'ArcanistWorkingCopyStateRef' => 'ref/ArcanistWorkingCopyStateRef.php',
     'ArcanistXHPASTLintNamingHook' => 'lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php',
     'ArcanistXHPASTLintNamingHookTestCase' => 'lint/linter/xhpast/__tests__/ArcanistXHPASTLintNamingHookTestCase.php',
@@ -925,20 +500,464 @@
     'ArcanistXMLLinter' => 'lint/linter/ArcanistXMLLinter.php',
     'ArcanistXMLLinterTestCase' => 'lint/linter/__tests__/ArcanistXMLLinterTestCase.php',
     'ArcanistXUnitTestResultParser' => 'unit/parser/ArcanistXUnitTestResultParser.php',
+    'BaseHTTPFuture' => 'future/http/BaseHTTPFuture.php',
     'CSharpToolsTestEngine' => 'unit/engine/CSharpToolsTestEngine.php',
+    'CaseInsensitiveArray' => 'utils/CaseInsensitiveArray.php',
+    'CaseInsensitiveArrayTestCase' => 'utils/__tests__/CaseInsensitiveArrayTestCase.php',
+    'CommandException' => 'future/exec/CommandException.php',
+    'ConduitClient' => 'conduit/ConduitClient.php',
+    'ConduitClientException' => 'conduit/ConduitClientException.php',
+    'ConduitClientTestCase' => 'conduit/__tests__/ConduitClientTestCase.php',
+    'ConduitFuture' => 'conduit/ConduitFuture.php',
+    'ExecFuture' => 'future/exec/ExecFuture.php',
+    'ExecFutureTestCase' => 'future/exec/__tests__/ExecFutureTestCase.php',
+    'ExecPassthruTestCase' => 'future/exec/__tests__/ExecPassthruTestCase.php',
+    'FileFinder' => 'filesystem/FileFinder.php',
+    'FileFinderTestCase' => 'filesystem/__tests__/FileFinderTestCase.php',
+    'FileList' => 'filesystem/FileList.php',
+    'Filesystem' => 'filesystem/Filesystem.php',
+    'FilesystemException' => 'filesystem/FilesystemException.php',
+    'FilesystemTestCase' => 'filesystem/__tests__/FilesystemTestCase.php',
+    'Future' => 'future/Future.php',
+    'FutureIterator' => 'future/FutureIterator.php',
+    'FutureIteratorTestCase' => 'future/__tests__/FutureIteratorTestCase.php',
+    'FutureProxy' => 'future/FutureProxy.php',
+    'HTTPFuture' => 'future/http/HTTPFuture.php',
+    'HTTPFutureCURLResponseStatus' => 'future/http/status/HTTPFutureCURLResponseStatus.php',
+    'HTTPFutureCertificateResponseStatus' => 'future/http/status/HTTPFutureCertificateResponseStatus.php',
+    'HTTPFutureHTTPResponseStatus' => 'future/http/status/HTTPFutureHTTPResponseStatus.php',
+    'HTTPFutureParseResponseStatus' => 'future/http/status/HTTPFutureParseResponseStatus.php',
+    'HTTPFutureResponseStatus' => 'future/http/status/HTTPFutureResponseStatus.php',
+    'HTTPFutureTransportResponseStatus' => 'future/http/status/HTTPFutureTransportResponseStatus.php',
+    'HTTPSFuture' => 'future/http/HTTPSFuture.php',
+    'ImmediateFuture' => 'future/ImmediateFuture.php',
+    'LibphutilUSEnglishTranslation' => 'internationalization/translation/LibphutilUSEnglishTranslation.php',
+    'LinesOfALarge' => 'filesystem/linesofalarge/LinesOfALarge.php',
+    'LinesOfALargeExecFuture' => 'filesystem/linesofalarge/LinesOfALargeExecFuture.php',
+    'LinesOfALargeExecFutureTestCase' => 'filesystem/linesofalarge/__tests__/LinesOfALargeExecFutureTestCase.php',
+    'LinesOfALargeFile' => 'filesystem/linesofalarge/LinesOfALargeFile.php',
+    'LinesOfALargeFileTestCase' => 'filesystem/linesofalarge/__tests__/LinesOfALargeFileTestCase.php',
+    'MFilterTestHelper' => 'utils/__tests__/MFilterTestHelper.php',
     'NoseTestEngine' => 'unit/engine/NoseTestEngine.php',
+    'PHPASTParserTestCase' => 'parser/xhpast/__tests__/PHPASTParserTestCase.php',
+    'PhageAction' => 'phage/action/PhageAction.php',
+    'PhageAgentAction' => 'phage/action/PhageAgentAction.php',
+    'PhageAgentBootloader' => 'phage/bootloader/PhageAgentBootloader.php',
+    'PhageAgentTestCase' => 'phage/__tests__/PhageAgentTestCase.php',
+    'PhageExecuteAction' => 'phage/action/PhageExecuteAction.php',
+    'PhageLocalAction' => 'phage/action/PhageLocalAction.php',
+    'PhagePHPAgent' => 'phage/agent/PhagePHPAgent.php',
+    'PhagePHPAgentBootloader' => 'phage/bootloader/PhagePHPAgentBootloader.php',
+    'PhagePlanAction' => 'phage/action/PhagePlanAction.php',
     'PhageWorkflow' => 'phage/workflow/PhageWorkflow.php',
+    'Phobject' => 'object/Phobject.php',
+    'PhobjectTestCase' => 'object/__tests__/PhobjectTestCase.php',
     'PhpunitTestEngine' => 'unit/engine/PhpunitTestEngine.php',
     'PhpunitTestEngineTestCase' => 'unit/engine/__tests__/PhpunitTestEngineTestCase.php',
+    'PhutilAPCKeyValueCache' => 'cache/PhutilAPCKeyValueCache.php',
+    'PhutilAWSCloudFormationFuture' => 'future/aws/PhutilAWSCloudFormationFuture.php',
+    'PhutilAWSCloudWatchFuture' => 'future/aws/PhutilAWSCloudWatchFuture.php',
+    'PhutilAWSEC2Future' => 'future/aws/PhutilAWSEC2Future.php',
+    'PhutilAWSException' => 'future/aws/PhutilAWSException.php',
+    'PhutilAWSFuture' => 'future/aws/PhutilAWSFuture.php',
+    'PhutilAWSManagementWorkflow' => 'future/aws/management/PhutilAWSManagementWorkflow.php',
+    'PhutilAWSS3DeleteManagementWorkflow' => 'future/aws/management/PhutilAWSS3DeleteManagementWorkflow.php',
+    'PhutilAWSS3Future' => 'future/aws/PhutilAWSS3Future.php',
+    'PhutilAWSS3GetManagementWorkflow' => 'future/aws/management/PhutilAWSS3GetManagementWorkflow.php',
+    'PhutilAWSS3ManagementWorkflow' => 'future/aws/management/PhutilAWSS3ManagementWorkflow.php',
+    'PhutilAWSS3PutManagementWorkflow' => 'future/aws/management/PhutilAWSS3PutManagementWorkflow.php',
+    'PhutilAWSv4Signature' => 'future/aws/PhutilAWSv4Signature.php',
+    'PhutilAWSv4SignatureTestCase' => 'future/aws/__tests__/PhutilAWSv4SignatureTestCase.php',
+    'PhutilAggregateException' => 'error/PhutilAggregateException.php',
+    'PhutilAllCapsEnglishLocale' => 'internationalization/locales/PhutilAllCapsEnglishLocale.php',
+    'PhutilAmazonAuthAdapter' => 'auth/PhutilAmazonAuthAdapter.php',
+    'PhutilArgumentParser' => 'parser/argument/PhutilArgumentParser.php',
+    'PhutilArgumentParserException' => 'parser/argument/exception/PhutilArgumentParserException.php',
+    'PhutilArgumentParserTestCase' => 'parser/argument/__tests__/PhutilArgumentParserTestCase.php',
+    'PhutilArgumentSpecification' => 'parser/argument/PhutilArgumentSpecification.php',
+    'PhutilArgumentSpecificationException' => 'parser/argument/exception/PhutilArgumentSpecificationException.php',
+    'PhutilArgumentSpecificationTestCase' => 'parser/argument/__tests__/PhutilArgumentSpecificationTestCase.php',
+    'PhutilArgumentSpellingCorrector' => 'parser/argument/PhutilArgumentSpellingCorrector.php',
+    'PhutilArgumentSpellingCorrectorTestCase' => 'parser/argument/__tests__/PhutilArgumentSpellingCorrectorTestCase.php',
+    'PhutilArgumentUsageException' => 'parser/argument/exception/PhutilArgumentUsageException.php',
+    'PhutilArgumentWorkflow' => 'parser/argument/workflow/PhutilArgumentWorkflow.php',
+    'PhutilArray' => 'utils/PhutilArray.php',
+    'PhutilArrayTestCase' => 'utils/__tests__/PhutilArrayTestCase.php',
+    'PhutilArrayWithDefaultValue' => 'utils/PhutilArrayWithDefaultValue.php',
+    'PhutilAsanaAuthAdapter' => 'auth/PhutilAsanaAuthAdapter.php',
+    'PhutilAsanaFuture' => 'future/asana/PhutilAsanaFuture.php',
+    'PhutilAuthAdapter' => 'auth/PhutilAuthAdapter.php',
+    'PhutilAuthConfigurationException' => 'auth/exception/PhutilAuthConfigurationException.php',
+    'PhutilAuthCredentialException' => 'auth/exception/PhutilAuthCredentialException.php',
+    'PhutilAuthException' => 'auth/exception/PhutilAuthException.php',
+    'PhutilAuthUserAbortedException' => 'auth/exception/PhutilAuthUserAbortedException.php',
+    'PhutilBacktraceSignalHandler' => 'future/exec/PhutilBacktraceSignalHandler.php',
+    'PhutilBallOfPHP' => 'phage/util/PhutilBallOfPHP.php',
+    'PhutilBinaryAnalyzer' => 'filesystem/binary/PhutilBinaryAnalyzer.php',
+    'PhutilBinaryAnalyzerTestCase' => 'filesystem/binary/__tests__/PhutilBinaryAnalyzerTestCase.php',
+    'PhutilBitbucketAuthAdapter' => 'auth/PhutilBitbucketAuthAdapter.php',
+    'PhutilBootloader' => 'moduleutils/PhutilBootloader.php',
+    'PhutilBootloaderException' => 'moduleutils/PhutilBootloaderException.php',
+    'PhutilBritishEnglishLocale' => 'internationalization/locales/PhutilBritishEnglishLocale.php',
+    'PhutilBufferedIterator' => 'utils/PhutilBufferedIterator.php',
+    'PhutilBufferedIteratorTestCase' => 'utils/__tests__/PhutilBufferedIteratorTestCase.php',
+    'PhutilBugtraqParser' => 'parser/PhutilBugtraqParser.php',
+    'PhutilBugtraqParserTestCase' => 'parser/__tests__/PhutilBugtraqParserTestCase.php',
+    'PhutilCIDRBlock' => 'ip/PhutilCIDRBlock.php',
+    'PhutilCIDRList' => 'ip/PhutilCIDRList.php',
+    'PhutilCLikeCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilCLikeCodeSnippetContextFreeGrammar.php',
+    'PhutilCalendarAbsoluteDateTime' => 'parser/calendar/data/PhutilCalendarAbsoluteDateTime.php',
+    'PhutilCalendarContainerNode' => 'parser/calendar/data/PhutilCalendarContainerNode.php',
+    'PhutilCalendarDateTime' => 'parser/calendar/data/PhutilCalendarDateTime.php',
+    'PhutilCalendarDateTimeTestCase' => 'parser/calendar/data/__tests__/PhutilCalendarDateTimeTestCase.php',
+    'PhutilCalendarDocumentNode' => 'parser/calendar/data/PhutilCalendarDocumentNode.php',
+    'PhutilCalendarDuration' => 'parser/calendar/data/PhutilCalendarDuration.php',
+    'PhutilCalendarEventNode' => 'parser/calendar/data/PhutilCalendarEventNode.php',
+    'PhutilCalendarNode' => 'parser/calendar/data/PhutilCalendarNode.php',
+    'PhutilCalendarProxyDateTime' => 'parser/calendar/data/PhutilCalendarProxyDateTime.php',
+    'PhutilCalendarRawNode' => 'parser/calendar/data/PhutilCalendarRawNode.php',
+    'PhutilCalendarRecurrenceList' => 'parser/calendar/data/PhutilCalendarRecurrenceList.php',
+    'PhutilCalendarRecurrenceRule' => 'parser/calendar/data/PhutilCalendarRecurrenceRule.php',
+    'PhutilCalendarRecurrenceRuleTestCase' => 'parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php',
+    'PhutilCalendarRecurrenceSet' => 'parser/calendar/data/PhutilCalendarRecurrenceSet.php',
+    'PhutilCalendarRecurrenceSource' => 'parser/calendar/data/PhutilCalendarRecurrenceSource.php',
+    'PhutilCalendarRecurrenceTestCase' => 'parser/calendar/data/__tests__/PhutilCalendarRecurrenceTestCase.php',
+    'PhutilCalendarRelativeDateTime' => 'parser/calendar/data/PhutilCalendarRelativeDateTime.php',
+    'PhutilCalendarRootNode' => 'parser/calendar/data/PhutilCalendarRootNode.php',
+    'PhutilCalendarUserNode' => 'parser/calendar/data/PhutilCalendarUserNode.php',
+    'PhutilCallbackFilterIterator' => 'utils/PhutilCallbackFilterIterator.php',
+    'PhutilCallbackSignalHandler' => 'future/exec/PhutilCallbackSignalHandler.php',
+    'PhutilChannel' => 'channel/PhutilChannel.php',
+    'PhutilChannelChannel' => 'channel/PhutilChannelChannel.php',
+    'PhutilChannelTestCase' => 'channel/__tests__/PhutilChannelTestCase.php',
+    'PhutilChunkedIterator' => 'utils/PhutilChunkedIterator.php',
+    'PhutilChunkedIteratorTestCase' => 'utils/__tests__/PhutilChunkedIteratorTestCase.php',
+    'PhutilClassMapQuery' => 'symbols/PhutilClassMapQuery.php',
+    'PhutilCloudWatchMetric' => 'future/aws/PhutilCloudWatchMetric.php',
+    'PhutilCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilCodeSnippetContextFreeGrammar.php',
+    'PhutilCommandString' => 'xsprintf/PhutilCommandString.php',
+    'PhutilConsole' => 'console/PhutilConsole.php',
+    'PhutilConsoleBlock' => 'console/view/PhutilConsoleBlock.php',
+    'PhutilConsoleError' => 'console/view/PhutilConsoleError.php',
+    'PhutilConsoleFormatter' => 'console/PhutilConsoleFormatter.php',
+    'PhutilConsoleInfo' => 'console/view/PhutilConsoleInfo.php',
+    'PhutilConsoleList' => 'console/view/PhutilConsoleList.php',
+    'PhutilConsoleLogLine' => 'console/view/PhutilConsoleLogLine.php',
+    'PhutilConsoleMessage' => 'console/PhutilConsoleMessage.php',
+    'PhutilConsoleMetrics' => 'console/PhutilConsoleMetrics.php',
+    'PhutilConsoleMetricsSignalHandler' => 'future/exec/PhutilConsoleMetricsSignalHandler.php',
+    'PhutilConsoleProgressBar' => 'console/PhutilConsoleProgressBar.php',
+    'PhutilConsoleServer' => 'console/PhutilConsoleServer.php',
+    'PhutilConsoleServerChannel' => 'console/PhutilConsoleServerChannel.php',
+    'PhutilConsoleSkip' => 'console/view/PhutilConsoleSkip.php',
+    'PhutilConsoleStdinNotInteractiveException' => 'console/PhutilConsoleStdinNotInteractiveException.php',
+    'PhutilConsoleSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilConsoleSyntaxHighlighter.php',
+    'PhutilConsoleTable' => 'console/view/PhutilConsoleTable.php',
+    'PhutilConsoleView' => 'console/view/PhutilConsoleView.php',
+    'PhutilConsoleWarning' => 'console/view/PhutilConsoleWarning.php',
+    'PhutilConsoleWrapTestCase' => 'console/__tests__/PhutilConsoleWrapTestCase.php',
+    'PhutilContextFreeGrammar' => 'grammar/PhutilContextFreeGrammar.php',
+    'PhutilCowsay' => 'utils/PhutilCowsay.php',
+    'PhutilCowsayTestCase' => 'utils/__tests__/PhutilCowsayTestCase.php',
+    'PhutilCsprintfTestCase' => 'xsprintf/__tests__/PhutilCsprintfTestCase.php',
+    'PhutilCzechLocale' => 'internationalization/locales/PhutilCzechLocale.php',
+    'PhutilDaemon' => 'daemon/PhutilDaemon.php',
+    'PhutilDaemonHandle' => 'daemon/PhutilDaemonHandle.php',
+    'PhutilDaemonOverseer' => 'daemon/PhutilDaemonOverseer.php',
+    'PhutilDaemonOverseerModule' => 'daemon/PhutilDaemonOverseerModule.php',
+    'PhutilDaemonPool' => 'daemon/PhutilDaemonPool.php',
+    'PhutilDefaultSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php',
+    'PhutilDefaultSyntaxHighlighterEngine' => 'markup/syntax/engine/PhutilDefaultSyntaxHighlighterEngine.php',
+    'PhutilDefaultSyntaxHighlighterEnginePygmentsFuture' => 'markup/syntax/highlighter/pygments/PhutilDefaultSyntaxHighlighterEnginePygmentsFuture.php',
+    'PhutilDefaultSyntaxHighlighterEngineTestCase' => 'markup/syntax/engine/__tests__/PhutilDefaultSyntaxHighlighterEngineTestCase.php',
+    'PhutilDeferredLog' => 'filesystem/PhutilDeferredLog.php',
+    'PhutilDeferredLogTestCase' => 'filesystem/__tests__/PhutilDeferredLogTestCase.php',
+    'PhutilDiffBinaryAnalyzer' => 'filesystem/binary/PhutilDiffBinaryAnalyzer.php',
+    'PhutilDirectedScalarGraph' => 'utils/PhutilDirectedScalarGraph.php',
+    'PhutilDirectoryFixture' => 'filesystem/PhutilDirectoryFixture.php',
+    'PhutilDirectoryKeyValueCache' => 'cache/PhutilDirectoryKeyValueCache.php',
+    'PhutilDisqusAuthAdapter' => 'auth/PhutilDisqusAuthAdapter.php',
+    'PhutilDivinerSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilDivinerSyntaxHighlighter.php',
+    'PhutilDocblockParser' => 'parser/PhutilDocblockParser.php',
+    'PhutilDocblockParserTestCase' => 'parser/__tests__/PhutilDocblockParserTestCase.php',
+    'PhutilEditDistanceMatrix' => 'utils/PhutilEditDistanceMatrix.php',
+    'PhutilEditDistanceMatrixTestCase' => 'utils/__tests__/PhutilEditDistanceMatrixTestCase.php',
+    'PhutilEditorConfig' => 'parser/PhutilEditorConfig.php',
+    'PhutilEditorConfigTestCase' => 'parser/__tests__/PhutilEditorConfigTestCase.php',
+    'PhutilEmailAddress' => 'parser/PhutilEmailAddress.php',
+    'PhutilEmailAddressTestCase' => 'parser/__tests__/PhutilEmailAddressTestCase.php',
+    'PhutilEmojiLocale' => 'internationalization/locales/PhutilEmojiLocale.php',
+    'PhutilEmptyAuthAdapter' => 'auth/PhutilEmptyAuthAdapter.php',
+    'PhutilEnglishCanadaLocale' => 'internationalization/locales/PhutilEnglishCanadaLocale.php',
+    'PhutilErrorHandler' => 'error/PhutilErrorHandler.php',
+    'PhutilErrorHandlerTestCase' => 'error/__tests__/PhutilErrorHandlerTestCase.php',
+    'PhutilErrorTrap' => 'error/PhutilErrorTrap.php',
+    'PhutilEvent' => 'events/PhutilEvent.php',
+    'PhutilEventConstants' => 'events/constant/PhutilEventConstants.php',
+    'PhutilEventEngine' => 'events/PhutilEventEngine.php',
+    'PhutilEventListener' => 'events/PhutilEventListener.php',
+    'PhutilEventType' => 'events/constant/PhutilEventType.php',
+    'PhutilExampleBufferedIterator' => 'utils/PhutilExampleBufferedIterator.php',
+    'PhutilExcessiveServiceCallsDaemon' => 'daemon/torture/PhutilExcessiveServiceCallsDaemon.php',
+    'PhutilExecChannel' => 'channel/PhutilExecChannel.php',
+    'PhutilExecPassthru' => 'future/exec/PhutilExecPassthru.php',
+    'PhutilExecutableFuture' => 'future/exec/PhutilExecutableFuture.php',
+    'PhutilExecutionEnvironment' => 'utils/PhutilExecutionEnvironment.php',
+    'PhutilExtensionsTestCase' => 'moduleutils/__tests__/PhutilExtensionsTestCase.php',
+    'PhutilFacebookAuthAdapter' => 'auth/PhutilFacebookAuthAdapter.php',
+    'PhutilFatalDaemon' => 'daemon/torture/PhutilFatalDaemon.php',
+    'PhutilFileLock' => 'filesystem/PhutilFileLock.php',
+    'PhutilFileLockTestCase' => 'filesystem/__tests__/PhutilFileLockTestCase.php',
+    'PhutilFileTree' => 'filesystem/PhutilFileTree.php',
+    'PhutilFrenchLocale' => 'internationalization/locales/PhutilFrenchLocale.php',
+    'PhutilGermanLocale' => 'internationalization/locales/PhutilGermanLocale.php',
+    'PhutilGitBinaryAnalyzer' => 'filesystem/binary/PhutilGitBinaryAnalyzer.php',
+    'PhutilGitHubAuthAdapter' => 'auth/PhutilGitHubAuthAdapter.php',
+    'PhutilGitHubFuture' => 'future/github/PhutilGitHubFuture.php',
+    'PhutilGitHubResponse' => 'future/github/PhutilGitHubResponse.php',
+    'PhutilGitURI' => 'parser/PhutilGitURI.php',
+    'PhutilGitURITestCase' => 'parser/__tests__/PhutilGitURITestCase.php',
+    'PhutilGoogleAuthAdapter' => 'auth/PhutilGoogleAuthAdapter.php',
+    'PhutilHTTPEngineExtension' => 'future/http/PhutilHTTPEngineExtension.php',
+    'PhutilHTTPResponse' => 'parser/http/PhutilHTTPResponse.php',
+    'PhutilHTTPResponseParser' => 'parser/http/PhutilHTTPResponseParser.php',
+    'PhutilHTTPResponseParserTestCase' => 'parser/http/__tests__/PhutilHTTPResponseParserTestCase.php',
+    'PhutilHangForeverDaemon' => 'daemon/torture/PhutilHangForeverDaemon.php',
+    'PhutilHashingIterator' => 'utils/PhutilHashingIterator.php',
+    'PhutilHashingIteratorTestCase' => 'utils/__tests__/PhutilHashingIteratorTestCase.php',
+    'PhutilHelpArgumentWorkflow' => 'parser/argument/workflow/PhutilHelpArgumentWorkflow.php',
+    'PhutilHgsprintfTestCase' => 'xsprintf/__tests__/PhutilHgsprintfTestCase.php',
+    'PhutilHighIntensityIntervalDaemon' => 'daemon/torture/PhutilHighIntensityIntervalDaemon.php',
+    'PhutilICSParser' => 'parser/calendar/ics/PhutilICSParser.php',
+    'PhutilICSParserException' => 'parser/calendar/ics/PhutilICSParserException.php',
+    'PhutilICSParserTestCase' => 'parser/calendar/ics/__tests__/PhutilICSParserTestCase.php',
+    'PhutilICSWriter' => 'parser/calendar/ics/PhutilICSWriter.php',
+    'PhutilICSWriterTestCase' => 'parser/calendar/ics/__tests__/PhutilICSWriterTestCase.php',
+    'PhutilINIParserException' => 'parser/exception/PhutilINIParserException.php',
+    'PhutilIPAddress' => 'ip/PhutilIPAddress.php',
+    'PhutilIPAddressTestCase' => 'ip/__tests__/PhutilIPAddressTestCase.php',
+    'PhutilIPv4Address' => 'ip/PhutilIPv4Address.php',
+    'PhutilIPv6Address' => 'ip/PhutilIPv6Address.php',
+    'PhutilInRequestKeyValueCache' => 'cache/PhutilInRequestKeyValueCache.php',
+    'PhutilInteractiveEditor' => 'console/PhutilInteractiveEditor.php',
+    'PhutilInvalidRuleParserGeneratorException' => 'parser/generator/exception/PhutilInvalidRuleParserGeneratorException.php',
+    'PhutilInvalidStateException' => 'exception/PhutilInvalidStateException.php',
+    'PhutilInvalidStateExceptionTestCase' => 'exception/__tests__/PhutilInvalidStateExceptionTestCase.php',
+    'PhutilInvisibleSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php',
+    'PhutilIrreducibleRuleParserGeneratorException' => 'parser/generator/exception/PhutilIrreducibleRuleParserGeneratorException.php',
+    'PhutilJIRAAuthAdapter' => 'auth/PhutilJIRAAuthAdapter.php',
+    'PhutilJSON' => 'parser/PhutilJSON.php',
+    'PhutilJSONFragmentLexer' => 'lexer/PhutilJSONFragmentLexer.php',
+    'PhutilJSONFragmentLexerHighlighterTestCase' => 'markup/syntax/highlighter/__tests__/PhutilJSONFragmentLexerHighlighterTestCase.php',
+    'PhutilJSONParser' => 'parser/PhutilJSONParser.php',
+    'PhutilJSONParserException' => 'parser/exception/PhutilJSONParserException.php',
+    'PhutilJSONParserTestCase' => 'parser/__tests__/PhutilJSONParserTestCase.php',
+    'PhutilJSONProtocolChannel' => 'channel/PhutilJSONProtocolChannel.php',
+    'PhutilJSONProtocolChannelTestCase' => 'channel/__tests__/PhutilJSONProtocolChannelTestCase.php',
+    'PhutilJSONTestCase' => 'parser/__tests__/PhutilJSONTestCase.php',
+    'PhutilJavaCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilJavaCodeSnippetContextFreeGrammar.php',
+    'PhutilJavaFragmentLexer' => 'lexer/PhutilJavaFragmentLexer.php',
+    'PhutilKeyValueCache' => 'cache/PhutilKeyValueCache.php',
+    'PhutilKeyValueCacheNamespace' => 'cache/PhutilKeyValueCacheNamespace.php',
+    'PhutilKeyValueCacheProfiler' => 'cache/PhutilKeyValueCacheProfiler.php',
+    'PhutilKeyValueCacheProxy' => 'cache/PhutilKeyValueCacheProxy.php',
+    'PhutilKeyValueCacheStack' => 'cache/PhutilKeyValueCacheStack.php',
+    'PhutilKeyValueCacheTestCase' => 'cache/__tests__/PhutilKeyValueCacheTestCase.php',
+    'PhutilKoreanLocale' => 'internationalization/locales/PhutilKoreanLocale.php',
+    'PhutilLDAPAuthAdapter' => 'auth/PhutilLDAPAuthAdapter.php',
+    'PhutilLanguageGuesser' => 'parser/PhutilLanguageGuesser.php',
+    'PhutilLanguageGuesserTestCase' => 'parser/__tests__/PhutilLanguageGuesserTestCase.php',
+    'PhutilLexer' => 'lexer/PhutilLexer.php',
+    'PhutilLexerSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilLexerSyntaxHighlighter.php',
+    'PhutilLibraryConflictException' => 'moduleutils/PhutilLibraryConflictException.php',
+    'PhutilLibraryMapBuilder' => 'moduleutils/PhutilLibraryMapBuilder.php',
+    'PhutilLibraryTestCase' => '__tests__/PhutilLibraryTestCase.php',
+    'PhutilLipsumContextFreeGrammar' => 'grammar/PhutilLipsumContextFreeGrammar.php',
+    'PhutilLocale' => 'internationalization/PhutilLocale.php',
+    'PhutilLocaleTestCase' => 'internationalization/__tests__/PhutilLocaleTestCase.php',
+    'PhutilLock' => 'filesystem/PhutilLock.php',
+    'PhutilLockException' => 'filesystem/PhutilLockException.php',
+    'PhutilLogFileChannel' => 'channel/PhutilLogFileChannel.php',
+    'PhutilLunarPhase' => 'utils/PhutilLunarPhase.php',
+    'PhutilLunarPhaseTestCase' => 'utils/__tests__/PhutilLunarPhaseTestCase.php',
+    'PhutilMarkupEngine' => 'markup/PhutilMarkupEngine.php',
+    'PhutilMarkupTestCase' => 'markup/__tests__/PhutilMarkupTestCase.php',
+    'PhutilMemcacheKeyValueCache' => 'cache/PhutilMemcacheKeyValueCache.php',
+    'PhutilMercurialBinaryAnalyzer' => 'filesystem/binary/PhutilMercurialBinaryAnalyzer.php',
+    'PhutilMethodNotImplementedException' => 'error/PhutilMethodNotImplementedException.php',
+    'PhutilMetricsChannel' => 'channel/PhutilMetricsChannel.php',
+    'PhutilMissingSymbolException' => 'symbols/exception/PhutilMissingSymbolException.php',
+    'PhutilModuleUtilsTestCase' => 'moduleutils/__tests__/PhutilModuleUtilsTestCase.php',
+    'PhutilNiceDaemon' => 'daemon/torture/PhutilNiceDaemon.php',
+    'PhutilNumber' => 'internationalization/PhutilNumber.php',
+    'PhutilOAuth1AuthAdapter' => 'auth/PhutilOAuth1AuthAdapter.php',
+    'PhutilOAuth1Future' => 'future/oauth/PhutilOAuth1Future.php',
+    'PhutilOAuth1FutureTestCase' => 'future/oauth/__tests__/PhutilOAuth1FutureTestCase.php',
+    'PhutilOAuthAuthAdapter' => 'auth/PhutilOAuthAuthAdapter.php',
+    'PhutilOnDiskKeyValueCache' => 'cache/PhutilOnDiskKeyValueCache.php',
+    'PhutilOpaqueEnvelope' => 'error/PhutilOpaqueEnvelope.php',
+    'PhutilOpaqueEnvelopeKey' => 'error/PhutilOpaqueEnvelopeKey.php',
+    'PhutilOpaqueEnvelopeTestCase' => 'error/__tests__/PhutilOpaqueEnvelopeTestCase.php',
+    'PhutilPHPCodeSnippetContextFreeGrammar' => 'grammar/code/PhutilPHPCodeSnippetContextFreeGrammar.php',
+    'PhutilPHPFragmentLexer' => 'lexer/PhutilPHPFragmentLexer.php',
+    'PhutilPHPFragmentLexerHighlighterTestCase' => 'markup/syntax/highlighter/__tests__/PhutilPHPFragmentLexerHighlighterTestCase.php',
+    'PhutilPHPFragmentLexerTestCase' => 'lexer/__tests__/PhutilPHPFragmentLexerTestCase.php',
+    'PhutilPHPObjectProtocolChannel' => 'channel/PhutilPHPObjectProtocolChannel.php',
+    'PhutilPHPObjectProtocolChannelTestCase' => 'channel/__tests__/PhutilPHPObjectProtocolChannelTestCase.php',
+    'PhutilParserGenerator' => 'parser/PhutilParserGenerator.php',
+    'PhutilParserGeneratorException' => 'parser/generator/exception/PhutilParserGeneratorException.php',
+    'PhutilParserGeneratorTestCase' => 'parser/__tests__/PhutilParserGeneratorTestCase.php',
+    'PhutilPayPalAPIFuture' => 'future/paypal/PhutilPayPalAPIFuture.php',
+    'PhutilPerson' => 'internationalization/PhutilPerson.php',
+    'PhutilPersonTest' => 'internationalization/__tests__/PhutilPersonTest.php',
+    'PhutilPhabricatorAuthAdapter' => 'auth/PhutilPhabricatorAuthAdapter.php',
+    'PhutilPhtTestCase' => 'internationalization/__tests__/PhutilPhtTestCase.php',
+    'PhutilPirateEnglishLocale' => 'internationalization/locales/PhutilPirateEnglishLocale.php',
+    'PhutilPortugueseBrazilLocale' => 'internationalization/locales/PhutilPortugueseBrazilLocale.php',
+    'PhutilPortuguesePortugalLocale' => 'internationalization/locales/PhutilPortuguesePortugalLocale.php',
+    'PhutilPostmarkFuture' => 'future/postmark/PhutilPostmarkFuture.php',
+    'PhutilPregsprintfTestCase' => 'xsprintf/__tests__/PhutilPregsprintfTestCase.php',
+    'PhutilProcessGroupDaemon' => 'daemon/torture/PhutilProcessGroupDaemon.php',
+    'PhutilProseDiff' => 'utils/PhutilProseDiff.php',
+    'PhutilProseDiffTestCase' => 'utils/__tests__/PhutilProseDiffTestCase.php',
+    'PhutilProseDifferenceEngine' => 'utils/PhutilProseDifferenceEngine.php',
+    'PhutilProtocolChannel' => 'channel/PhutilProtocolChannel.php',
+    'PhutilProxyException' => 'error/PhutilProxyException.php',
+    'PhutilProxyIterator' => 'utils/PhutilProxyIterator.php',
+    'PhutilPygmentizeBinaryAnalyzer' => 'filesystem/binary/PhutilPygmentizeBinaryAnalyzer.php',
+    'PhutilPygmentizeParser' => 'parser/PhutilPygmentizeParser.php',
+    'PhutilPygmentizeParserTestCase' => 'parser/__tests__/PhutilPygmentizeParserTestCase.php',
+    'PhutilPygmentsSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilPygmentsSyntaxHighlighter.php',
+    'PhutilPythonFragmentLexer' => 'lexer/PhutilPythonFragmentLexer.php',
+    'PhutilQsprintfInterface' => 'xsprintf/PhutilQsprintfInterface.php',
+    'PhutilQueryStringParser' => 'parser/PhutilQueryStringParser.php',
+    'PhutilQueryStringParserTestCase' => 'parser/__tests__/PhutilQueryStringParserTestCase.php',
+    'PhutilRainbowSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilRainbowSyntaxHighlighter.php',
+    'PhutilRawEnglishLocale' => 'internationalization/locales/PhutilRawEnglishLocale.php',
+    'PhutilReadableSerializer' => 'readableserializer/PhutilReadableSerializer.php',
+    'PhutilReadableSerializerTestCase' => 'readableserializer/__tests__/PhutilReadableSerializerTestCase.php',
+    'PhutilRealNameContextFreeGrammar' => 'grammar/PhutilRealNameContextFreeGrammar.php',
+    'PhutilRemarkupBlockInterpreter' => 'markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php',
+    'PhutilRemarkupBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php',
+    'PhutilRemarkupBlockStorage' => 'markup/engine/remarkup/PhutilRemarkupBlockStorage.php',
+    'PhutilRemarkupBoldRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupBoldRule.php',
+    'PhutilRemarkupCodeBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupCodeBlockRule.php',
+    'PhutilRemarkupDefaultBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupDefaultBlockRule.php',
+    'PhutilRemarkupDelRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupDelRule.php',
+    'PhutilRemarkupDocumentLinkRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupDocumentLinkRule.php',
+    'PhutilRemarkupEngine' => 'markup/engine/PhutilRemarkupEngine.php',
+    'PhutilRemarkupEngineTestCase' => 'markup/engine/__tests__/PhutilRemarkupEngineTestCase.php',
+    'PhutilRemarkupEscapeRemarkupRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupEscapeRemarkupRule.php',
+    'PhutilRemarkupHeaderBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupHeaderBlockRule.php',
+    'PhutilRemarkupHighlightRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupHighlightRule.php',
+    'PhutilRemarkupHorizontalRuleBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupHorizontalRuleBlockRule.php',
+    'PhutilRemarkupHyperlinkRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupHyperlinkRule.php',
+    'PhutilRemarkupInlineBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupInlineBlockRule.php',
+    'PhutilRemarkupInterpreterBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupInterpreterBlockRule.php',
+    'PhutilRemarkupItalicRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupItalicRule.php',
+    'PhutilRemarkupLinebreaksRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupLinebreaksRule.php',
+    'PhutilRemarkupListBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupListBlockRule.php',
+    'PhutilRemarkupLiteralBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupLiteralBlockRule.php',
+    'PhutilRemarkupMonospaceRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupMonospaceRule.php',
+    'PhutilRemarkupNoteBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupNoteBlockRule.php',
+    'PhutilRemarkupQuotesBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupQuotesBlockRule.php',
+    'PhutilRemarkupReplyBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupReplyBlockRule.php',
+    'PhutilRemarkupRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupRule.php',
+    'PhutilRemarkupSimpleTableBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupSimpleTableBlockRule.php',
+    'PhutilRemarkupTableBlockRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupTableBlockRule.php',
+    'PhutilRemarkupTestInterpreterRule' => 'markup/engine/remarkup/blockrule/PhutilRemarkupTestInterpreterRule.php',
+    'PhutilRemarkupUnderlineRule' => 'markup/engine/remarkup/markuprule/PhutilRemarkupUnderlineRule.php',
+    'PhutilRope' => 'utils/PhutilRope.php',
+    'PhutilRopeTestCase' => 'utils/__tests__/PhutilRopeTestCase.php',
+    'PhutilSafeHTML' => 'markup/PhutilSafeHTML.php',
+    'PhutilSafeHTMLProducerInterface' => 'markup/PhutilSafeHTMLProducerInterface.php',
+    'PhutilSafeHTMLTestCase' => 'markup/__tests__/PhutilSafeHTMLTestCase.php',
+    'PhutilSaturateStdoutDaemon' => 'daemon/torture/PhutilSaturateStdoutDaemon.php',
+    'PhutilSearchQueryCompiler' => 'search/PhutilSearchQueryCompiler.php',
+    'PhutilSearchQueryCompilerSyntaxException' => 'search/PhutilSearchQueryCompilerSyntaxException.php',
+    'PhutilSearchQueryCompilerTestCase' => 'search/__tests__/PhutilSearchQueryCompilerTestCase.php',
+    'PhutilSearchQueryToken' => 'search/PhutilSearchQueryToken.php',
+    'PhutilSearchStemmer' => 'search/PhutilSearchStemmer.php',
+    'PhutilSearchStemmerTestCase' => 'search/__tests__/PhutilSearchStemmerTestCase.php',
+    'PhutilServiceProfiler' => 'serviceprofiler/PhutilServiceProfiler.php',
+    'PhutilShellLexer' => 'lexer/PhutilShellLexer.php',
+    'PhutilShellLexerTestCase' => 'lexer/__tests__/PhutilShellLexerTestCase.php',
+    'PhutilSignalHandler' => 'future/exec/PhutilSignalHandler.php',
+    'PhutilSignalRouter' => 'future/exec/PhutilSignalRouter.php',
+    'PhutilSimpleOptions' => 'parser/PhutilSimpleOptions.php',
+    'PhutilSimpleOptionsLexer' => 'lexer/PhutilSimpleOptionsLexer.php',
+    'PhutilSimpleOptionsLexerTestCase' => 'lexer/__tests__/PhutilSimpleOptionsLexerTestCase.php',
+    'PhutilSimpleOptionsTestCase' => 'parser/__tests__/PhutilSimpleOptionsTestCase.php',
+    'PhutilSimplifiedChineseLocale' => 'internationalization/locales/PhutilSimplifiedChineseLocale.php',
+    'PhutilSlackAuthAdapter' => 'auth/PhutilSlackAuthAdapter.php',
+    'PhutilSlackFuture' => 'future/slack/PhutilSlackFuture.php',
+    'PhutilSocketChannel' => 'channel/PhutilSocketChannel.php',
+    'PhutilSortVector' => 'utils/PhutilSortVector.php',
+    'PhutilSpanishSpainLocale' => 'internationalization/locales/PhutilSpanishSpainLocale.php',
+    'PhutilSprite' => 'sprites/PhutilSprite.php',
+    'PhutilSpriteSheet' => 'sprites/PhutilSpriteSheet.php',
+    'PhutilStreamIterator' => 'utils/PhutilStreamIterator.php',
+    'PhutilSubversionBinaryAnalyzer' => 'filesystem/binary/PhutilSubversionBinaryAnalyzer.php',
+    'PhutilSymbolLoader' => 'symbols/PhutilSymbolLoader.php',
+    'PhutilSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilSyntaxHighlighter.php',
+    'PhutilSyntaxHighlighterEngine' => 'markup/syntax/engine/PhutilSyntaxHighlighterEngine.php',
+    'PhutilSyntaxHighlighterException' => 'markup/syntax/highlighter/PhutilSyntaxHighlighterException.php',
+    'PhutilSystem' => 'utils/PhutilSystem.php',
+    'PhutilSystemTestCase' => 'utils/__tests__/PhutilSystemTestCase.php',
+    'PhutilTerminalString' => 'xsprintf/PhutilTerminalString.php',
     'PhutilTestCase' => 'unit/engine/phutil/PhutilTestCase.php',
     'PhutilTestCaseTestCase' => 'unit/engine/phutil/testcase/PhutilTestCaseTestCase.php',
+    'PhutilTestPhobject' => 'object/__tests__/PhutilTestPhobject.php',
     'PhutilTestSkippedException' => 'unit/engine/phutil/testcase/PhutilTestSkippedException.php',
     'PhutilTestTerminatedException' => 'unit/engine/phutil/testcase/PhutilTestTerminatedException.php',
+    'PhutilTortureTestDaemon' => 'daemon/torture/PhutilTortureTestDaemon.php',
+    'PhutilTraditionalChineseLocale' => 'internationalization/locales/PhutilTraditionalChineseLocale.php',
+    'PhutilTranslation' => 'internationalization/PhutilTranslation.php',
+    'PhutilTranslationTestCase' => 'internationalization/__tests__/PhutilTranslationTestCase.php',
+    'PhutilTranslator' => 'internationalization/PhutilTranslator.php',
+    'PhutilTranslatorTestCase' => 'internationalization/__tests__/PhutilTranslatorTestCase.php',
+    'PhutilTsprintfTestCase' => 'xsprintf/__tests__/PhutilTsprintfTestCase.php',
+    'PhutilTwitchAuthAdapter' => 'auth/PhutilTwitchAuthAdapter.php',
+    'PhutilTwitchFuture' => 'future/twitch/PhutilTwitchFuture.php',
+    'PhutilTwitterAuthAdapter' => 'auth/PhutilTwitterAuthAdapter.php',
+    'PhutilTypeCheckException' => 'parser/exception/PhutilTypeCheckException.php',
+    'PhutilTypeExtraParametersException' => 'parser/exception/PhutilTypeExtraParametersException.php',
+    'PhutilTypeLexer' => 'lexer/PhutilTypeLexer.php',
+    'PhutilTypeMissingParametersException' => 'parser/exception/PhutilTypeMissingParametersException.php',
+    'PhutilTypeSpec' => 'parser/PhutilTypeSpec.php',
+    'PhutilTypeSpecTestCase' => 'parser/__tests__/PhutilTypeSpecTestCase.php',
+    'PhutilURI' => 'parser/PhutilURI.php',
+    'PhutilURITestCase' => 'parser/__tests__/PhutilURITestCase.php',
+    'PhutilUSEnglishLocale' => 'internationalization/locales/PhutilUSEnglishLocale.php',
+    'PhutilUTF8StringTruncator' => 'utils/PhutilUTF8StringTruncator.php',
+    'PhutilUTF8TestCase' => 'utils/__tests__/PhutilUTF8TestCase.php',
     'PhutilUnitTestEngine' => 'unit/engine/PhutilUnitTestEngine.php',
     'PhutilUnitTestEngineTestCase' => 'unit/engine/__tests__/PhutilUnitTestEngineTestCase.php',
+    'PhutilUnknownSymbolParserGeneratorException' => 'parser/generator/exception/PhutilUnknownSymbolParserGeneratorException.php',
+    'PhutilUnreachableRuleParserGeneratorException' => 'parser/generator/exception/PhutilUnreachableRuleParserGeneratorException.php',
+    'PhutilUnreachableTerminalParserGeneratorException' => 'parser/generator/exception/PhutilUnreachableTerminalParserGeneratorException.php',
+    'PhutilUrisprintfTestCase' => 'xsprintf/__tests__/PhutilUrisprintfTestCase.php',
+    'PhutilUtilsTestCase' => 'utils/__tests__/PhutilUtilsTestCase.php',
+    'PhutilVeryWowEnglishLocale' => 'internationalization/locales/PhutilVeryWowEnglishLocale.php',
+    'PhutilWordPressAuthAdapter' => 'auth/PhutilWordPressAuthAdapter.php',
+    'PhutilWordPressFuture' => 'future/wordpress/PhutilWordPressFuture.php',
+    'PhutilXHPASTBinary' => 'parser/xhpast/bin/PhutilXHPASTBinary.php',
+    'PhutilXHPASTSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilXHPASTSyntaxHighlighter.php',
+    'PhutilXHPASTSyntaxHighlighterFuture' => 'markup/syntax/highlighter/xhpast/PhutilXHPASTSyntaxHighlighterFuture.php',
+    'PhutilXHPASTSyntaxHighlighterTestCase' => 'markup/syntax/highlighter/__tests__/PhutilXHPASTSyntaxHighlighterTestCase.php',
     'PytestTestEngine' => 'unit/engine/PytestTestEngine.php',
+    'QueryFuture' => 'future/query/QueryFuture.php',
+    'TempFile' => 'filesystem/TempFile.php',
+    'TestAbstractDirectedGraph' => 'utils/__tests__/TestAbstractDirectedGraph.php',
+    'XHPASTNode' => 'parser/xhpast/api/XHPASTNode.php',
+    'XHPASTNodeTestCase' => 'parser/xhpast/api/__tests__/XHPASTNodeTestCase.php',
+    'XHPASTSyntaxErrorException' => 'parser/xhpast/api/XHPASTSyntaxErrorException.php',
+    'XHPASTToken' => 'parser/xhpast/api/XHPASTToken.php',
+    'XHPASTTree' => 'parser/xhpast/api/XHPASTTree.php',
+    'XHPASTTreeTestCase' => 'parser/xhpast/api/__tests__/XHPASTTreeTestCase.php',
     'XUnitTestEngine' => 'unit/engine/XUnitTestEngine.php',
     'XUnitTestResultParserTestCase' => 'unit/parser/__tests__/XUnitTestResultParserTestCase.php',
+    'XsprintfUnknownConversionException' => 'xsprintf/exception/XsprintfUnknownConversionException.php',
   ),
   'function' => array(
     'array_fuse' => 'utils/utils.php',
@@ -1075,6 +1094,49 @@
     'xsprintf_uri' => 'xsprintf/urisprintf.php',
   ),
   'xmap' => array(
+    'AASTNode' => 'Phobject',
+    'AASTNodeList' => array(
+      'Phobject',
+      'Countable',
+      'Iterator',
+    ),
+    'AASTToken' => 'Phobject',
+    'AASTTree' => 'Phobject',
+    'AbstractDirectedGraph' => 'Phobject',
+    'AbstractDirectedGraphTestCase' => 'PhutilTestCase',
+    'AphrontAccessDeniedQueryException' => 'AphrontQueryException',
+    'AphrontBaseMySQLDatabaseConnection' => 'AphrontDatabaseConnection',
+    'AphrontCharacterSetQueryException' => 'AphrontQueryException',
+    'AphrontConnectionLostQueryException' => 'AphrontRecoverableQueryException',
+    'AphrontConnectionQueryException' => 'AphrontQueryException',
+    'AphrontCountQueryException' => 'AphrontQueryException',
+    'AphrontDatabaseConnection' => array(
+      'Phobject',
+      'PhutilQsprintfInterface',
+    ),
+    'AphrontDatabaseTransactionState' => 'Phobject',
+    'AphrontDeadlockQueryException' => 'AphrontRecoverableQueryException',
+    'AphrontDuplicateKeyQueryException' => 'AphrontQueryException',
+    'AphrontHTTPHeaderParser' => 'Phobject',
+    'AphrontHTTPHeaderParserTestCase' => 'PhutilTestCase',
+    'AphrontInvalidCredentialsQueryException' => 'AphrontQueryException',
+    'AphrontIsolatedDatabaseConnection' => 'AphrontDatabaseConnection',
+    'AphrontLockTimeoutQueryException' => 'AphrontRecoverableQueryException',
+    'AphrontMultipartParser' => 'Phobject',
+    'AphrontMultipartParserTestCase' => 'PhutilTestCase',
+    'AphrontMultipartPart' => 'Phobject',
+    'AphrontMySQLDatabaseConnection' => 'AphrontBaseMySQLDatabaseConnection',
+    'AphrontMySQLiDatabaseConnection' => 'AphrontBaseMySQLDatabaseConnection',
+    'AphrontNotSupportedQueryException' => 'AphrontQueryException',
+    'AphrontObjectMissingQueryException' => 'AphrontQueryException',
+    'AphrontParameterQueryException' => 'AphrontQueryException',
+    'AphrontQueryException' => 'Exception',
+    'AphrontQueryTimeoutQueryException' => 'AphrontRecoverableQueryException',
+    'AphrontRecoverableQueryException' => 'AphrontQueryException',
+    'AphrontRequestStream' => 'Phobject',
+    'AphrontSchemaQueryException' => 'AphrontQueryException',
+    'AphrontScopedUnguardedWriteCapability' => 'Phobject',
+    'AphrontWriteGuard' => 'Phobject',
     'ArcanistAbstractMethodBodyXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistAbstractMethodBodyXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistAbstractPrivateMethodXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -1084,6 +1146,7 @@
     'ArcanistAliasWorkflow' => 'ArcanistWorkflow',
     'ArcanistAmendWorkflow' => 'ArcanistWorkflow',
     'ArcanistAnoidWorkflow' => 'ArcanistWorkflow',
+    'ArcanistArcConfigurationEngineExtension' => 'ArcanistConfigurationEngineExtension',
     'ArcanistArcToolset' => 'ArcanistToolset',
     'ArcanistArcWorkflow' => 'ArcanistWorkflow',
     'ArcanistArrayCombineXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -1163,10 +1226,16 @@
     'ArcanistConcatenationOperatorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistConcatenationOperatorXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistConduitCall' => 'Phobject',
+    'ArcanistConduitConfigurationEngineExtension' => 'ArcanistConfigurationEngineExtension',
     'ArcanistConduitEngine' => 'Phobject',
+    'ArcanistConfigOption' => 'Phobject',
     'ArcanistConfigurationDrivenLintEngine' => 'ArcanistLintEngine',
     'ArcanistConfigurationDrivenUnitTestEngine' => 'ArcanistUnitTestEngine',
+    'ArcanistConfigurationEngine' => 'Phobject',
+    'ArcanistConfigurationEngineExtension' => 'Phobject',
     'ArcanistConfigurationManager' => 'Phobject',
+    'ArcanistConfigurationSource' => 'Phobject',
+    'ArcanistConfigurationSourceList' => 'Phobject',
     'ArcanistConsoleLintRenderer' => 'ArcanistLintRenderer',
     'ArcanistConsoleLintRendererTestCase' => 'PhutilTestCase',
     'ArcanistConstructorParenthesesXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -1184,6 +1253,7 @@
     'ArcanistDeclarationParenthesesXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistDefaultParametersXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistDefaultParametersXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
+    'ArcanistDefaultsConfigurationSource' => 'ArcanistConfigurationSource',
     'ArcanistDeprecationXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistDeprecationXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistDiffByteSizeException' => 'Exception',
@@ -1223,10 +1293,12 @@
     'ArcanistExtractUseXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistExtractUseXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistFeatureWorkflow' => 'ArcanistWorkflow',
+    'ArcanistFileConfigurationSource' => 'ArcanistConfigurationSource',
     'ArcanistFileDataRef' => 'Phobject',
     'ArcanistFileUploader' => 'Phobject',
     'ArcanistFilenameLinter' => 'ArcanistLinter',
     'ArcanistFilenameLinterTestCase' => 'ArcanistLinterTestCase',
+    'ArcanistFilesystemConfigurationSource' => 'ArcanistConfigurationSource',
     'ArcanistFlagWorkflow' => 'ArcanistWorkflow',
     'ArcanistFlake8Linter' => 'ArcanistExternalLinter',
     'ArcanistFlake8LinterTestCase' => 'ArcanistExternalLinterTestCase',
@@ -1244,6 +1316,7 @@
     'ArcanistGitLandEngine' => 'ArcanistLandEngine',
     'ArcanistGitRevisionHardpointLoader' => 'ArcanistGitHardpointLoader',
     'ArcanistGitUpstreamPath' => 'Phobject',
+    'ArcanistGitWorkingCopy' => 'ArcanistWorkingCopy',
     'ArcanistGlobalVariableXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistGlobalVariableXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistGoLintLinter' => 'ArcanistExternalLinter',
@@ -1322,6 +1395,7 @@
     'ArcanistListAssignmentXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistListAssignmentXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistListWorkflow' => 'ArcanistWorkflow',
+    'ArcanistLocalConfigurationSource' => 'ArcanistWorkingCopyConfigurationSource',
     'ArcanistLogicalOperatorsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistLogicalOperatorsXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistLowercaseFunctionsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -1331,6 +1405,7 @@
     'ArcanistMercurialHardpointLoader' => 'ArcanistHardpointLoader',
     'ArcanistMercurialParser' => 'Phobject',
     'ArcanistMercurialParserTestCase' => 'PhutilTestCase',
+    'ArcanistMercurialWorkingCopy' => 'ArcanistWorkingCopy',
     'ArcanistMercurialWorkingCopyCommitHardpointLoader' => 'ArcanistMercurialHardpointLoader',
     'ArcanistMergeConflictLinter' => 'ArcanistLinter',
     'ArcanistMergeConflictLinterTestCase' => 'ArcanistLinterTestCase',
@@ -1391,6 +1466,7 @@
     'ArcanistPlusOperatorOnStringsXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistPregQuoteMisuseXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistPregQuoteMisuseXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
+    'ArcanistProjectConfigurationSource' => 'ArcanistWorkingCopyConfigurationSource',
     'ArcanistPublicPropertyXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistPublicPropertyXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistPuppetLintLinter' => 'ArcanistExternalLinter',
@@ -1420,6 +1496,7 @@
     'ArcanistRuboCopLinterTestCase' => 'ArcanistExternalLinterTestCase',
     'ArcanistRubyLinter' => 'ArcanistExternalLinter',
     'ArcanistRubyLinterTestCase' => 'ArcanistExternalLinterTestCase',
+    'ArcanistRuntimeConfigurationSource' => 'ArcanistConfigurationSource',
     'ArcanistScriptAndRegexLinter' => 'ArcanistLinter',
     'ArcanistSelfClassReferenceXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistSelfClassReferenceXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
@@ -1441,8 +1518,10 @@
     'ArcanistStaticThisXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistStopWorkflow' => 'ArcanistPhrequentWorkflow',
     'ArcanistSubversionAPI' => 'ArcanistRepositoryAPI',
+    'ArcanistSubversionWorkingCopy' => 'ArcanistWorkingCopy',
     'ArcanistSummaryLintRenderer' => 'ArcanistLintRenderer',
     'ArcanistSyntaxErrorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
+    'ArcanistSystemConfigurationSource' => 'ArcanistFilesystemConfigurationSource',
     'ArcanistTasksWorkflow' => 'ArcanistWorkflow',
     'ArcanistTautologicalExpressionXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistTautologicalExpressionXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
@@ -1491,6 +1570,7 @@
     'ArcanistUselessOverridingMethodXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistUselessOverridingMethodXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistUserAbortException' => 'ArcanistUsageException',
+    'ArcanistUserConfigurationSource' => 'ArcanistFilesystemConfigurationSource',
     'ArcanistVariableReferenceSpacingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistVariableReferenceSpacingXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
     'ArcanistVariableVariableXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -1499,7 +1579,8 @@
     'ArcanistWeldWorkflow' => 'ArcanistWorkflow',
     'ArcanistWhichWorkflow' => 'ArcanistWorkflow',
     'ArcanistWorkflow' => 'Phobject',
-    'ArcanistWorkingCopyIdentity' => 'Phobject',
+    'ArcanistWorkingCopy' => 'Phobject',
+    'ArcanistWorkingCopyConfigurationSource' => 'ArcanistFilesystemConfigurationSource',
     'ArcanistWorkingCopyStateRef' => 'ArcanistRef',
     'ArcanistXHPASTLintNamingHook' => 'Phobject',
     'ArcanistXHPASTLintNamingHookTestCase' => 'PhutilTestCase',
@@ -1511,64 +1592,8 @@
     'ArcanistXMLLinter' => 'ArcanistLinter',
     'ArcanistXMLLinterTestCase' => 'ArcanistLinterTestCase',
     'ArcanistXUnitTestResultParser' => 'Phobject',
-    'CSharpToolsTestEngine' => 'XUnitTestEngine',
-    'NoseTestEngine' => 'ArcanistUnitTestEngine',
-    'PhageWorkflow' => 'PhutilArgumentWorkflow',
-    'PhpunitTestEngine' => 'ArcanistUnitTestEngine',
-    'PhpunitTestEngineTestCase' => 'PhutilTestCase',
-    'PhutilTestCase' => 'Phobject',
-    'PhutilTestCaseTestCase' => 'PhutilTestCase',
-    'PhutilTestSkippedException' => 'Exception',
-    'PhutilTestTerminatedException' => 'Exception',
-    'PhutilUnitTestEngine' => 'ArcanistUnitTestEngine',
-    'PhutilUnitTestEngineTestCase' => 'PhutilTestCase',
-    'PytestTestEngine' => 'ArcanistUnitTestEngine',
-    'XUnitTestEngine' => 'ArcanistUnitTestEngine',
-    'XUnitTestResultParserTestCase' => 'PhutilTestCase',
-    'AASTNode' => 'Phobject',
-    'AASTNodeList' => array(
-      'Phobject',
-      'Countable',
-      'Iterator',
-    ),
-    'AASTToken' => 'Phobject',
-    'AASTTree' => 'Phobject',
-    'AbstractDirectedGraph' => 'Phobject',
-    'AbstractDirectedGraphTestCase' => 'PhutilTestCase',
-    'AphrontAccessDeniedQueryException' => 'AphrontQueryException',
-    'AphrontBaseMySQLDatabaseConnection' => 'AphrontDatabaseConnection',
-    'AphrontCharacterSetQueryException' => 'AphrontQueryException',
-    'AphrontConnectionLostQueryException' => 'AphrontRecoverableQueryException',
-    'AphrontConnectionQueryException' => 'AphrontQueryException',
-    'AphrontCountQueryException' => 'AphrontQueryException',
-    'AphrontDatabaseConnection' => array(
-      'Phobject',
-      'PhutilQsprintfInterface',
-    ),
-    'AphrontDatabaseTransactionState' => 'Phobject',
-    'AphrontDeadlockQueryException' => 'AphrontRecoverableQueryException',
-    'AphrontDuplicateKeyQueryException' => 'AphrontQueryException',
-    'AphrontHTTPHeaderParser' => 'Phobject',
-    'AphrontHTTPHeaderParserTestCase' => 'PhutilTestCase',
-    'AphrontInvalidCredentialsQueryException' => 'AphrontQueryException',
-    'AphrontIsolatedDatabaseConnection' => 'AphrontDatabaseConnection',
-    'AphrontLockTimeoutQueryException' => 'AphrontRecoverableQueryException',
-    'AphrontMultipartParser' => 'Phobject',
-    'AphrontMultipartParserTestCase' => 'PhutilTestCase',
-    'AphrontMultipartPart' => 'Phobject',
-    'AphrontMySQLDatabaseConnection' => 'AphrontBaseMySQLDatabaseConnection',
-    'AphrontMySQLiDatabaseConnection' => 'AphrontBaseMySQLDatabaseConnection',
-    'AphrontNotSupportedQueryException' => 'AphrontQueryException',
-    'AphrontObjectMissingQueryException' => 'AphrontQueryException',
-    'AphrontParameterQueryException' => 'AphrontQueryException',
-    'AphrontQueryException' => 'Exception',
-    'AphrontQueryTimeoutQueryException' => 'AphrontRecoverableQueryException',
-    'AphrontRecoverableQueryException' => 'AphrontQueryException',
-    'AphrontRequestStream' => 'Phobject',
-    'AphrontSchemaQueryException' => 'AphrontQueryException',
-    'AphrontScopedUnguardedWriteCapability' => 'Phobject',
-    'AphrontWriteGuard' => 'Phobject',
     'BaseHTTPFuture' => 'Future',
+    'CSharpToolsTestEngine' => 'XUnitTestEngine',
     'CaseInsensitiveArray' => 'PhutilArray',
     'CaseInsensitiveArrayTestCase' => 'PhutilTestCase',
     'CommandException' => 'Exception',
@@ -1611,6 +1636,7 @@
     'LinesOfALargeFile' => 'LinesOfALarge',
     'LinesOfALargeFileTestCase' => 'PhutilTestCase',
     'MFilterTestHelper' => 'Phobject',
+    'NoseTestEngine' => 'ArcanistUnitTestEngine',
     'PHPASTParserTestCase' => 'PhutilTestCase',
     'PhageAction' => 'Phobject',
     'PhageAgentAction' => 'PhageAction',
@@ -1621,8 +1647,11 @@
     'PhagePHPAgent' => 'Phobject',
     'PhagePHPAgentBootloader' => 'PhageAgentBootloader',
     'PhagePlanAction' => 'PhageAction',
+    'PhageWorkflow' => 'PhutilArgumentWorkflow',
     'Phobject' => 'Iterator',
     'PhobjectTestCase' => 'PhutilTestCase',
+    'PhpunitTestEngine' => 'ArcanistUnitTestEngine',
+    'PhpunitTestEngineTestCase' => 'PhutilTestCase',
     'PhutilAPCKeyValueCache' => 'PhutilKeyValueCache',
     'PhutilAWSCloudFormationFuture' => 'PhutilAWSFuture',
     'PhutilAWSCloudWatchFuture' => 'PhutilAWSFuture',
@@ -1992,7 +2021,11 @@
     'PhutilSystem' => 'Phobject',
     'PhutilSystemTestCase' => 'PhutilTestCase',
     'PhutilTerminalString' => 'Phobject',
+    'PhutilTestCase' => 'Phobject',
+    'PhutilTestCaseTestCase' => 'PhutilTestCase',
     'PhutilTestPhobject' => 'Phobject',
+    'PhutilTestSkippedException' => 'Exception',
+    'PhutilTestTerminatedException' => 'Exception',
     'PhutilTortureTestDaemon' => 'PhutilDaemon',
     'PhutilTraditionalChineseLocale' => 'PhutilLocale',
     'PhutilTranslation' => 'Phobject',
@@ -2014,6 +2047,8 @@
     'PhutilUSEnglishLocale' => 'PhutilLocale',
     'PhutilUTF8StringTruncator' => 'Phobject',
     'PhutilUTF8TestCase' => 'PhutilTestCase',
+    'PhutilUnitTestEngine' => 'ArcanistUnitTestEngine',
+    'PhutilUnitTestEngineTestCase' => 'PhutilTestCase',
     'PhutilUnknownSymbolParserGeneratorException' => 'PhutilParserGeneratorException',
     'PhutilUnreachableRuleParserGeneratorException' => 'PhutilParserGeneratorException',
     'PhutilUnreachableTerminalParserGeneratorException' => 'PhutilParserGeneratorException',
@@ -2026,6 +2061,7 @@
     'PhutilXHPASTSyntaxHighlighter' => 'Phobject',
     'PhutilXHPASTSyntaxHighlighterFuture' => 'FutureProxy',
     'PhutilXHPASTSyntaxHighlighterTestCase' => 'PhutilTestCase',
+    'PytestTestEngine' => 'ArcanistUnitTestEngine',
     'QueryFuture' => 'Future',
     'TempFile' => 'Phobject',
     'TestAbstractDirectedGraph' => 'AbstractDirectedGraph',
@@ -2035,6 +2071,8 @@
     'XHPASTToken' => 'AASTToken',
     'XHPASTTree' => 'AASTTree',
     'XHPASTTreeTestCase' => 'PhutilTestCase',
+    'XUnitTestEngine' => 'ArcanistUnitTestEngine',
+    'XUnitTestResultParserTestCase' => 'PhutilTestCase',
     'XsprintfUnknownConversionException' => 'InvalidArgumentException',
   ),
 ));
Index: src/config/ArcanistArcConfigurationEngineExtension.php
===================================================================
--- /dev/null
+++ src/config/ArcanistArcConfigurationEngineExtension.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistArcConfigurationEngineExtension
+  extends ArcanistConfigurationEngineExtension {
+
+}
Index: src/config/ArcanistConduitConfigurationEngineExtension.php
===================================================================
--- /dev/null
+++ src/config/ArcanistConduitConfigurationEngineExtension.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistConduitConfigurationEngineExtension
+  extends ArcanistConfigurationEngineExtension {
+
+}
Index: src/config/ArcanistConfigOption.php
===================================================================
--- /dev/null
+++ src/config/ArcanistConfigOption.php
@@ -0,0 +1,6 @@
+<?php
+
+abstract class ArcanistConfigOption
+  extends Phobject {
+
+}
Index: src/config/ArcanistConfigurationEngine.php
===================================================================
--- /dev/null
+++ src/config/ArcanistConfigurationEngine.php
@@ -0,0 +1,98 @@
+<?php
+
+final class ArcanistConfigurationEngine
+  extends Phobject {
+
+  private $workingCopy;
+  private $arguments;
+
+  public function setWorkingCopy(ArcanistWorkingCopy $working_copy) {
+    $this->workingCopy = $working_copy;
+    return $this;
+  }
+
+  public function getWorkingCopy() {
+    return $this->workingCopy;
+  }
+
+  public function setArguments(PhutilArgumentParser $arguments) {
+    $this->arguments = $arguments;
+    return $this;
+  }
+
+  public function getArguments() {
+    if (!$this->arguments) {
+      throw new PhutilInvalidStateException('setArguments');
+    }
+    return $this->arguments;
+  }
+
+  public function newConfigurationSourceList() {
+    $list = new ArcanistConfigurationSourceList();
+
+    $list->addSource(new ArcanistDefaultsConfigurationSource());
+
+    $arguments = $this->getArguments();
+
+    // If the invoker has provided one or more configuration files with
+    // "--config-file" arguments, read those files instead of the system
+    // and user configuration files. Otherwise, read the system and user
+    // configuration files.
+
+    $config_files = $arguments->getArg('config-file');
+    if ($config_files) {
+      foreach ($config_files as $config_file) {
+        $list->addSource(new ArcanistFileConfigurationSource($config_file));
+      }
+    } else {
+      $system_path = $this->getSystemConfigurationFilePath();
+      $list->addSource(new ArcanistSystemConfigurationSource($system_path));
+
+      $user_path = $this->getUserConfigurationFilePath();
+      $list->addSource(new ArcanistUserConfigurationSource($user_path));
+    }
+
+
+    // If we're running in a working copy, load the ".arcconfig" and any
+    // local configuration.
+    $working_copy = $this->getWorkingCopy();
+    if ($working_copy) {
+      $project_path = $working_copy->getProjectConfigurationFilePath();
+      if ($project_path !== null) {
+        $list->addSource(new ArcanistProjectConfigurationSource($project_path));
+      }
+
+      $local_path = $working_copy->getLocalConfigurationFilePath();
+      if ($local_path !== null) {
+        $list->addSource(new ArcanistLocalConfigurationSource($local_path));
+      }
+    }
+
+    // If the invoker has provided "--config" arguments, parse those now.
+    $runtime_args = $arguments->getArg('config');
+    if ($runtime_args) {
+      $list->addSource(new ArcanistRuntimeConfigurationSource($runtime_args));
+    }
+
+    return $list;
+  }
+
+  private function getSystemConfigurationFilePath() {
+    if (phutil_is_windows()) {
+      return Filesystem::resolvePath(
+        'Phabricator/Arcanist/config',
+        getenv('ProgramData'));
+    } else {
+      return '/etc/arcconfig';
+    }
+  }
+
+  private function getUserConfigurationFilePath() {
+    if (phutil_is_windows()) {
+      return getenv('APPDATA').'/.arcrc';
+    } else {
+      return getenv('HOME').'/.arcrc';
+    }
+  }
+
+}
Index: src/config/ArcanistConfigurationEngineExtension.php
===================================================================
--- /dev/null
+++ src/config/ArcanistConfigurationEngineExtension.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistConfigurationEngineExtension
+  extends Phobject {
+
+}
Index: src/config/ArcanistConfigurationSourceList.php
===================================================================
--- /dev/null
+++ src/config/ArcanistConfigurationSourceList.php
@@ -0,0 +1,13 @@
+<?php
+
+final class ArcanistConfigurationSourceList
+  extends Phobject {
+
+  private $sources = array();
+
+  public function addSource(ArcanistConfigurationSource $source) {
+    $this->sources[] = $source;
+    return $this;
+  }
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+abstract class ArcanistConfigurationSource
+  extends Phobject {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistDefaultsConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistDefaultsConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistDefaultsConfigurationSource
+  extends ArcanistConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistFileConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistFileConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistFileConfigurationSource
+  extends ArcanistConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistFilesystemConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistFilesystemConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+abstract class ArcanistFilesystemConfigurationSource
+  extends ArcanistConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistLocalConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistLocalConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistLocalConfigurationSource
+  extends ArcanistWorkingCopyConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistProjectConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistProjectConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistProjectConfigurationSource
+  extends ArcanistWorkingCopyConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistRuntimeConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistRuntimeConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistRuntimeConfigurationSource
+  extends ArcanistConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistSystemConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistSystemConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistSystemConfigurationSource
+  extends ArcanistFilesystemConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistUserConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistUserConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+final class ArcanistUserConfigurationSource
+  extends ArcanistFilesystemConfigurationSource {
+
+}
\ No newline at end of file
Index: src/config/source/ArcanistWorkingCopyConfigurationSource.php
===================================================================
--- /dev/null
+++ src/config/source/ArcanistWorkingCopyConfigurationSource.php
@@ -0,0 +1,6 @@
+<?php
+
+abstract class ArcanistWorkingCopyConfigurationSource
+  extends ArcanistFilesystemConfigurationSource {
+
+}
\ No newline at end of file
Index: src/filesystem/Filesystem.php
===================================================================
--- src/filesystem/Filesystem.php
+++ src/filesystem/Filesystem.php
@@ -1054,7 +1054,8 @@
     // separator, so we don't end up with "path//to///thing.c".
     $components = preg_replace(
       '('.preg_quote(DIRECTORY_SEPARATOR).'{2,})',
-      DIRECTORY_SEPARATOR);
+      DIRECTORY_SEPARATOR,
+      $components);
 
     return $components;
   }
Index: src/workingcopy/ArcanistGitWorkingCopy.php
===================================================================
--- src/workingcopy/ArcanistGitWorkingCopy.php
+++ src/workingcopy/ArcanistGitWorkingCopy.php
@@ -11,7 +11,7 @@
     $working_directory,
     $ancestor_directory) {
 
-    if (!Filesystem::pathExits($ancestor_directory.'/.git')) {
+    if (!Filesystem::pathExists($ancestor_directory.'/.git')) {
       return null;
     }
 
Index: src/workingcopy/ArcanistMercurialWorkingCopy.php
===================================================================
--- src/workingcopy/ArcanistMercurialWorkingCopy.php
+++ src/workingcopy/ArcanistMercurialWorkingCopy.php
@@ -11,7 +11,7 @@
     $working_directory,
     $ancestor_directory) {
 
-    if (!Filesystem::pathExits($ancestor_directory.'/.hg')) {
+    if (!Filesystem::pathExists($ancestor_directory.'/.hg')) {
       return null;
     }
 
Index: src/workingcopy/ArcanistSubversionWorkingCopy.php
===================================================================
--- src/workingcopy/ArcanistSubversionWorkingCopy.php
+++ src/workingcopy/ArcanistSubversionWorkingCopy.php
@@ -39,11 +39,11 @@
     $working_directory,
     $ancestor_directory) {
 
-    if (!Filesystem::pathExits($ancestor_directory.'/.svn')) {
+    if (!Filesystem::pathExists($ancestor_directory.'/.svn')) {
       return null;
     }
 
-    return id(new self());
+    return new self();
   }
 
 
Index: src/workingcopy/ArcanistWorkingCopy.php
===================================================================
--- src/workingcopy/ArcanistWorkingCopy.php
+++ src/workingcopy/ArcanistWorkingCopy.php
@@ -8,7 +8,7 @@
 
   public static function newFromWorkingDirectory($path) {
     $working_types = id(new PhutilClassMapQuery())
-      ->setParentClass(__CLASS__)
+      ->setAncestorClass(__CLASS__)
       ->execute();
 
     // Find the outermost directory which is under version control. We go from
Index: support/ArcanistRuntime.php
===================================================================
--- support/ArcanistRuntime.php
+++ support/ArcanistRuntime.php
@@ -45,6 +45,14 @@
         'repeat' => true,
         'help' => pht('Specify a runtime configuration value.'),
       ),
+      array(
+        'name' => 'config-file',
+        'param' => 'path',
+        'repeat' => true,
+        'help' => pht(
+          'Load one or more configuration files. If this flag is provided, '.
+          'the system and user configuration files are ignored.'),
+      ),
     );
 
     $args = id(new PhutilArgumentParser($argv))
@@ -202,9 +210,10 @@
   }
 
   private function loadConfiguration(PhutilArgumentParser $args) {
-    $engine = new ArcanistConfigurationEngine();
+    $engine = id(new ArcanistConfigurationEngine())
+      ->setArguments($args);
 
-    $working_copy = ArcanistWorkingCopyIdentity::newFromPath(getcwd());
+    $working_copy = ArcanistWorkingCopy::newFromWorkingDirectory(getcwd());
     if ($working_copy) {
       $engine->setWorkingCopy($working_copy);
     }
@@ -214,28 +223,16 @@
 
   private function loadLibraries(
     PhutilArgumentParser $args,
-    ArcanistConfigurationManager $config) {
+    ArcanistConfigurationSourceList $config) {
 
-    $is_trace = $args->getArg('trace');
-
-    if ($is_trace) {
-      $libraries = array(
-        'phutil',
-        'arcanist',
-      );
+    // TOOLSETS: Make this work again -- or replace it entirely with package
+    // management?
+    return;
 
-      foreach ($libraries as $library_name) {
-        $this->logTrace(
-          pht('LOAD'),
-          pht(
-            'Loaded "%s" from "%s".',
-            $library_name,
-            phutil_get_library_root($library_name)));
-      }
-    }
+    $is_trace = $args->getArg('trace');
 
     $load = array();
-    $working_copy = $config->getWorkingCopyIdentity();
+    $working_copy = $this->getWorkingCopy();
 
     $cli_libraries = $args->getArg('library');
     if ($cli_libraries) {
@@ -463,7 +460,7 @@
   private function resolveAliases(
     array $workflows,
     array $argv,
-    ArcanistConfigurationManager $config) {
+    ArcanistConfigurationSourceList $config) {
 
     $command = head($argv);