if (state == State.started) {
throw new IllegalStateException("This operation has already been started.");
}
assertNotCompleted();
state = State.started;
OperationIdentifier id = hierarchy.start();
listener.started(new ProgressStartEvent(id.getId(), id.getParentId(), timeProvider.getCurrentTime(), category, description, shortDescription, loggingHeader, toStatus(status)));
}