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