} else
if (unit.getDefinition() instanceof Abstract.DataDefinition) {
DataDefinition definition = typechecked != null ? (DataDefinition) typechecked : new DataDefinition((Abstract.DataDefinition) unit.getDefinition());
typeCheckDataHeader(definition, enclosingClass, visitor, localInstancePool);
if (definition.status() == Definition.TypeCheckingStatus.BODY_NEEDS_TYPE_CHECKING) {
<BUG>typeCheckDataBody(definition, visitor, true);
}</BUG>
return definition;
} else {
throw new IllegalStateException();

} else
if (definition instanceof DataDefinition) {
if (!typeCheckDataBody((DataDefinition) definition, exprVisitor, false, dataDefinitions)) {
definition.setStatus(Definition.TypeCheckingStatus.HEADER_HAS_ERRORS);
}
} else {
throw new IllegalStateException();
