docs: @Override
      public FieldTextBuilder WHEN(final int depth, final FieldText fieldText) {
          Validate.isTrue(depth >= 1, "Depth must be at least 1");
          Validate.notNull(fieldText, "FieldText should not be null");
  
          Validate.isTrue(fieldText.size() >= 1, "FieldText must have a size greater or equal to 1");
  
          if(size() < 1) {
              throw new IllegalStateException("Size must be greater than or equal to 1");
          }
  
          // We omit this 'optimization' because for large n it doesn't work, X WHENn A => 0, even if X = A
          //if (fieldText == this || toString().equals(fieldText.toString())) {
          //    return this;
          //}
          if(fieldText == this) {
              return binaryOperation("WHEN" + depth, new FieldTextWrapper(this));
          }
  
          if(MATCHNOTHING.equals(this) || MATCHNOTHING.equals(fieldText)) {
              return setFieldText(MATCHNOTHING);
          }
  
          return binaryOperation("WHEN" + depth, fieldText);
      }