/** Introspects the Inheritance */
  void introspectInheritance(
      AmberPersistenceUnit persistenceUnit,
      EntityType entityType,
      Class type,
      Inheritance inheritanceAnn,
      InheritanceConfig inheritanceConfig)
      throws ConfigException, SQLException {
    InheritanceType strategy;

    if (inheritanceAnn != null) strategy = inheritanceAnn.strategy();
    else strategy = inheritanceConfig.getStrategy();

    switch (strategy) {
      case JOINED:
        entityType.setJoinedSubClass(true);
        break;
    }

    getInternalDiscriminatorColumnConfig(type, _annotationCfg);
    DiscriminatorColumn discriminatorAnn = (DiscriminatorColumn) _annotationCfg.getAnnotation();
    DiscriminatorColumnConfig discriminatorConfig = _annotationCfg.getDiscriminatorColumnConfig();

    String columnName = null;

    if (discriminatorAnn != null) columnName = discriminatorAnn.name();

    if (columnName == null || columnName.equals("")) columnName = "DTYPE";

    AmberType columnType = null;
    DiscriminatorType discType = DiscriminatorType.STRING;

    if (discriminatorAnn != null) discType = discriminatorAnn.discriminatorType();

    switch (discType) {
      case STRING:
        columnType = StringType.create();
        break;
      case CHAR:
        columnType = PrimitiveCharType.create();
        break;
      case INTEGER:
        columnType = PrimitiveIntType.create();
        break;
      default:
        throw new IllegalStateException();
    }

    AmberTable table = entityType.getTable();

    // jpa/0gg0
    if (table == null) return;

    com.caucho.amber.table.AmberColumn column = table.createColumn(columnName, columnType);

    if (discriminatorAnn != null) {
      //      column.setNotNull(! discriminatorAnn.nullable());

      column.setLength(discriminatorAnn.length());

      if (!"".equals(discriminatorAnn.columnDefinition()))
        column.setSQLType(discriminatorAnn.columnDefinition());
    } else {
      column.setNotNull(true);
      column.setLength(10);
    }

    entityType.setDiscriminator(column);
  }