determine the `` base type '' of a field . that is , the following will be returned : string - > string.class optional < string > - > string.class set < string > - > string.class collection < ? extends comparable > - > comparable.class collection < ? super comparable - > object.class concode_field_sep PlaceHolder placeHolder concode_field_sep Class<? extends Collection<?>> getContainerClass concode_elem_sep Type getFirstNonOptionalType
Type function ( Field arg0 ) { Type loc0 = getFirstNonOptionalType ( arg0 ) ; if ( loc0 instanceof ParameterizedType ) { loc0 = ( ( ParameterizedType ) loc0 ) . getActualTypeArguments ( ) [ 0 ] ; } if ( loc0 instanceof WildcardType ) { loc0 = ( ( WildcardType ) loc0 ) . getUpperBounds ( ) [ 0 ] ; } return Primitives . wrap ( ( Class < ? > ) loc0 ) ; }