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;
ImplementedBy implementedBy = annotatedMethod.getAnnotation(ImplementedBy.class);
ResultOf resultOf = annotatedMethod.getAnnotation(ResultOf.class);
if (implementedBy != null) {
methodMetadata = new ImplementedByMethodMetadata<>(annotatedMethod, implementedBy.value(),
metadataFactory.createImplementedByMetadata(annotatedMethod));
} else if (resultOf != null) {
methodMetadata = createResultOfMetadata(annotatedMethod, resultOf);
} else if (annotatedMethod instanceof PropertyMethod) {
PropertyMethod propertyMethod = (PropertyMethod) annotatedMethod;