code: @Override
      public final JSONObject toJSONObject()
      {
          final JSONObject object = new JSONObject();
  
          object.put("type", new JSONString(getNodeType().getValue()));
  
          if (hasMetaData())
          {
              final MetaData meta = getMetaData();
  
              if (false == meta.isEmpty())
              {
                  object.put("meta", new JSONObject(meta.getJSO()));
              }
          }
          object.put("attributes", new JSONObject(getAttributes().getJSO()));
  
          final JSONArray children = new JSONArray();
  
          children.set(0, getScene().toJSONObject());
  
          object.put("children", children);
  
          object.put("storage", getStorageEngine().toJSONObject());
  
          return object;
      }
docs: Returns a {@link JSONObject} representation of the {@link Viewport} with its {@link Attributes} as well as its children.
  
  @return {@link JSONObject}