RaCoCo result: Red::AST::Infix

# Red::AST::Infix 90.9%

    use Red::AST::Operator;
    use Red::AST::Unary;

    #| Base role to infix operators
    unit role Red::AST::Infix does Red::AST::Operator;

    has Red::AST $.left  is required;
    has Red::AST $.right is required;
    has Bool     $.bind-left  = False;
    has Bool     $.bind-right = False;

    #method gist { "$!left.gist() $.op $!right.gist()" }

    proto method new($left, $right, |) {*}

    multi method new($left, $right, Bool() :$bind-left = False, Bool() :$bind-right = False, Str() :$cast!) {
        ::?CLASS.new:
            $left  ~~ ::("Red::Column") ?? $left.cast($cast)  !! $left,
            $right ~~ ::("Red::Column") ?? $right.cast($cast) !! $right,
            :$bind-left,
            :$bind-right
    }

    multi method new($left, $right, Bool :$bind-left = False, Bool :$bind-right = False) {
        ::?CLASS.Mu::new: :$left, :$right, :$bind-left, :$bind-right
    }

    method args { $!left, $!right }
    method not { Red::AST::Not.new: self }
    method find-column-name { ($_ with $.left.find-column-name), ($_ with $.right.find-column-name) }