code: public <E extends Exception> boolean setLeftIf(final L newLeft, Try.BiPredicate<? super Triple<L, M, R>, ? super L, E> predicate) throws E {
          if (predicate.test(this, newLeft)) {
              this.left = newLeft;
              return true;
          }
  
          return false;
      }
docs: Set to the specified <code>newLeft</code> and returns <code>true</code>
  if <code>predicate</code> returns true. Otherwise returns
  <code>false</code> without setting the value to new value.
  
  @param newLeft
  @param predicate - the first parameter is current pair, the second
  parameter is the <code>newLeft</code>
  @return