code: public function buildInjectionForClass(\ReflectionClass $class, ?\ReflectionMethod $creatorMethod) : InjectionDefinition
      {
          $creatorInjection = new MethodInjection([], '__construct');
  
          // TODO: can we reshape this ? The check here seems to be out of place
          // is this service create by a factory method ?
          if ($creatorMethod) {
              $creatorInjection = $this->createPublicMethodInjection($creatorMethod);
          } else {
              // else do we have a constructor ?
              $ctor = $class->getConstructor();
  
              if ($ctor) {
                  $creatorInjection = $this->createPublicMethodInjection($ctor);
              }
          }
  
          /** @var MethodInjection[] $setterInjections */
          $setterInjections = [];
  
          // build setter injections
          foreach ($class->getMethods() as $method) {
              // only non-static public methods that are marked for injection
              if (! $method->isStatic() &&
                  $method->isPublic() &&
                  ! $method->isConstructor() &&
                  $this->reader->getMethodAnnotation($method, Di\SetterInject::class)
              ) {
                  // build and add the injection
                  $setterInjections[] = $this->createPublicMethodInjection($method);
              }
          }
  
          return new InjectionDefinition($creatorInjection, $setterInjections);
      }
docs: @param \ReflectionClass       $class         The class to be injected into.
  @param null|\ReflectionMethod $creatorMethod An optional creator method. If not provided we will search for constructor.
  
  @return InjectionDefinition