private Collection<MethodMetadata<?, ?>> getMethodMetadataOfType(AnnotatedType annotatedType, Collection<AnnotatedMethod> annotatedMethods) {
Collection<MethodMetadata<?, ?>> methodMetadataOfType = new ArrayList<>();
// Collect the getter methods as they provide annotations holding meta information also to be applied to setters
for (AnnotatedMethod annotatedMethod : annotatedMethods) {
MethodMetadata<?, ?> methodMetadata;
ResultOf resultOf = annotatedMethod.getAnnotation(ResultOf.class);
ImplementedBy implementedBy = annotatedMethod.getAnnotation(ImplementedBy.class);
if (implementedBy != null) {
methodMetadata = new ImplementedByMethodMetadata<>(annotatedMethod, implementedBy.value(), metadataFactory.createImplementedByMetadata(annotatedMethod));
} else if (resultOf != null) {
methodMetadata = createResultOfMetadata(annotatedMethod, resultOf);