code: public String asString() {
      final StringBuilder builder = new StringBuilder();
      boolean first = true;
      for (int i = 1; i < this.nodeList.size(); i++) {
        final NodeImpl nodeImpl = (NodeImpl) this.nodeList.get(i);
        final String name = nodeImpl.asString();
        if (name.isEmpty()) {
          // skip the node if it does not contribute to the string representation of the path, eg
          // class level constraints
          continue;
        }
  
        if (!first) {
          builder.append(PROPERTY_PATH_SEPARATOR);
        }
  
        builder.append(nodeImpl.asString());
  
        first = false;
      }
      return builder.toString();
    }
docs: serialize as string.
  
  @return string value of the node