if (type.equals(ASSOCIATION_EXPRESSION)) return new AssociationImpl(node);
if (type.equals(PART_EXPRESSION)) return new PartImpl(node);
if (type.equals(SPAN_EXPRESSION)) return new SpanImpl(node);
// Logical operations
if (type.equals(AND_EXPRESSION)) return new AndImpl(node);
if (type.equals(OR_EXPRESSION)) return new OrImpl(node);
if (type.equals(NOT_PREFIX)) return new NotImpl(node);
// Patterns
if (type.equals(ALTERNATIVE_EXPRESSION)) return new AlternativeImpl(node);