# File lib/declarative_authorization/development_support/change_supporter.rb, line 364
        def apply (candidate)
          if candidate.engine.roles_with_hierarchy_for(@user).include?(@role)
            false
          else
            # beware of shallow copies!
            cloned_user = @user.clone
            user_index = candidate.users.index(@user)
            raise "Cannot find #{@user.inspect} in users array" unless user_index
            candidate.users[user_index] = cloned_user
            # possible on real user objects?
            cloned_user.role_symbols << @role
            raise "User#role_symbols immutable or user only shallowly cloned!" if cloned_user.role_symbols == @user.role_symbols
            true
          end
        end