module Regexp::Expression::Shared::ClassMethods

def construct(params = {})

Convenience method to init a valid Expression without a Regexp::Token
def construct(params = {})
  attrs = construct_defaults.merge(params)
  options = attrs.delete(:options)
  token_args = Regexp::TOKEN_KEYS.map { |k| attrs.delete(k) }
  token = Regexp::Token.new(*token_args)
  raise ArgumentError, "unsupported attribute(s): #{attrs}" if attrs.any?
  new(token, options)
end