code: private List<ModelProperty> propertiesFor(ResolvedType type, ModelContext givenContext, String namePrefix) {
      Set<ModelProperty> properties = new TreeSet<>(byPropertyName());
      BeanDescription beanDescription = beanDescription(type, givenContext);
      Map<String, BeanPropertyDefinition> propertyLookup = beanDescription.findProperties().stream().collect(toMap(
          beanPropertyByInternalName(), identity()));
      for (Map.Entry<String, BeanPropertyDefinition> each : propertyLookup.entrySet()) {
        LOG.debug("Reading property {}", each.getKey());
        BeanPropertyDefinition jacksonProperty = each.getValue();
        Optional<AnnotatedMember> annotatedMember
            = ofNullable(safeGetPrimaryMember(jacksonProperty, givenContext));
        annotatedMember.ifPresent(
            member -> properties.addAll(
                candidateProperties(
                    type,
                    member,
                    jacksonProperty,
                    givenContext,
                    namePrefix)));
      }
      return new ArrayList<>(properties);
    }
docs: List cannot contain duplicated byPropertyName()