code: private String getStringValue(Object o) {
          if (o instanceof String) {
              return (String) o;
          } else if (o instanceof NodeArray) {
              NodeArray array = (NodeArray) o;
              switch (array.size()) {
                  case 0:
                      return null;
                  case 1: {
                      return getStringValue(array.get(0));
                  }
                  default:
                      return getStringValue(array);
              }
          } else if (o instanceof Node) {
              return getStringValue((Node) o);
          } else if (o != null) {
              return o.toString();
          }
          return null;
      }
docs: Returns the string value for the object
  
  @param o
  the object
  @return the string value for the object