diff --git a/src/ConverterBase.php b/src/ConverterBase.php
index 4164e8c..85f5460 100644
--- a/src/ConverterBase.php
+++ b/src/ConverterBase.php
@@ -35,7 +35,7 @@ abstract class ConverterBase extends PluginBase implements ConverterInterface {
     // target module implements any of the hooks. Otherwise, return TRUE
     // unconditionally.
     if (isset($this->pluginDefinition['hook'])) {
-      return (boolean) array_filter((array) $this->pluginDefinition['hook'], [ $target->getIndexer('hook'), 'has' ]);
+      return (boolean) array_filter((array) $this->pluginDefinition['hook'], [ $target->getIndexer('function'), 'has' ]);
     }
     else {
       return TRUE;
diff --git a/src/IndexerBase.php b/src/IndexerBase.php
index 13e60fd..455007d 100644
--- a/src/IndexerBase.php
+++ b/src/IndexerBase.php
@@ -159,7 +159,7 @@ abstract class IndexerBase extends CorePluginBase implements IndexerInterface, C
    * {@inheritdoc}
    */
   public function getMultiple(array $identifiers) {
-    return new NodeCollection(array_map([ $this, 'get' ], $identifiers));
+    return new NodeCollection(array_filter(array_map([ $this, 'get' ], $identifiers)));
   }
 
   /**
diff --git a/src/Plugin/DMU/Converter/HookFormAlter.php b/src/Plugin/DMU/Converter/HookFormAlter.php
index 6a3e2f9..3c2249f 100644
--- a/src/Plugin/DMU/Converter/HookFormAlter.php
+++ b/src/Plugin/DMU/Converter/HookFormAlter.php
@@ -21,7 +21,7 @@ class HookFormAlter extends ConverterBase {
 
     // @FIXME This is not working (returns empty result set)...don't know why.
     $alter_hooks = $indexer
-      ->query()
+      ->getQuery()
       ->condition(db_or()
         ->condition('id', $target->id() . '_form_alter')
         ->condition('id', db_like($target->id() . '_form_%_alter'), 'LIKE')
diff --git a/src/Plugin/DMU/Converter/PSR4.php b/src/Plugin/DMU/Converter/PSR4.php
index a67037a..67b621b 100644
--- a/src/Plugin/DMU/Converter/PSR4.php
+++ b/src/Plugin/DMU/Converter/PSR4.php
@@ -20,7 +20,7 @@ class PSR4 extends ConverterBase {
    * {@inheritdoc}
    */
   public function isExecutable(TargetInterface $target) {
-    return (boolean) $target->getIndexer('class')->count();
+    return (boolean) $target->getIndexer('class')->getQuery()->countQuery()->execute();
   }
 
   /**
diff --git a/src/Plugin/DMU/Converter/Tests.php b/src/Plugin/DMU/Converter/Tests.php
index ec5c0ab..d3e8b66 100644
--- a/src/Plugin/DMU/Converter/Tests.php
+++ b/src/Plugin/DMU/Converter/Tests.php
@@ -29,7 +29,12 @@ class Tests extends ConverterBase {
    * {@inheritdoc}
    */
   public function isExecutable(TargetInterface $target) {
-    return ($target->getIndexer('test')->count() || $target->getIndexer('web_test')->count());
+    foreach (['DrupalTestCase', 'DrupalWebTestCase'] as $parent_class) {
+      if ($target->getIndexer('class')->getQuery()->condition('parent', $parent_class)->countQuery()->execute()) {
+        return TRUE;
+      }
+    }
+    return FALSE;
   }
 
   /**
@@ -38,15 +43,22 @@ class Tests extends ConverterBase {
   public function convert(TargetInterface $target) {
     $this->target = $target;
 
-    $target->getIndexer('web_test')->getAll()->each([ $this, 'convertWeb' ]);
-
-    $target
-      ->getIndexer('test')
-      ->getAll()
-      ->filter(function(ClassNode $class) {
-        return $class->getExtends() == 'AJAXTestCase';
-      })
-      ->each([ $this, 'convertAjax' ]);
+    $mapping = [
+      'DrupalWebTestCase' => 'convertWeb',
+      'AJAXTestCase' => 'convertAjax',
+    ];
+    foreach ($mapping as $parent_class => $convert_method) {
+      $test_files = $target->getIndexer('class')->getQuery(['file'])->condition('parent', $parent_class)->execute()->fetchCol();
+      foreach ($test_files as $test_file) {
+        /** @var \Pharborist\Objects\Classnode[] $tests */
+        $tests = $target->open($test_file)->find(Filter::isInstanceOf('\Pharborist\Objects\SingleInheritanceNode'))->toArray();
+        foreach ($tests as $test) {
+          if ((string) $test->getExtends() === $parent_class) {
+            $this->$convert_method($test);
+          }
+        }
+      }
+    }
   }
 
   /**
diff --git a/src/Plugin/DMU/Converter/UnitTests.php b/src/Plugin/DMU/Converter/UnitTests.php
index 48a8301..f6e0fb8 100644
--- a/src/Plugin/DMU/Converter/UnitTests.php
+++ b/src/Plugin/DMU/Converter/UnitTests.php
@@ -20,14 +20,24 @@ class UnitTests extends ConverterBase {
    * {@inheritdoc}
    */
   public function isExecutable(TargetInterface $target) {
-    return (boolean) $target->getIndexer('unit_test')->count();
+    return $target->getIndexer('class')->getQuery()->condition('parent', 'DrupalUnitTestCase')->countQuery()->execute();
   }
 
   /**
    * {@inheritdoc}
    */
   public function convert(TargetInterface $target) {
-    $unit_tests = $target->getIndexer('unit_test')->getAll();
+    $unit_tests = [];
+    $test_files = $target->getIndexer('class')->getQuery(['file'])->condition('parent', 'DrupalUnitTestCase')->execute()->fetchCol();
+    foreach ($test_files as $test_file) {
+      /** @var \Pharborist\Objects\Classnode[] $tests */
+      $tests = $target->open($test_file)->find(Filter::isInstanceOf('\Pharborist\Objects\SingleInheritanceNode'))->toArray();
+      foreach ($tests as $test) {
+        if ((string) $test->getExtends() === 'DrupalUnitTestCase') {
+          $unit_tests[] = $test;
+        }
+      }
+    }
 
     /** @var \Pharborist\Objects\ClassNode $unit_test */
     foreach ($unit_tests as $unit_test) {
