code: @NonNull
      public final Map<ViewType, View> attach(@NonNull final Window window, @NonNull final View view,
                                              @NonNull final Map<ViewType, View> areas,
                                              final ParamType param) {
          Condition.INSTANCE.ensureNotNull(window, "The window may not be null");
          Condition.INSTANCE.ensureNotNull(view, "The view may not be null");
          this.window = window;
          this.view = view;
          this.dialogRootView = view.findViewById(R.id.dialog_root_view);
          return onAttach(window, view, areas, param);
      }
docs: Attaches the decorator to the view hierarchy. This enables the decorator to modify the view
  hierarchy until it is detached.
  
  @param window
  The window of the dialog, whose view hierarchy should be modified by the decorator,
  as an instance of the class {@link Window}. The window may not be null
  @param view
  The root view of the view hierarchy, which should be modified by the decorator, as an
  instance of the class {@link View}. The view may not be null
  @param areas
  A map, which contains the areas, which have already been added by previously attached
  decorators, as well as the corresponding views, as an instance of the type {@link
  Map} or an empty map, if no areas have been added
  @param param
  The parameter, which should be passed to the decorator, as an instance of the generic
  type ParamType or null, if no parameter should be passed
  @return A map, which contains the views, which have been inflated by the decorator, mapped to
  their view types, as an instance of the type {@link Map} or null, if the decorator has not
  inflated any views