question: private static String mergeTypeEx ( String a , String b ) { if ( a . equals ( b ) ) { return a ; } int as = countArrayDim ( a ) ; int bs = countArrayDim ( b ) ; if ( as > bs ) { return a ; } else if ( bs > as ) { return b ; } else { String elementTypeA = a . substring ( as ) ; String elementTypeB = a . substring ( bs ) ; TypeClass ta = TypeClass . clzOf ( elementTypeA ) ; TypeClass tb = TypeClass . clzOf ( elementTypeB ) ; if ( ta . fixed && ! tb . fixed ) { return a ; } else if ( ! ta . fixed && tb . fixed ) { return b ; } else if ( ta . fixed && tb . fixed ) { if ( ta != tb ) { if ( as == 0 ) { throw new RuntimeException ( ) ; } return buildArray ( as - 1 , "L" ) ; } if ( ta == TypeClass . INT ) { String chooseType = "I" ; for ( int i = possibleIntTypes . length - 1 ; i >= 0 ; i -- ) { String t = possibleIntTypes [ i ] ; if ( a . equals ( t ) || b . equals ( t ) ) { chooseType = t ; break ; } } return buildArray ( as , chooseType ) ; } else { return buildArray ( as , "L" ) ; } } else { return buildArray ( as , TypeClass . merge ( ta , tb ) . name ) ; } } }
target:  [[B + [[D -> [L [B + L -> [B [[B + [B -> [[B