question: private synchronized void makeCompositeBuilder ( ) throws InvalidObjectException { if ( compositeBuilder != null ) return ; Class < ? > targetClass = ( Class < ? > ) getJavaType ( ) ; CompositeBuilder [ ] [ ] builders = { { new CompositeBuilderViaFrom ( targetClass , itemNames ) } , { new CompositeBuilderViaConstructor ( targetClass , itemNames ) } , { new CompositeBuilderCheckGetters ( targetClass , itemNames , getterMappings ) , new CompositeBuilderViaSetters ( targetClass , itemNames ) , new CompositeBuilderViaProxy ( targetClass , itemNames ) } } ; CompositeBuilder foundBuilder = null ; final StringBuilder whyNots = new StringBuilder ( ) ; Throwable possibleCause = null ; find : for ( CompositeBuilder [ ] relatedBuilders : builders ) { for ( int i = 0 ; i < relatedBuilders . length ; i ++ ) { CompositeBuilder builder = relatedBuilders [ i ] ; String whyNot = builder . applicable ( getters ) ; if ( whyNot == null ) { foundBuilder = builder ; break find ; } Throwable cause = builder . possibleCause ( ) ; if ( cause != null ) possibleCause = cause ; if ( whyNot . length ( ) > 0 ) { if ( whyNots . length ( ) > 0 ) whyNots . append ( "; " ) ; whyNots . append ( whyNot ) ; if ( i == 0 ) break ; } } } if ( foundBuilder == null ) { String msg = "Do not know how to make a " + targetClass . getName ( ) + " from a CompositeData: " + whyNots ; if ( possibleCause != null ) msg += ". Remaining exceptions show a POSSIBLE cause." ; throw invalidObjectException ( msg , possibleCause ) ; } compositeBuilder = foundBuilder ; }
target:  Determine how to convert back from the CompositeData into the original Java type.  For a type that is not reconstructible, this method will fail every time, and will throw the right exception. 