AnnotatedTypeImpl extends AbstractAnnotated implements AnnotatedType<X> { @Override public int hashCode() { return super.hashCode(); } AnnotatedTypeImpl(WebBeansContext webBeansContext, Class<X> annotatedClass, AnnotatedType<? super X> supertype);  AnnotatedTypeImpl(WebBeansContext webBeansContext, AnnotatedType otherAnnotatedType); @Override Class<X> getJavaClass(); @Override Set<AnnotatedConstructor<X>> getConstructors(); @Override Set<AnnotatedField<? super X>> getFields(); @Override Set<AnnotatedMethod<? super X>> getMethods(); @Override boolean equals(final Object o); @Override int hashCode();  }
@Test public void hashCodeComputation() { final AnnotatedType<Foo> annotatedType = new AnnotatedTypeImpl<>( new WebBeansContext(), Foo.class, null); assertEquals(annotatedType.hashCode(), annotatedType.hashCode()); final AnnotatedType<Foo> wrapped = new AnnotatedTypeWrapper<>(null, annotatedType, ""); assertEquals(annotatedType.hashCode(), wrapped.hashCode()); }