public void startElement(int tagID, Attributes attrs, boolean empty) throws SAXException {
    dispatch(true);
    // FIXME: maybe a copy
    context.push(new Object[] {new Integer(tagID), attrs});

    switch (tagID) {
      case AidaWBXML.ITEM:
        handler.handle_item(attrs);
        break;
      case AidaWBXML.ENTRIES_1D:
        handler.start_entries1d(attrs);
        break;
      case AidaWBXML.ARGUMENT:
        handler.start_argument(attrs);
        break;
      case AidaWBXML.DATA_1D:
        handler.start_data1d(attrs);
        break;
      case AidaWBXML.BIN_1D:
        handler.handle_bin1d(attrs);
        break;
      case AidaWBXML.ENTRY_ITUPLE:
        handler.start_entryITuple(attrs);
        break;
      case AidaWBXML.COLUMN:
        handler.handle_column(attrs);
        break;
      case AidaWBXML.TUPLE:
        handler.start_tuple(attrs);
        break;
      case AidaWBXML.FUNCTION:
        handler.start_function(attrs);
        break;
      case AidaWBXML.COLUMNS:
        handler.start_columns(attrs);
        break;
      case AidaWBXML.DATA_POINT_SET:
        handler.start_dataPointSet(attrs);
        break;
      case AidaWBXML.DATA_POINT:
        handler.start_dataPoint(attrs);
        break;
      case AidaWBXML.IMPLEMENTATION:
        handler.handle_implementation(attrs);
        break;
      case AidaWBXML.ENTRY_1D:
        handler.handle_entry1d(attrs);
        break;
      case AidaWBXML.CLOUD_1D:
        handler.start_cloud1d(attrs);
        break;
      case AidaWBXML.ROW:
        handler.start_row(attrs);
        break;
      case AidaWBXML.ANNOTATION:
        handler.start_annotation(attrs);
        break;
      case AidaWBXML.ENTRY_3D:
        handler.handle_entry3d(attrs);
        break;
      case AidaWBXML.HISTOGRAM_3D:
        handler.start_histogram3d(attrs);
        break;
      case AidaWBXML.AIDA:
        handler.start_aida(attrs);
        break;
      case AidaWBXML.ENTRY:
        handler.handle_entry(attrs);
        break;
      case AidaWBXML.DATA_2D:
        handler.start_data2d(attrs);
        break;
      case AidaWBXML.BIN_3D:
        handler.handle_bin3d(attrs);
        break;
      case AidaWBXML.PARAMETER:
        handler.handle_parameter(attrs);
        break;
      case AidaWBXML.ARGUMENTS:
        handler.start_arguments(attrs);
        break;
      case AidaWBXML.PARAMETERS:
        handler.start_parameters(attrs);
        break;
      case AidaWBXML.ROWS:
        handler.start_rows(attrs);
        break;
      case AidaWBXML.HISTOGRAM_1D:
        handler.start_histogram1d(attrs);
        break;
      case AidaWBXML.AXIS:
        handler.start_axis(attrs);
        break;
      case AidaWBXML.CLOUD_3D:
        handler.start_cloud3d(attrs);
        break;
      case AidaWBXML.BIN_BORDER:
        handler.handle_binBorder(attrs);
        break;
      case AidaWBXML.RANGE:
        handler.handle_range(attrs);
        break;
      case AidaWBXML.MEASUREMENT:
        handler.handle_measurement(attrs);
        break;
      case AidaWBXML.DATA_3D:
        handler.start_data3d(attrs);
        break;
      case AidaWBXML.ENTRY_2D:
        handler.handle_entry2d(attrs);
        break;
      case AidaWBXML.PROFILE_1D:
        handler.start_profile1d(attrs);
        break;
      case AidaWBXML.ENTRIES_2D:
        handler.start_entries2d(attrs);
        break;
      case AidaWBXML.ENTRIES_3D:
        handler.start_entries3d(attrs);
        break;
      case AidaWBXML.BIN_2D:
        handler.handle_bin2d(attrs);
        break;
      case AidaWBXML.STATISTICS:
        handler.start_statistics(attrs);
        break;
      case AidaWBXML.PROFILE_2D:
        handler.start_profile2d(attrs);
        break;
      case AidaWBXML.CLOUD_2D:
        handler.start_cloud2d(attrs);
        break;
      case AidaWBXML.STATISTIC:
        handler.handle_statistic(attrs);
        break;
      case AidaWBXML.HISTOGRAM_2D:
        handler.start_histogram2d(attrs);
        break;
    }

    if (empty) {
      dispatch(false);
      context.pop();
    }
  }