class PartialBeanClassRefreshCommand extends MergeableCommand  {

    private static AgentLogger LOGGER = AgentLogger.getLogger(PartialBeanClassRefreshCommand.class);

    ClassLoader appClassLoader;
    Object partialBean;
    String className;
    private Scheduler scheduler;
    String oldSignForProxyCheck;
    List<Command> chainedCommands = new ArrayList<>();

    public PartialBeanClassRefreshCommand(ClassLoader classLoader, Object partialBean, String className, String oldSignForProxyCheck, Scheduler scheduler) {
        this.appClassLoader = classLoader;
        this.partialBean = partialBean;
        this.className = className;
        this.oldSignForProxyCheck = oldSignForProxyCheck;
        this.scheduler = scheduler;
    }

    public void addChainedCommand(Command cmd) {
        chainedCommands.add(cmd);
    }

    @Override
    public void executeCommand() {
        boolean reloaded = false;

        try {
            LOGGER.debug("Executing PartialBeanClassRefreshAgent.refreshPartialBeanClass('{}')", className);
            Class<?> agentClazz = Class.forName(PartialBeanClassRefreshAgent.class.getName(), true, appClassLoader);
            Method m  = agentClazz.getDeclaredMethod("refreshPartialBeanClass", new Class[] {ClassLoader.class, Object.class, String.class});
            m.invoke(null, appClassLoader, partialBean, oldSignForProxyCheck);
            reloaded = true;
        } catch (NoSuchMethodException e) {
            throw new IllegalStateException("Plugin error, method not found", e);
        } catch (InvocationTargetException e) {
            LOGGER.error("Error refreshing class {} in appClassLoader {}", e, className, appClassLoader);
        } catch (IllegalAccessException e) {
            throw new IllegalStateException("Plugin error, illegal access", e);
        } catch (ClassNotFoundException e) {
            throw new IllegalStateException("Plugin error, CDI class not found in classloader", e);
        }
        if (reloaded) {
            for (Command cmd: chainedCommands) {
                scheduler.scheduleCommand(cmd, DeltaSpikePlugin.WAIT_ON_REDEFINE);
            }
        }
    }

    @Override
    public boolean equals(Object o) {<FILL_FUNCTION_BODY>}

    @Override
    public int hashCode() {
        int result = appClassLoader.hashCode();
        result = 31 * result + partialBean.hashCode();
        return result;
    }

    @Override
    public String toString() {
        return "PartialBeanClassRefreshCommand{" +
                "appClassLoader=" + appClassLoader +
                ", partialBean='" + partialBean + '\'' +
                '}';
    }

}

        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        PartialBeanClassRefreshCommand that = (PartialBeanClassRefreshCommand) o;

        if (!appClassLoader.equals(that.appClassLoader)) return false;
        if (!partialBean.equals(that.partialBean)) return false;
        if (!className.equals(that.className)) return false;

        return true;
    
<methods>public non-sealed void <init>() ,public List<org.hotswap.agent.command.Command> getMergedCommands() ,public org.hotswap.agent.command.Command merge(org.hotswap.agent.command.Command) ,public List<org.hotswap.agent.command.Command> popMergedCommands() <variables>List<org.hotswap.agent.command.Command> mergedCommands