class Regexp::Expression::Backreference::Base

def initialize_copy(orig)

def initialize_copy(orig)
  exp_id = [self.class, self.starts_at]
  # prevent infinite recursion for recursive subexp calls
  copied = @@copied ||= {}
  self.referenced_expression =
    if copied[exp_id]
      orig.referenced_expression
    else
      copied[exp_id] = true
      orig.referenced_expression.dup
    end
  copied.clear
  super
end

def match_length

def match_length
  if referenced_expression.nil?
    raise ArgumentError, 'Missing referenced_expression - not parsed?'
  end
  referenced_expression.unquantified_clone.match_length
end