code: private @NotNull <T> Optional<Instantiator<T>> implicitInstantiatorFrom(@NotNull Constructor<T> constructor, @NotNull NamedTypeList types) {
          if (!isPublic(constructor.getModifiers()))
              return Optional.empty();
  
          List<String> columnNames = types.getNames();
          return findTargetTypes(constructor, columnNames)
                  .flatMap(targetTypes -> resolveConversions(types, targetTypes)
                          .map(conversions -> new ReflectionInstantiator<>(constructor, conversions, createPropertyAccessorsForValuesNotCoveredByConstructor(constructor, columnNames))));
      }
docs: Returns an instantiator that uses given constructor and given types to create instances,
  or empty if there are no conversions that can be made to instantiate the type.