code: public <E extends Exception> boolean setIf(final L newLeft, final M newMiddle, final R newRight,
              Try.QuadPredicate<? super Triple<L, M, R>, ? super L, ? super M, ? super R, E> predicate) throws E {
          if (predicate.test(this, newLeft, newMiddle, newRight)) {
              this.left = newLeft;
              this.middle = newMiddle;
              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 newMiddle
  @param newRight
  @param predicate - the first parameter is current pair, the second
  parameter is the <code>newLeft</code>, the third parameter is the
  <code>newMiddle</code>, the fourth parameter is the
  <code>newRight</code>
  @return