code: private void pushState(final S state) {
          this.state = state;
  
          header.setHTML(TEMPLATE.header(currentStep().getTitle()));
          clearError();
          body.showWidget(state); // will call onShow(C) for the current step
          footer.back.setEnabled(state != initialState());
          footer.next
                  .setHTML(
                          lastStates().contains(state) ? CONSTANTS.common_label_finish() : CONSTANTS.common_label_next());
      }
docs: Sets the current state to the specified state and updates the UI to reflect the current state.
  
  @param state the next state