// Basic types
if (type.equals(SYMBOL_EXPRESSION)) return new SymbolImpl(node);
if (type.equals(STRINGIFIED_SYMBOL_EXPRESSION)) return new StringifiedSymbolImpl(node);
if (SLOTS.contains(type)) return new SlotImpl(node);
if (type.equals(NUMBER_EXPRESSION)) return new NumberImpl(node);
if (type.equals(STRING_LITERAL_EXPRESSION)) return new StringImpl(node);
// Arithmetic operations
if (type.equals(DIVIDE_EXPRESSION)) return new DivideImpl(node);
if (type.equals(DOT_EXPRESSION)) return new DotImpl(node);
if (type.equals(FACTORIAL_POSTFIX)) return new FactorialImpl(node);