public int getStart() {
    Node startNode = jsonNode.getKey();
    if (startNode == null) {
      startNode = jsonNode.getValue();
    }

    return startNode.getStart();
  }
  public int getLength() {
    Node startNode = jsonNode.getKey();
    if (startNode == null) {
      startNode = jsonNode.getValue();
    }
    Node endNode = jsonNode.getValue();
    if (endNode == null) {
      endNode = jsonNode.getKey();
    }

    return endNode.getEnd() - startNode.getStart();
  }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((jsonNode == null) ? 0 : jsonNode.hashCode());
   return result;
 }
  public Image getImage() {
    if (image != null) {
      return image;
    }

    image = createMyImage(imageMap.get(jsonNode.getJsonType()));
    return image;
  }
 @Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   JsonTreeNode other = (JsonTreeNode) obj;
   if (jsonNode == null) {
     if (other.jsonNode != null) return false;
   } else if (!jsonNode.equals(other.jsonNode)) return false;
   return true;
 }
  public StyledString getStyledString() {
    StyledString styledString = new StyledString();
    if (jsonNode.getKey() != null) {
      StyledString.Styler style1 = StyledString.createColorRegistryStyler("BLACK", "WHITE");
      styledString.append(jsonNode.getKey().getValue(), style1);
      StyledString.Styler style2 = StyledString.createColorRegistryStyler("BLACK", "WHITE");
      styledString.append(" : ", style2);
    }

    if (jsonNode.getValue() != null
        && (jsonNode.getJsonType() != JsonType.Object
            && jsonNode.getJsonType() != JsonType.Array)) {
      StyledString.Styler style3 = styleMap.get(jsonNode.getJsonType());
      styledString.append(jsonNode.getValue().getValue(), style3);
    }
    return styledString;
  }
 public JsonType getType() {
   return jsonNode.getJsonType();
 }