code: @SuppressWarnings("deprecation")
      public boolean removeAction(@Nullable Action a) {
          if (a == null) {
              return false;
          }
          // CopyOnWriteArrayList does not support Iterator.remove, so need to do it this way:
          return getActions().removeAll(Collections.singleton(a));
      }
docs: Remove an action.
  Note: calls to {@link #getAllActions()} that happen before calls to this method may not see the update.
  Note: this method does not affect transient actions contributed by a {@link TransientActionFactory}
  Note: this method cannot provide concurrency control due to the backing storage being a
  {@link CopyOnWriteArrayList} so concurrent calls to any of the mutation methods may produce surprising results
  though technically consistent from the concurrency contract of {@link CopyOnWriteArrayList} (we would need
  some form of transactions or a different backing type).
  
  @param a an action to remove (if {@code null} then this will be a no-op)
  @return {@code true} if this actions changed as a result of the call
  @since 2.29