class InstructionFactory {
    private static final Map<String, InstructionFactory> INSTRUCTION_FACTORY_MAP = new HashMap<>();

    public static InstructionFactory getInstructionFactory(String factory) {<FILL_FUNCTION_BODY>}

    public abstract boolean createInstruction(ExpressRunner expressRunner, InstructionSet result,
        Stack<ForRelBreakContinue> forStack, ExpressNode node, boolean isRoot) throws Exception;
}

        try {
            InstructionFactory result = INSTRUCTION_FACTORY_MAP.get(factory);
            if (result == null) {
                result = (InstructionFactory)Class.forName(factory).newInstance();
                INSTRUCTION_FACTORY_MAP.put(factory, result);
            }
            return result;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    
<no_super_class>