private static function buildDependencies($obj): void {
    $name = get_class($obj);

    if(!array_key_exists($name, self::$method_map)) {
      try {
        $class = new ReflectionClass($obj);
      } catch(ReflectionException $e) {
        throw new RuntimeException("This shouldn't be possible", 0, $e);
      }

      $methods = $class->getMethods(ReflectionMethod::IS_PROTECTED);
      $properties = self::filterProperties($methods);

      $inflector = Inflector::get();

      $method_map = self::remapProperties([$inflector, 'underscore'], $properties);

      self::$method_map[$name] = self::extractProperties($method_map);
    }
  }