void internalAddPossiblyNullObject( Object inputObject, List<Object> objectList, Map<Object, Object> seenObjectsMap ) { if( inputObject != null ) { if( seenObjectsMap.put(inputObject, PRESENT) != null ) { return; } if( inputObject instanceof List ) { for( Object obj : (List<?>)inputObject ) { internalAddPossiblyNullObject(obj, objectList, seenObjectsMap); } } else if( inputObject instanceof JaxbStringObjectPairArray ) { for( JaxbStringObjectPair stringObjectPair : ((JaxbStringObjectPairArray) inputObject).getItems() ) { if( stringObjectPair != null ) { internalAddPossiblyNullObject(stringObjectPair.getValue(), objectList, seenObjectsMap); } } } else if( inputObject instanceof StringKeyObjectValueMap ) { for( Object obj : ((StringKeyObjectValueMap) inputObject).values() ) { internalAddPossiblyNullObject(obj, objectList, seenObjectsMap); } } else { objectList.add(inputObject); } } }