private void extractCauses(Throwable failure, List<Throwable> causes) {
   if (failure instanceof MultipleBuildFailures) {
     MultipleBuildFailures exception = (MultipleBuildFailures) failure;
     for (Throwable componentFailure : exception.getCauses()) {
       extractCauses(componentFailure, causes);
     }
   } else if (failure instanceof LocationAwareException) {
     causes.addAll(((LocationAwareException) failure).getReportableCauses());
   } else {
     causes.add(failure.getCause());
   }
 }
  @Test
  @Ignore
  public void shippedOrdersAreNotShown() throws Exception {
    Order shipped = new Order("X");
    Order notShipped = new Order("Y");
    orders.addAll(asList(shipped, notShipped));
    shipped.ship();

    when(request.getMethod()).thenReturn("GET");
    when(request.getRequestURI()).thenReturn("/orders");

    ordersController.service();

    verify(ordersView).show(asList(notShipped));
  }
  @Test // Uses of JMockit API: 3
  public void customArgumentMatcherUsingAnonymousClass() {
    mockedList.addAll(asList("one", "two"));

    new Verifications() {
      {
        mockedList.addAll(
            with(
                new Delegate<List<String>>() {
                  boolean matches(List<?> list) {
                    return list.size() == 2;
                  }
                }));
      }
    };
  }
  @Test // Uses of JMockit API: 5
  public void customArgumentMatcherUsingNamedClass() {
    class IsListOfTwoElements implements Delegate<List<String>> {
      boolean matches(List<?> list) {
        return list.size() == 2;
      }
    }

    new Expectations() {
      {
        mockedList.addAll(with(new IsListOfTwoElements()));
        result = true;
        times = 1;
      }
    };

    mockedList.addAll(asList("one", "two"));

    // No need to re-verify the invocation of "addAll" here.
  }