code: public String getNameDescriptor() {
          StringBuilder b = new StringBuilder();
          b.append(getStorableType().getName());
          b.append('~');
          b.append(isUnique() ? 'U': 'N');
  
          int count = getPropertyCount();
          for (int i=0; i<count; i++) {
              b.append(getPropertyDirection(i).toCharacter());
              b.append(getProperty(i).getName());
          }
  
          return b.toString();
      }
docs: Converts this index into a parseable name descriptor string, whose
  general format is:
  
  <p>{@code <storable type>~<attr><+|-|~><property><+|-|~><property>...}
  
  <p>Attr is "U" for a unique index, "N" for a non-unique index.
  
  <p>Example: {@code my.pkg.UserInfo~N+lastName+firstName-birthDate}
  
  @see #parseNameDescriptor(String, StorableInfo)