title: Can not understand the implementation of until() method in FluentWait
body: <p>The <code>until()</code> method in <code>org.openqa.selenium.support.ui.FluentWait</code> is overloaded for <code>Predicate&lt;T&gt;</code> and <code>Function&lt;? super T, V&gt;</code> interfaces as parameters. </p>
  
  <p>It should take as argument one of the following (which implement the <code>apply()</code> method):</p>
  
  <ul>
  <li>Anonymous class </li>
  <li>Lambda expression </li>
  <li>Method reference</li>
  </ul>
  
  <p>Any lambda that I define as argument for this method throws following error:</p>
  
  <p>The method until(Predicate) is ambiguous for the type WebDriverWait</p>
  
  <p>My Lambda:</p>
  
  <pre><code>x -&gt; x.findElement(byLocator).isDisplayed()
  </code></pre>
  
  <p>I assume this will be the case for any lambda, as <code>apply()</code> for either Function or Predicate can be implemented by use of these lambda. </p>
  
  <p><strong>So my question is what is the use of the until method which takes Predicate as parameter?</strong></p>
  
  <p>Updated:
  Removed the first part of question which was answered by @drkthng.</p>