@Test
  public void getInterceptionHandler_whenCallIsNotRecognized_shouldReturnDoNothingHandler()
      throws Exception {
    MethodSignature methodSignature = MethodSignature.parse("java/lang/Object/unknownMethod()V");
    Function<Object, Object> handler = shadowWrangler.getInterceptionHandler(methodSignature);

    assertThat(handler).isNotNull().isSameAs(ShadowWrangler.DO_NOTHING_HANDLER);
    assertThat(handler.call(null)).isNull();
  }
  @Test
  public void
      getInterceptionHandler_whenInterceptingElderOnLinkedHashMap_shouldReturnNonDoNothingHandler()
          throws Exception {
    MethodSignature methodSignature =
        MethodSignature.parse("java/util/LinkedHashMap/eldest()Ljava/lang/Object");
    Function<Object, Object> handler = shadowWrangler.getInterceptionHandler(methodSignature);

    assertThat(handler).isNotSameAs(ShadowWrangler.DO_NOTHING_HANDLER);
  }
  @Test
  public void intercept_elderOnLinkedHashMapHandler_shouldReturnEldestMemberOfLinkedHashMap()
      throws Throwable {
    LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer, String>(2);
    map.put(1, "one");
    map.put(2, "two");

    @SuppressWarnings("unchecked")
    Map.Entry<Integer, String> result =
        (Map.Entry<Integer, String>)
            shadowWrangler.intercept(
                "java/util/LinkedHashMap/eldest()Ljava/lang/Object;", map, null, getClass());

    Map.Entry<Integer, String> eldestMember = map.entrySet().iterator().next();
    assertThat(result).isEqualTo(eldestMember);
    assertThat(result.getKey()).isEqualTo(1);
    assertThat(result.getValue()).isEqualTo("one");
  }