code: private TypeMetadata getOrCreateTypeMetadata(Class<?> type) {
          AnnotatedType annotatedType = new AnnotatedType(type);
          TypeMetadata typeMetadata = metadataByType.get(annotatedType.getAnnotatedElement());
          if (typeMetadata == null) {
              typeMetadata = createTypeMetadata(annotatedType);
              LOGGER.debug("Registering class {}", annotatedType.getName());
              metadataByType.put(annotatedType.getAnnotatedElement(), typeMetadata);
          }
          return typeMetadata;
      }
docs: Return the {@link TypeMetadata} for a given type.
  <p>
  The metadata will be created if it does not exist yet.
  </p>
  
  @param type
  The type.
  @return The {@link TypeMetadata}.