diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -288,6 +288,7 @@
     'ArcanistArrayIndexSpacingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistArraySeparatorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistBackoutWorkflow' => 'ArcanistWorkflow',
+    'ArcanistBaseCommitParser' => 'Phobject',
     'ArcanistBaseCommitParserTestCase' => 'PhutilTestCase',
     'ArcanistBaseXHPASTLinter' => 'ArcanistFutureLinter',
     'ArcanistBinaryExpressionSpacingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -297,6 +298,7 @@
     'ArcanistBranchWorkflow' => 'ArcanistFeatureWorkflow',
     'ArcanistBritishTestCase' => 'PhutilTestCase',
     'ArcanistBrowseWorkflow' => 'ArcanistWorkflow',
+    'ArcanistBundle' => 'Phobject',
     'ArcanistBundleTestCase' => 'PhutilTestCase',
     'ArcanistCSSLintLinter' => 'ArcanistExternalLinter',
     'ArcanistCSSLintLinterTestCase' => 'ArcanistExternalLinterTestCase',
@@ -318,6 +320,7 @@
     'ArcanistClosureLinterTestCase' => 'ArcanistExternalLinterTestCase',
     'ArcanistCoffeeLintLinter' => 'ArcanistExternalLinter',
     'ArcanistCoffeeLintLinterTestCase' => 'ArcanistExternalLinterTestCase',
+    'ArcanistCommentRemover' => 'Phobject',
     'ArcanistCommentRemoverTestCase' => 'PhutilTestCase',
     'ArcanistCommentSpacingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistCommentStyleXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -325,7 +328,9 @@
     'ArcanistCompilerLintRenderer' => 'ArcanistLintRenderer',
     'ArcanistComprehensiveLintEngine' => 'ArcanistLintEngine',
     'ArcanistConcatenationOperatorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
+    'ArcanistConfiguration' => 'Phobject',
     'ArcanistConfigurationDrivenLintEngine' => 'ArcanistLintEngine',
+    'ArcanistConfigurationManager' => 'Phobject',
     'ArcanistConsoleLintRenderer' => 'ArcanistLintRenderer',
     'ArcanistConstructorParenthesesXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistControlStatementSpacingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -335,11 +340,19 @@
     'ArcanistCpplintLinter' => 'ArcanistExternalLinter',
     'ArcanistCpplintLinterTestCase' => 'ArcanistExternalLinterTestCase',
     'ArcanistDefaultParametersXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
+    'ArcanistDiffChange' => 'Phobject',
+    'ArcanistDiffChangeType' => 'Phobject',
+    'ArcanistDiffHunk' => 'Phobject',
+    'ArcanistDiffParser' => 'Phobject',
     'ArcanistDiffParserTestCase' => 'PhutilTestCase',
+    'ArcanistDiffUtils' => 'Phobject',
     'ArcanistDiffUtilsTestCase' => 'PhutilTestCase',
     'ArcanistDiffWorkflow' => 'ArcanistWorkflow',
+    'ArcanistDifferentialCommitMessage' => 'Phobject',
     'ArcanistDifferentialCommitMessageParserException' => 'Exception',
     'ArcanistDifferentialDependencyGraph' => 'AbstractDirectedGraph',
+    'ArcanistDifferentialRevisionHash' => 'Phobject',
+    'ArcanistDifferentialRevisionStatus' => 'Phobject',
     'ArcanistDoubleQuoteXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistDownloadWorkflow' => 'ArcanistWorkflow',
     'ArcanistDuplicateKeysInArrayXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -375,6 +388,8 @@
     'ArcanistHLintLinterTestCase' => 'ArcanistExternalLinterTestCase',
     'ArcanistHelpWorkflow' => 'ArcanistWorkflow',
     'ArcanistHgClientChannel' => 'PhutilProtocolChannel',
+    'ArcanistHgProxyClient' => 'Phobject',
+    'ArcanistHgProxyServer' => 'Phobject',
     'ArcanistHgServerChannel' => 'PhutilProtocolChannel',
     'ArcanistImplicitConstructorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistImplicitFallthroughXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -401,13 +416,21 @@
     'ArcanistLesscLinterTestCase' => 'ArcanistExternalLinterTestCase',
     'ArcanistLiberateWorkflow' => 'ArcanistWorkflow',
     'ArcanistLibraryTestCase' => 'PhutilLibraryTestCase',
+    'ArcanistLintEngine' => 'Phobject',
+    'ArcanistLintMessage' => 'Phobject',
+    'ArcanistLintPatcher' => 'Phobject',
+    'ArcanistLintRenderer' => 'Phobject',
+    'ArcanistLintResult' => 'Phobject',
+    'ArcanistLintSeverity' => 'Phobject',
     'ArcanistLintWorkflow' => 'ArcanistWorkflow',
+    'ArcanistLinter' => 'Phobject',
     'ArcanistLinterTestCase' => 'PhutilTestCase',
     'ArcanistLintersWorkflow' => 'ArcanistWorkflow',
     'ArcanistListWorkflow' => 'ArcanistWorkflow',
     'ArcanistLogicalOperatorsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistLowercaseFunctionsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistMercurialAPI' => 'ArcanistRepositoryAPI',
+    'ArcanistMercurialParser' => 'Phobject',
     'ArcanistMercurialParserTestCase' => 'PhutilTestCase',
     'ArcanistMergeConflictLinter' => 'ArcanistLinter',
     'ArcanistMergeConflictLinterTestCase' => 'ArcanistLinterTestCase',
@@ -447,6 +470,7 @@
     'ArcanistPyFlakesLinterTestCase' => 'ArcanistExternalLinterTestCase',
     'ArcanistPyLintLinter' => 'ArcanistExternalLinter',
     'ArcanistPyLintLinterTestCase' => 'ArcanistExternalLinterTestCase',
+    'ArcanistRepositoryAPI' => 'Phobject',
     'ArcanistRepositoryAPIMiscTestCase' => 'PhutilTestCase',
     'ArcanistRepositoryAPIStateTestCase' => 'PhutilTestCase',
     'ArcanistReusedAsIteratorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -461,6 +485,7 @@
     'ArcanistSelfMemberReferenceXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistSemicolonSpacingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistSetConfigWorkflow' => 'ArcanistWorkflow',
+    'ArcanistSettings' => 'Phobject',
     'ArcanistShellCompleteWorkflow' => 'ArcanistWorkflow',
     'ArcanistSingleLintEngine' => 'ArcanistLintEngine',
     'ArcanistSlownessXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -474,6 +499,7 @@
     'ArcanistSyntaxErrorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistTasksWorkflow' => 'ArcanistWorkflow',
     'ArcanistTautologicalExpressionXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
+    'ArcanistTestResultParser' => 'Phobject',
     'ArcanistTestXHPASTLintSwitchHook' => 'ArcanistXHPASTLintSwitchHook',
     'ArcanistTextLinter' => 'ArcanistLinter',
     'ArcanistTextLinterTestCase' => 'ArcanistLinterTestCase',
@@ -485,6 +511,9 @@
     'ArcanistUnableToParseXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistUndeclaredVariableXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
     'ArcanistUnitConsoleRenderer' => 'ArcanistUnitRenderer',
+    'ArcanistUnitRenderer' => 'Phobject',
+    'ArcanistUnitTestEngine' => 'Phobject',
+    'ArcanistUnitTestResult' => 'Phobject',
     'ArcanistUnitTestableLintEngine' => 'ArcanistLintEngine',
     'ArcanistUnitWorkflow' => 'ArcanistWorkflow',
     'ArcanistUnnecessaryFinalModifierXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
@@ -498,15 +527,21 @@
     'ArcanistVersionWorkflow' => 'ArcanistWorkflow',
     'ArcanistWhichWorkflow' => 'ArcanistWorkflow',
     'ArcanistWorkflow' => 'Phobject',
+    'ArcanistWorkingCopyIdentity' => 'Phobject',
+    'ArcanistXHPASTLintNamingHook' => 'Phobject',
     'ArcanistXHPASTLintNamingHookTestCase' => 'PhutilTestCase',
+    'ArcanistXHPASTLintSwitchHook' => 'Phobject',
     'ArcanistXHPASTLinter' => 'ArcanistBaseXHPASTLinter',
+    'ArcanistXHPASTLinterRule' => 'Phobject',
     'ArcanistXHPASTLinterTestCase' => 'ArcanistLinterTestCase',
     'ArcanistXMLLinter' => 'ArcanistLinter',
     'ArcanistXMLLinterTestCase' => 'ArcanistLinterTestCase',
+    'ArcanistXUnitTestResultParser' => 'Phobject',
     'CSharpToolsTestEngine' => 'XUnitTestEngine',
     'NoseTestEngine' => 'ArcanistUnitTestEngine',
     'PhpunitTestEngine' => 'ArcanistUnitTestEngine',
     'PhpunitTestEngineTestCase' => 'PhutilTestCase',
+    'PhutilTestCase' => 'Phobject',
     'PhutilTestCaseTestCase' => 'PhutilTestCase',
     'PhutilTestSkippedException' => 'Exception',
     'PhutilTestTerminatedException' => 'Exception',
diff --git a/src/configuration/ArcanistConfiguration.php b/src/configuration/ArcanistConfiguration.php
--- a/src/configuration/ArcanistConfiguration.php
+++ b/src/configuration/ArcanistConfiguration.php
@@ -19,7 +19,7 @@
  *
  * @concrete-extensible
  */
-class ArcanistConfiguration {
+class ArcanistConfiguration extends Phobject {
 
   public function buildWorkflow($command) {
     if ($command == '--help') {
diff --git a/src/configuration/ArcanistConfigurationManager.php b/src/configuration/ArcanistConfigurationManager.php
--- a/src/configuration/ArcanistConfigurationManager.php
+++ b/src/configuration/ArcanistConfigurationManager.php
@@ -3,7 +3,7 @@
 /**
  * This class holds everything related to configuration and configuration files.
  */
-final class ArcanistConfigurationManager {
+final class ArcanistConfigurationManager extends Phobject {
 
   private $runtimeConfig = array();
   private $workingCopy = null;
diff --git a/src/configuration/ArcanistSettings.php b/src/configuration/ArcanistSettings.php
--- a/src/configuration/ArcanistSettings.php
+++ b/src/configuration/ArcanistSettings.php
@@ -1,6 +1,6 @@
 <?php
 
-final class ArcanistSettings {
+final class ArcanistSettings extends Phobject {
 
   private function getOptions() {
     return array(
diff --git a/src/difference/ArcanistDiffUtils.php b/src/difference/ArcanistDiffUtils.php
--- a/src/difference/ArcanistDiffUtils.php
+++ b/src/difference/ArcanistDiffUtils.php
@@ -3,7 +3,7 @@
 /**
  * Dumping ground for diff- and diff-algorithm-related miscellany.
  */
-final class ArcanistDiffUtils {
+final class ArcanistDiffUtils extends Phobject {
 
   /**
    * Make a best-effort attempt to determine if a file is definitely binary.
diff --git a/src/differential/ArcanistDifferentialCommitMessage.php b/src/differential/ArcanistDifferentialCommitMessage.php
--- a/src/differential/ArcanistDifferentialCommitMessage.php
+++ b/src/differential/ArcanistDifferentialCommitMessage.php
@@ -3,7 +3,7 @@
 /**
  * Represents a parsed commit message.
  */
-final class ArcanistDifferentialCommitMessage {
+final class ArcanistDifferentialCommitMessage extends Phobject {
 
   private $rawCorpus;
   private $revisionID;
diff --git a/src/differential/constants/ArcanistDifferentialRevisionHash.php b/src/differential/constants/ArcanistDifferentialRevisionHash.php
--- a/src/differential/constants/ArcanistDifferentialRevisionHash.php
+++ b/src/differential/constants/ArcanistDifferentialRevisionHash.php
@@ -1,6 +1,6 @@
 <?php
 
-final class ArcanistDifferentialRevisionHash {
+final class ArcanistDifferentialRevisionHash extends Phobject {
 
   const TABLE_NAME = 'differential_revisionhash';
 
diff --git a/src/differential/constants/ArcanistDifferentialRevisionStatus.php b/src/differential/constants/ArcanistDifferentialRevisionStatus.php
--- a/src/differential/constants/ArcanistDifferentialRevisionStatus.php
+++ b/src/differential/constants/ArcanistDifferentialRevisionStatus.php
@@ -1,6 +1,6 @@
 <?php
 
-final class ArcanistDifferentialRevisionStatus {
+final class ArcanistDifferentialRevisionStatus extends Phobject {
 
   const NEEDS_REVIEW      = 0;
   const NEEDS_REVISION    = 1;
diff --git a/src/hgdaemon/ArcanistHgProxyClient.php b/src/hgdaemon/ArcanistHgProxyClient.php
--- a/src/hgdaemon/ArcanistHgProxyClient.php
+++ b/src/hgdaemon/ArcanistHgProxyClient.php
@@ -26,7 +26,7 @@
  * @task exec       Executing Mercurial Commands
  * @task internal   Internals
  */
-final class ArcanistHgProxyClient {
+final class ArcanistHgProxyClient extends Phobject {
 
   private $workingCopy;
   private $server;
diff --git a/src/hgdaemon/ArcanistHgProxyServer.php b/src/hgdaemon/ArcanistHgProxyServer.php
--- a/src/hgdaemon/ArcanistHgProxyServer.php
+++ b/src/hgdaemon/ArcanistHgProxyServer.php
@@ -26,7 +26,7 @@
  * @task hg         Managing Mercurial
  * @task internal   Internals
  */
-final class ArcanistHgProxyServer {
+final class ArcanistHgProxyServer extends Phobject {
 
   private $workingCopy;
   private $socket;
diff --git a/src/lint/ArcanistLintMessage.php b/src/lint/ArcanistLintMessage.php
--- a/src/lint/ArcanistLintMessage.php
+++ b/src/lint/ArcanistLintMessage.php
@@ -3,7 +3,7 @@
 /**
  * Message emitted by a linter, like an error or warning.
  */
-final class ArcanistLintMessage {
+final class ArcanistLintMessage extends Phobject {
 
   protected $path;
   protected $line;
diff --git a/src/lint/ArcanistLintPatcher.php b/src/lint/ArcanistLintPatcher.php
--- a/src/lint/ArcanistLintPatcher.php
+++ b/src/lint/ArcanistLintPatcher.php
@@ -3,7 +3,7 @@
 /**
  * Applies lint patches to the working copy.
  */
-final class ArcanistLintPatcher {
+final class ArcanistLintPatcher extends Phobject {
 
   private $dirtyUntil     = 0;
   private $characterDelta = 0;
diff --git a/src/lint/ArcanistLintResult.php b/src/lint/ArcanistLintResult.php
--- a/src/lint/ArcanistLintResult.php
+++ b/src/lint/ArcanistLintResult.php
@@ -3,7 +3,7 @@
 /**
  * A group of @{class:ArcanistLintMessage}s that apply to a file.
  */
-final class ArcanistLintResult {
+final class ArcanistLintResult extends Phobject {
 
   protected $path;
   protected $data;
diff --git a/src/lint/ArcanistLintSeverity.php b/src/lint/ArcanistLintSeverity.php
--- a/src/lint/ArcanistLintSeverity.php
+++ b/src/lint/ArcanistLintSeverity.php
@@ -3,7 +3,7 @@
 /**
  * Describes the severity of an @{class:ArcanistLintMessage}.
  */
-final class ArcanistLintSeverity {
+final class ArcanistLintSeverity extends Phobject {
 
   const SEVERITY_ADVICE       = 'advice';
   const SEVERITY_AUTOFIX      = 'autofix';
diff --git a/src/lint/engine/ArcanistLintEngine.php b/src/lint/engine/ArcanistLintEngine.php
--- a/src/lint/engine/ArcanistLintEngine.php
+++ b/src/lint/engine/ArcanistLintEngine.php
@@ -41,7 +41,7 @@
  *
  * @stable
  */
-abstract class ArcanistLintEngine {
+abstract class ArcanistLintEngine extends Phobject {
 
   protected $workingCopy;
   protected $paths = array();
diff --git a/src/lint/linter/ArcanistLinter.php b/src/lint/linter/ArcanistLinter.php
--- a/src/lint/linter/ArcanistLinter.php
+++ b/src/lint/linter/ArcanistLinter.php
@@ -8,7 +8,7 @@
  * @task exec Executing Linters
  * @stable
  */
-abstract class ArcanistLinter {
+abstract class ArcanistLinter extends Phobject {
 
   const GRANULARITY_FILE = 1;
   const GRANULARITY_DIRECTORY = 2;
diff --git a/src/lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php b/src/lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php
--- a/src/lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php
+++ b/src/lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php
@@ -9,7 +9,7 @@
  * @task internal   Internals
  * @stable
  */
-abstract class ArcanistXHPASTLintNamingHook {
+abstract class ArcanistXHPASTLintNamingHook extends Phobject {
 
 
 /* -(  Internals  )---------------------------------------------------------- */
diff --git a/src/lint/linter/xhpast/ArcanistXHPASTLintSwitchHook.php b/src/lint/linter/xhpast/ArcanistXHPASTLintSwitchHook.php
--- a/src/lint/linter/xhpast/ArcanistXHPASTLintSwitchHook.php
+++ b/src/lint/linter/xhpast/ArcanistXHPASTLintSwitchHook.php
@@ -4,7 +4,7 @@
  * You can extend this class and set `xhpast.switchhook` in your `.arclint`
  * to have an opportunity to override results for linting `switch` statements.
  */
-abstract class ArcanistXHPASTLintSwitchHook {
+abstract class ArcanistXHPASTLintSwitchHook extends Phobject {
 
   /**
    * @return bool True if token safely ends the block.
diff --git a/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php b/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php
@@ -1,6 +1,6 @@
 <?php
 
-abstract class ArcanistXHPASTLinterRule {
+abstract class ArcanistXHPASTLinterRule extends Phobject {
 
   private $linter = null;
 
diff --git a/src/lint/renderer/ArcanistLintRenderer.php b/src/lint/renderer/ArcanistLintRenderer.php
--- a/src/lint/renderer/ArcanistLintRenderer.php
+++ b/src/lint/renderer/ArcanistLintRenderer.php
@@ -3,7 +3,7 @@
 /**
  * Shows lint messages to the user.
  */
-abstract class ArcanistLintRenderer {
+abstract class ArcanistLintRenderer extends Phobject {
 
   public function renderPreamble() {
     return '';
diff --git a/src/parser/ArcanistBaseCommitParser.php b/src/parser/ArcanistBaseCommitParser.php
--- a/src/parser/ArcanistBaseCommitParser.php
+++ b/src/parser/ArcanistBaseCommitParser.php
@@ -1,6 +1,6 @@
 <?php
 
-final class ArcanistBaseCommitParser {
+final class ArcanistBaseCommitParser extends Phobject {
 
   private $api;
   private $try;
diff --git a/src/parser/ArcanistBundle.php b/src/parser/ArcanistBundle.php
--- a/src/parser/ArcanistBundle.php
+++ b/src/parser/ArcanistBundle.php
@@ -3,7 +3,7 @@
 /**
  * Converts changesets between different formats.
  */
-final class ArcanistBundle {
+final class ArcanistBundle extends Phobject {
 
   private $changes;
   private $conduit;
diff --git a/src/parser/ArcanistCommentRemover.php b/src/parser/ArcanistCommentRemover.php
--- a/src/parser/ArcanistCommentRemover.php
+++ b/src/parser/ArcanistCommentRemover.php
@@ -1,6 +1,6 @@
 <?php
 
-final class ArcanistCommentRemover {
+final class ArcanistCommentRemover extends Phobject {
 
   /**
    * Remove comment lines from a commit message. Strips trailing lines only,
diff --git a/src/parser/ArcanistDiffParser.php b/src/parser/ArcanistDiffParser.php
--- a/src/parser/ArcanistDiffParser.php
+++ b/src/parser/ArcanistDiffParser.php
@@ -3,7 +3,7 @@
 /**
  * Parses diffs from a working copy.
  */
-final class ArcanistDiffParser {
+final class ArcanistDiffParser extends Phobject {
 
   protected $repositoryAPI;
   protected $text;
diff --git a/src/parser/diff/ArcanistDiffChange.php b/src/parser/diff/ArcanistDiffChange.php
--- a/src/parser/diff/ArcanistDiffChange.php
+++ b/src/parser/diff/ArcanistDiffChange.php
@@ -3,7 +3,7 @@
 /**
  * Represents a change to an individual path.
  */
-final class ArcanistDiffChange {
+final class ArcanistDiffChange extends Phobject {
 
   protected $metadata = array();
 
diff --git a/src/parser/diff/ArcanistDiffChangeType.php b/src/parser/diff/ArcanistDiffChangeType.php
--- a/src/parser/diff/ArcanistDiffChangeType.php
+++ b/src/parser/diff/ArcanistDiffChangeType.php
@@ -3,7 +3,7 @@
 /**
  * Defines constants for file types and operations in changesets.
  */
-final class ArcanistDiffChangeType {
+final class ArcanistDiffChangeType extends Phobject {
 
   const TYPE_ADD        = 1;
   const TYPE_CHANGE     = 2;
diff --git a/src/parser/diff/ArcanistDiffHunk.php b/src/parser/diff/ArcanistDiffHunk.php
--- a/src/parser/diff/ArcanistDiffHunk.php
+++ b/src/parser/diff/ArcanistDiffHunk.php
@@ -3,7 +3,7 @@
 /**
  * Represents a contiguous set of added and removed lines in a diff.
  */
-final class ArcanistDiffHunk {
+final class ArcanistDiffHunk extends Phobject {
 
   protected $oldOffset;
   protected $oldLength;
diff --git a/src/repository/api/ArcanistRepositoryAPI.php b/src/repository/api/ArcanistRepositoryAPI.php
--- a/src/repository/api/ArcanistRepositoryAPI.php
+++ b/src/repository/api/ArcanistRepositoryAPI.php
@@ -5,7 +5,7 @@
  *
  * @task  status      Path Status
  */
-abstract class ArcanistRepositoryAPI {
+abstract class ArcanistRepositoryAPI extends Phobject {
 
   const FLAG_MODIFIED     = 1;
   const FLAG_ADDED        = 2;
diff --git a/src/repository/parser/ArcanistMercurialParser.php b/src/repository/parser/ArcanistMercurialParser.php
--- a/src/repository/parser/ArcanistMercurialParser.php
+++ b/src/repository/parser/ArcanistMercurialParser.php
@@ -6,7 +6,7 @@
  *
  * @task  parse Parsing "hg" Output
  */
-final class ArcanistMercurialParser {
+final class ArcanistMercurialParser extends Phobject {
 
 
 /* -(  Parsing "hg" Output  )------------------------------------------------ */
diff --git a/src/unit/ArcanistUnitTestResult.php b/src/unit/ArcanistUnitTestResult.php
--- a/src/unit/ArcanistUnitTestResult.php
+++ b/src/unit/ArcanistUnitTestResult.php
@@ -3,7 +3,7 @@
 /**
  * Represents the outcome of running a unit test.
  */
-final class ArcanistUnitTestResult {
+final class ArcanistUnitTestResult extends Phobject {
 
   const RESULT_PASS         = 'pass';
   const RESULT_FAIL         = 'fail';
diff --git a/src/unit/engine/ArcanistUnitTestEngine.php b/src/unit/engine/ArcanistUnitTestEngine.php
--- a/src/unit/engine/ArcanistUnitTestEngine.php
+++ b/src/unit/engine/ArcanistUnitTestEngine.php
@@ -3,7 +3,7 @@
 /**
  * Manages unit test execution.
  */
-abstract class ArcanistUnitTestEngine {
+abstract class ArcanistUnitTestEngine extends Phobject {
 
   private $workingCopy;
   private $paths;
@@ -11,6 +11,7 @@
   private $enableAsyncTests;
   private $enableCoverage;
   private $runAllTests;
+  private $configurationManager;
   protected $renderer;
 
   final public function __construct() {}
diff --git a/src/unit/engine/phutil/PhutilTestCase.php b/src/unit/engine/phutil/PhutilTestCase.php
--- a/src/unit/engine/phutil/PhutilTestCase.php
+++ b/src/unit/engine/phutil/PhutilTestCase.php
@@ -8,7 +8,7 @@
  * @task hook         Hooks for Setup and Teardown
  * @task internal     Internals
  */
-abstract class PhutilTestCase {
+abstract class PhutilTestCase extends Phobject {
 
   private $assertions = 0;
   private $runningTest;
diff --git a/src/unit/parser/ArcanistTestResultParser.php b/src/unit/parser/ArcanistTestResultParser.php
--- a/src/unit/parser/ArcanistTestResultParser.php
+++ b/src/unit/parser/ArcanistTestResultParser.php
@@ -3,7 +3,7 @@
 /**
  * Abstract base class for test result parsers.
  */
-abstract class ArcanistTestResultParser {
+abstract class ArcanistTestResultParser extends Phobject {
 
   protected $enableCoverage;
   protected $projectRoot;
diff --git a/src/unit/parser/ArcanistXUnitTestResultParser.php b/src/unit/parser/ArcanistXUnitTestResultParser.php
--- a/src/unit/parser/ArcanistXUnitTestResultParser.php
+++ b/src/unit/parser/ArcanistXUnitTestResultParser.php
@@ -3,7 +3,7 @@
 /**
  * Parser for JUnit, NUnit, etc results format
  */
-final class ArcanistXUnitTestResultParser {
+final class ArcanistXUnitTestResultParser extends Phobject {
 
   /**
    * Parse test results from provided input and return an array
diff --git a/src/unit/renderer/ArcanistUnitRenderer.php b/src/unit/renderer/ArcanistUnitRenderer.php
--- a/src/unit/renderer/ArcanistUnitRenderer.php
+++ b/src/unit/renderer/ArcanistUnitRenderer.php
@@ -1,6 +1,6 @@
 <?php
 
-abstract class ArcanistUnitRenderer {
+abstract class ArcanistUnitRenderer extends Phobject {
   abstract public function renderUnitResult(ArcanistUnitTestResult $result);
   abstract public function renderPostponedResult($count);
 }
diff --git a/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php b/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php
--- a/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php
+++ b/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php
@@ -5,7 +5,7 @@
  *
  * @task config
  */
-final class ArcanistWorkingCopyIdentity {
+final class ArcanistWorkingCopyIdentity extends Phobject {
 
   private $projectConfig;
   private $projectRoot;