code: protected List<BindInfo> getBeanBinders(@NotNull Class<?> type) {
          List<BindInfo> bindings = beanInfoByClass.get(type);
          if (bindings != null) {
              return bindings;
          }
          bindings = new ArrayList<>();
  
          // check all public fields
          for (Field f : type.getFields()) {
              int modifiers = f.getModifiers();
              if (!isPublic(modifiers) || isStatic(modifiers) || isTransient(modifiers)) {
                  continue; //ignore
              }
              DbBinder binder = findBinderByType(f.getType(), null);
              if (binder != null) {
                  bindings.add(new BindInfo(f.getName(), binder, 0, f, null));
              }
          }
  
          // check all public get/is methods
          for (Method m : type.getMethods()) {
              int modifiers = m.getModifiers();
              String methodName = m.getName();
              if (!isPublic(modifiers) || isStatic(modifiers) || m.getParameterCount() != 0 || !(methodName.startsWith("get") || methodName.startsWith("is"))) {
                  continue; //ignore
              }
              String suffix = methodName.startsWith("is") ? methodName.substring(2) : methodName.substring(3);
              String propertyName = Character.toLowerCase(suffix.charAt(0)) + suffix.substring(1);
              if (bindings.stream().filter(b -> b.mappedName.equals(propertyName)).findAny().orElse(null) != null) { // field has higher priority.
                  continue;
              }
              DbBinder binder = findBinderByType(m.getReturnType(), null);
              if (binder != null) {
                  bindings.add(new BindInfo(propertyName, binder, 0, null, m));
              }
          }
          beanInfoByClass.put(type, bindings);
          return bindings;
      }
docs: For all public fields and getters assign binders by type