code: private static JSONArray _fromArray( Object[] array, JsonConfig jsonConfig ) {
        if( !addInstance( array ) ){
           try{
              return jsonConfig.getCycleDetectionStrategy()
                    .handleRepeatedReferenceAsArray( array );
           }catch( JSONException jsone ){
              removeInstance( array );
              fireErrorEvent( jsone, jsonConfig );
              throw jsone;
           }catch( RuntimeException e ){
              removeInstance( array );
              JSONException jsone = new JSONException( e );
              fireErrorEvent( jsone, jsonConfig );
              throw jsone;
           }
        }
        fireArrayStartEvent( jsonConfig );
        
        JSONArray jsonArray = new JSONArray();
        try{
           for( int i = 0; i < array.length; i++ ){
              Object element = array[i];
              jsonArray.addValue( element, jsonConfig );
              fireElementAddedEvent( i, jsonArray.get( i ), jsonConfig );
           }
        }catch( JSONException jsone ){
           removeInstance( array );
           fireErrorEvent( jsone, jsonConfig );
           throw jsone;
        }catch( RuntimeException e ){
           removeInstance( array );
           JSONException jsone = new JSONException( e );
           fireErrorEvent( jsone, jsonConfig );
           throw jsone;
        }
  
        removeInstance( array );
        fireArrayEndEvent( jsonConfig );
        return jsonArray;
     }
docs: ------------------------------------------------------