docs: public static List<? extends ParsedAttribute<?>> parse(final String key, final Object value, final DynamicEnvironment environment) throws JSONException {
          // an object value means a change in environment, let's see what it is
          if (value instanceof JSONObject && key.startsWith(COMPOSITE_ATTR_PREFIX))
              return Collections.singletonList(parseComposite(key, (JSONObject) value, environment));
          if (value instanceof JSONArray && key.startsWith(COMPOSITE_ATTR_PREFIX))
              return Collections.singletonList(parseArray(key, (JSONArray) value, environment));
          if (value instanceof String && ((String) value).startsWith(INCLUDE_ATTR_PREFIX))
              return Collections.singletonList(parseInclude(key, (String) value, environment));
          if (value instanceof JSONObject)
              return parseObject(key, (JSONObject) value, environment);
          if (value instanceof JSONArray)
              return Collections.singletonList(parseArray(key, (JSONArray) value, environment));
  
          return Collections.singletonList(new PlainParsedAttribute(key, (Environment) environment.clone(), JSONObject.NULL.equals(value) ? null : value.toString()));
      }