Class<?> typeArgument = (Class<?>) type.getActualTypeArguments()[0];
AnnotatedType annotatedTypeArgument = new AnnotatedType(typeArgument);
if (isEntityType(annotatedTypeArgument)) {
Direction relationDirection = getRelationDirection(propertyMethod, Direction.FROM);
com.buschmais.cdo.spi.reflection.AnnotatedElement<?> relationElement = getRelationDefinitionElement(propertyMethod);
RelationTypeMetadata relationshipType = new RelationTypeMetadata<>(metadataFactory.createRelationMetadata(relationElement, metadataByType));
methodMetadata = new EntityCollectionPropertyMethodMetadata<>(propertyMethod, relationshipType, relationDirection,
metadataFactory.createCollectionPropertyMetadata(propertyMethod));
} else if (isRelationType(annotatedTypeArgument)) {
TypeMetadata relationTypeMetadata = getOrCreateTypeMetadata(typeArgument);
RelationTypeMetadata<RelationMetadata> relationMetadata = (RelationTypeMetadata) relationTypeMetadata;