code: public <T> T untilCall(T proxyMethodReturnValue, final Matcher<? super T> matcher) {
          if (!existInCP("java.util.ServiceLoader")) {
              throw new UnsupportedOperationException("java.util.ServiceLoader not found in classpath so cannot create condition");
          }
          ClassLoader cl = Thread.currentThread().getContextClassLoader();
          if (cl == null) {
              cl = ClassLoader.getSystemClassLoader();
          }
          Iterator<ProxyConditionFactory> iterator = java.util.ServiceLoader.load(ProxyConditionFactory.class, cl).iterator();
          if (!iterator.hasNext()) {
              throw new UnsupportedOperationException("There's currently no plugin installed that can handle proxy conditions, please consider adding 'awaitility-proxy' to the classpath. If using Maven you can do:" +
                      "<dependency>\n" +
                      "\t<groupId>org.awaitility</groupId>\n" +
                      "\t<artifactId>awaitility-proxy</artifactId>\n" +
                      "\t<version>${awaitility.version}</version>\n" +
                      "</dependency>\n");
          }
          @SuppressWarnings("unchecked") ProxyConditionFactory<T> factory = iterator.next();
          if (factory == null) {
              throw new IllegalArgumentException("Internal error: Proxy condition plugin initialization returned null, please report an issue.");
          }
          return until(factory.createProxyCondition(proxyMethodReturnValue, matcher, generateConditionSettings()));
      }
docs: Specify the condition that must be met when waiting for a method call.
  E.g.
  <p>&nbsp;</p>
  <pre>
  await().untilCall(to(orderService).size(), is(greaterThan(2)));
  </pre>
  
  @param <T>     the generic type
  @param proxyMethodReturnValue  the return value of the method call
  @param matcher The condition that must be met when
  @return a T object.
  @throws org.awaitility.core.ConditionTimeoutException If condition was not fulfilled within the given time period.