code: public static final <T> Function<T,T> ifTrueThen(
              final Type<T> targetType, final IFunction<? super T, Boolean> condition, final IFunction<? super T,? extends T> thenFunction) {
          return new IfThen<T>(true, targetType, condition, thenFunction);
      }
docs: <p>
  Builds a function that will execute the specified function <tt>thenFunction</tt>
  only if the result of executing <tt>condition</tt> on the target object is true.
  </p>
  <p>
  The built function cannot change the return type (receives <tt>T</tt> and returns <tt>T</tt>)
  because the <tt>thenFunction</tt> could remain unexecuted, and so the type returned by
  <tt>thenFunction</tt> must be the same as the type required as input, in order to keep
  consistency.
  </p>
  
  @param targetType the target type
  @param condition the condition to be executed on the target object
  @param thenFunction the function to be executed on the target object if condition is true
  @return a function that executes the "thenFunction" if "condition" is true.