code: @NotNull
      public DbPreparedStatement<T> bindBean(@NotNull Db db, @NotNull Object bean, boolean allowCustomFields) throws SQLException {
          List<BindInfo> binders = ((DbImpl) db).getBeanBinders(bean.getClass());
          for (String key : parametersMapping.keySet()) {
              BindInfo info = binders.stream().filter(i -> i.mappedName.equals(key)).findFirst().orElse(null);
              if (info == null) {
                  if (allowCustomFields) {
                      continue;
                  }
                  throw new SQLException("No mapping found for field: " + key);
              }
              try {
                  bindArg(this, info, getIndexes(key), bean);
              } catch (IllegalAccessException | InvocationTargetException e) {
                  throw new SQLException("Error applying bean properties: " + bean, e);
              }
          }
          return this;
      }
docs: Sets all bean properties to named parameters.
  
  @param db                database to use. This method call relies on binders registered in this database instance.
  @param bean              bean to map to named SQL parameters.
  @param allowCustomFields if false and SQL contains keys not resolved with this bean -> SQLException will be thrown.
  @return this.
  @throws SQLException if anything bad happens during SQL operations or bean field accessors calls.