code: @Override
    public By buildBy() {
      assertValidAnnotations();
  
      By ans = null;
  
      for (Annotation annotation : field.getDeclaredAnnotations()) {
        AbstractFindByBuilder builder = null;
        if (annotation.annotationType().isAnnotationPresent(PageFactoryFinder.class)) {
          try {
            builder = annotation.annotationType()
                .getAnnotation(PageFactoryFinder.class).value()
                .newInstance();
          } catch (ReflectiveOperationException e) {
            // Fall through.
          }
        }
        if (builder != null) {
          ans = builder.buildIt(annotation, field);
          break;
        }
      }
  
      if (ans == null) {
        ans = buildByFromDefault();
      }
  
      if (ans == null) {
        throw new IllegalArgumentException("Cannot determine how to locate element " + field);
      }
  
      return ans;
    }
docs: {@inheritDoc}
  
  Looks for one of {@link org.openqa.selenium.support.FindBy},
  {@link org.openqa.selenium.support.FindBys} or
  {@link org.openqa.selenium.support.FindAll} field annotations. In case
  no annotations provided for field, uses field name as 'id' or 'name'.
  @throws IllegalArgumentException when more than one annotation on a field provided