<commit_before>my class Match is Capture is Cool {
    has $.orig;
    has int $.from;
    has int $.to;
    has $.CURSOR;
    has $.made;

    # new/!SET-SELF here only for performance reasons
    method !SET-SELF($!orig,$from,$to,$!CURSOR,$!made) {
        $!from   = $from // 0;  # cannot assign to int in sig
        $!to     = $to   // 0;  # cannot assign to int in sig
        self;
    }
    method new(:$orig,:$from,:$to,:$CURSOR,:$made) {
        nqp::create(self)!SET-SELF($orig,$from,$to,$CURSOR,$made);
    }

    method ast(Match:D:) { $!made }

    multi method Str(Match:D:) {
        nqp::if(
          nqp::isgt_i($!to,$!from),
          nqp::substr($!CURSOR.target,$!from,nqp::sub_i($!to,$!from)),
          ''
        )
    }

    multi method Numeric(Match:D:) {
        self.Str.Numeric<commit_msg>Fix Match pretending to be a value type when it is not<commit_after>my class Match is Capture is Cool {
    has $.orig;
    has int $.from;
    has int $.to;
    has $.CURSOR;
    has $.made;

    # new/!SET-SELF here only for performance reasons
    method !SET-SELF($!orig,$from,$to,$!CURSOR,$!made) {
        $!from   = $from // 0;  # cannot assign to int in sig
        $!to     = $to   // 0;  # cannot assign to int in sig
        self;
    }
    method new(:$orig,:$from,:$to,:$CURSOR,:$made) {
        nqp::create(self)!SET-SELF($orig,$from,$to,$CURSOR,$made);
    }

    multi method WHICH (Match:D:) {
        self.Mu::WHICH # skip Capture's as Match is not a value type
    }

    method ast(Match:D:) { $!made }

    multi method Str(Match:D:) {
        nqp::if(
          nqp::isgt_i($!to,$!from),
          nqp::substr($!CURSOR.target,$!from,nqp::sub_i($!to,$!from)),
          ''
        )
    }

    multi method Numeric(Match:D:) {
        self.Str.Numeric
{'fraction_non_alphanumeric': 0.17587939698492464, 'fraction_numerical': 0.002233389168062535, 'mean_word_length': 2.252268602540835, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '185643', 'n_tokens_mistral': 677, 'n_tokens_neox': 642, 'n_words': 152}