docs: private final AbstractJcrProperty createJcrProperty( Property property,
                                                           Name primaryTypeName,
                                                           Set<Name> mixinTypeNames ) throws ConstraintViolationException {
          NodeTypes nodeTypes = session.nodeTypes();
          JcrPropertyDefinition defn = propertyDefinitionFor(property, primaryTypeName, mixinTypeNames, nodeTypes);
          int jcrPropertyType = defn.getRequiredType();
          jcrPropertyType = determineBestPropertyTypeIfUndefined(jcrPropertyType, property);
          AbstractJcrProperty prop = null;
          if (defn.isMultiple()) {
              prop = new JcrMultiValueProperty(this, property.getName(), jcrPropertyType);
          } else {
              prop = new JcrSingleValueProperty(this, property.getName(), jcrPropertyType);
          }
          prop.setPropertyDefinitionId(defn.getId(), nodeTypes.getVersion());
          return prop;
      }