code: private JSONObject _setInternal( String key, Object value, JsonConfig jsonConfig ) {
        verifyIsNull();
        if( key == null ){
           throw new JSONException( "Null key." );
        }
  
        if( JSONUtils.isString( value ) && JSONUtils.mayBeJSON( String.valueOf( value ) ) ){
           this.properties.put( key, value );
        }else{
           /*
           Object jo = _processValue( value, jsonConfig );
           if( CycleDetectionStrategy.IGNORE_PROPERTY_OBJ == jo
                 || CycleDetectionStrategy.IGNORE_PROPERTY_ARR == jo ){
              // do nothing
           }else{
              this.properties.put( key, jo );
           }
           */
           if( CycleDetectionStrategy.IGNORE_PROPERTY_OBJ == value
                 || CycleDetectionStrategy.IGNORE_PROPERTY_ARR == value ){
              // do nothing
           }else{
              this.properties.put( key, value );
           }
        }
  
        return this;
     }
docs: Put a key/value pair in the JSONObject.
  
  @param key A key string.
  @param value An object which is the value. It should be of one of these
  types: Boolean, Double, Integer, JSONArray, JSONObject, Long,
  String, or the JSONNull object.
  @return this.
  @throws JSONException If the value is non-finite number or if the key is
  null.