code: public JSONArray element( String value, JsonConfig jsonConfig ) {
        if( value == null ) {
           this.elements.add("");
        } else if( JSONUtils.hasQuotes( value )) {
           this.elements.add(value);
        } else if( JSONNull.getInstance().equals( value )) {
           this.elements.add( JSONNull.getInstance() );
        } else if( JSONUtils.isJsonKeyword(value,jsonConfig)) {
           if( jsonConfig.isJavascriptCompliant() && "undefined".equals( value )){
              this.elements.add( JSONNull.getInstance() );
           }else{
              this.elements.add(value);
           }
        } else if( JSONUtils.mayBeJSON( value ) ){
           try{
              this.elements.add( JSONSerializer.toJSON( value, jsonConfig ) );
           }catch( JSONException jsone ){
              this.elements.add( value );
           }
        } else {
           this.elements.add(value);
        }
        return this;
     }
docs: Append a String value. This increases the array's length by one.<br>
  The string may be a valid JSON formatted string, in tha case, it will be
  transformed to a JSONArray, JSONObject or JSONNull.
  
  @param value A String value.
  @return this.