@Test // Uses of JMockit API: 3
  public void returningElementsFromAList() {
    final List<String> list = asList("a", "b", "c");

    new Expectations() {
      {
        mockedList.get(anyInt);
        result = list;
      }
    };

    assertEquals("a", mockedList.get(0));
    assertEquals("b", mockedList.get(1));
    assertEquals("c", mockedList.get(2));
    assertEquals("c", mockedList.get(3));
  }
  @Test // Uses of JMockit API: 8
  public void useArgumentMatchers() {
    new Expectations() {
      {
        // Using built-in matchers:
        mockedList.get(anyInt);
        result = "element";

        // Using Hamcrest matchers:
        mockedList.get(withArgThat(is(equalTo(5))));
        result = new IllegalArgumentException();
        minTimes = 0;
        mockedList.contains(withArgThat(hasProperty("bytes")));
        result = true;
        mockedList.containsAll(withArgThat(hasSize(2)));
        result = true;
      }
    };

    assertEquals("element", mockedList.get(999));
    assertTrue(mockedList.contains("abc"));
    assertTrue(mockedList.containsAll(asList("a", "b")));

    new Verifications() {
      {
        mockedList.get(anyInt);
      }
    };
  }
  @Test // Uses of JMockit API: 3
  public void stubAndVerifyInvocationWithoutRepeatingItInExpectationAndVerificationBlocks() {
    new Expectations() {
      {
        // Notice that this can't be done in Mockito, which requires the repetition of
        // "mockedList.get(0);" in the verification phase.
        mockedList.get(0);
        result = "first";
        times = 1;
      }
    };

    assertEquals("first", mockedList.get(0));
  }
  @Test // Uses of JMockit API: 3
  public void stubAndVerifyInvocation() {
    // A recorded expectation is expected to occur at least once, by default.
    new Expectations() {
      {
        mockedList.get(0);
        result = "first";
      }
    };

    assertEquals("first", mockedList.get(0));

    // Note that verifying a stubbed invocation isn't "just redundant" if the test cares that the
    // invocation occurs at least once. If this is the case, then it's not safe to expect the test
    // to break without an explicit verification, because the method under test may never call the
    // stubbed one, and that would be a bug that the test should detect.
  }