Buggy code:
public class ViewAttributeDefinition implements IView { private static final AttributeType [ ] COMBO1_TYPES = new AttributeType [ ] { AttributeType . INSENSITIVE_ATTRIBUTE , AttributeType . SENSITIVE_ATTRIBUTE , AttributeType . QUASI_IDENTIFYING_ATTRIBUTE , AttributeType . IDENTIFYING_ATTRIBUTE } ; private static final String [ ] COMBO1_VALUES = new String [ ] { Resources . getMessage ( "AttributeDefinitionView.0" ) , Resources . getMessage ( "AttributeDefinitionView.1" ) , Resources . getMessage ( "AttributeDefinitionView.2" ) , Resources . getMessage ( "AttributeDefinitionView.3" ) } ; private static final List < MicroAggregationFunctionDescription > FUNCTIONS = AttributeType . listMicroAggregationFunctions ( ) ; private static final String ITEM_ALL = Resources . getMessage ( "HierarchyView.0" ) ; private final Image IMAGE_IDENTIFYING ; private final Image IMAGE_INSENSITIVE ; private final Image IMAGE_QUASI_IDENTIFYING ; private final Image IMAGE_SENSITIVE ; private String attribute = null ; private Model model ; private final Controller controller ; private final Combo cmbDataType ; private final Text txtDataType ; private final CTabItem tabItem ; private final Combo cmbType ; private final Combo cmbMode ; private final Combo cmbFunction ; private final Button btnMissing ; private final Combo cmbMin ; private final Combo cmbMax ; private final ComponentMultiStack transformationStack ; private final ViewHierarchy viewGeneralization ; public ViewAttributeDefinition ( final CTabFolder parent , final String attribute , final Controller controller ) { } @ Override public void dispose ( ) { } @ Override public void reset ( ) { } @ Override public void update ( final ModelEvent event ) { } private void actionAttributeTypeChanged ( ) { } private void actionDataTypeChanged ( ) { } private void actionFunctionChanged ( ) { } private boolean actionMaxChanged ( ) { } private boolean actionMinChanged ( ) { } private void actionMissingChanged ( ) { } private void actionTransformationModeChanged ( ) { } private DataTypeDescription < ? > getDataType ( String label ) { } private String [ ] getDataTypes ( ) { } private int getIndexOfDataType ( DataType < ? > type ) { } private MicroAggregationFunctionDescription getMicroAggregationFunction ( String label ) { } private String [ ] getValuesAsArray ( ) { } private Collection < String > getValuesAsList ( ) { } private boolean isValidDataType ( DataType < ? > type , Collection < String > values ) { } private void updateAttributeType ( ) { } private void updateDataType ( ) { } private void updateFunction ( ) { } private void updateIcon ( ) { } private void updateMinMax ( ) { if ( ( ( ( ( model ) == null ) || ( ( model . getInputConfig ( ) ) == null ) ) || ( ( cmbMin ) == null ) ) || ( cmbMin . isDisposed ( ) ) ) { return ; } final List < String > minItems = new ArrayList < String > ( ) ; final List < String > maxItems = new ArrayList < String > ( ) ; minItems . add ( ViewAttributeDefinition . ITEM_ALL ) ; int length = 0 ; Hierarchy hierarchy = model . getInputConfig ( ) . getHierarchy ( attribute ) ; <START_BUG> if ( ! ( ( ( ( hierarchy == null ) || ( ( hierarchy . getHierarchy ( ) ) == null ) ) || ( ( hierarchy . getHierarchy ( ) [ 0 ] ) == null ) ) || ( ( hierarchy . getHierarchy ( ) [ 0 ] . length ) == 0 ) ) ) { <END_BUG> length = hierarchy . getHierarchy ( ) [ 0 ] . length ; } for ( int i = 0 ; i < length ; i ++ ) { minItems . add ( String . valueOf ( i ) ) ; maxItems . add ( String . valueOf ( i ) ) ; } maxItems . add ( ViewAttributeDefinition . ITEM_ALL ) ; Integer minModel = model . getInputConfig ( ) . getMinimumGeneralization ( attribute ) ; int minIndex = ( minModel != null ) ? minModel + 1 : 0 ; Integer maxModel = model . getInputConfig ( ) . getMaximumGeneralization ( attribute ) ; int maxIndex = ( maxModel != null ) ? maxModel : ( maxItems . size ( ) ) - 1 ; maxIndex = ( maxIndex > ( ( maxItems . size ( ) ) - 1 ) ) ? ( maxItems . size ( ) ) - 1 : maxIndex ; maxIndex = ( maxIndex < 0 ) ? ( maxItems . size ( ) ) - 1 : maxIndex ; minIndex = ( minIndex > ( ( minItems . size ( ) ) - 1 ) ) ? ( minItems . size ( ) ) - 1 : minIndex ; minIndex = ( minIndex < 0 ) ? 0 : minIndex ; minIndex = ( minIndex > ( maxIndex + 1 ) ) ? maxIndex + 1 : minIndex ; cmbMin . setItems ( minItems . toArray ( new String [ minItems . size ( ) ] ) ) ; cmbMax . setItems ( maxItems . toArray ( new String [ maxItems . size ( ) ] ) ) ; cmbMin . select ( minIndex ) ; cmbMax . select ( maxIndex ) ; actionMinChanged ( ) ; actionMaxChanged ( ) ; } private void updateMode ( ) { } }

Fix:
if ( ! ( ( ( ( ( hierarchy == null ) || ( ( hierarchy . getHierarchy ( ) ) == null ) ) || ( ( hierarchy . getHierarchy ( ) . length ) == 0 ) ) || ( ( hierarchy . getHierarchy ( ) [ 0 ] ) == null ) ) || ( ( hierarchy . getHierarchy ( ) [ 0 ] . length ) == 0 ) ) ) {