docs: private void sortPropertyNames(List<String> names) {
          for (String name : new ArrayList<String>(names)) {
              int propertyIndex = names.indexOf(name);
              RelaxedDataBinder.BeanPath path = new RelaxedDataBinder.BeanPath(name);
              for (String prefix : path.prefixes()) {
                  int prefixIndex = names.indexOf(prefix);
                  if (prefixIndex >= propertyIndex) {
                      // The child property has a parent in the list in the wrong order
                      names.remove(name);
                      names.add(prefixIndex, name);
                  }
              }
          }
      }