public void testTypeOfFacetInferredForCollectionWithJavaUtilSetReturnType() {
    class Order {}
    class Customer {
      @SuppressWarnings("unused")
      @TypeOf(Order.class)
      public Set getOrders() {
        return null;
      }
    }
    final Method accessorMethod = findMethod(Customer.class, "getOrders");

    facetFactory.process(
        new ProcessMethodContext(Customer.class, accessorMethod, methodRemover, facetedMethod));

    final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
    assertNotNull(facet);
    assertTrue(facet instanceof TypeOfFacetAnnotationForCollection);
    final TypeOfFacetAnnotationForCollection typeOfFacetAnnotationForCollection =
        (TypeOfFacetAnnotationForCollection) facet;
    assertEquals(Order.class, typeOfFacetAnnotationForCollection.value());

    assertNoMethodsRemoved();
  }
  public void testTypeOfFacetInferredForActionWithJavaUtilCollectionReturnType() {
    class Order {}
    class Customer {
      // rawtypes are intention for this test
      @SuppressWarnings({"unused", "rawtypes"})
      @TypeOf(Order.class)
      public Collection someAction() {
        return null;
      }
    }
    final Method actionMethod = findMethod(Customer.class, "someAction");

    facetFactory.process(
        new ProcessMethodContext(Customer.class, actionMethod, methodRemover, facetedMethod));

    final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
    assertNotNull(facet);
    assertTrue(facet instanceof TypeOfFacetAnnotationForCollection);
    final TypeOfFacetAnnotationForCollection typeOfFacetAnnotationForCollection =
        (TypeOfFacetAnnotationForCollection) facet;
    assertEquals(Order.class, typeOfFacetAnnotationForCollection.value());

    assertNoMethodsRemoved();
  }