<commit_before>﻿using System;

namespace ReactiveMvvm
{
    /// <summary>
    /// <see cref="ICoalescer{T}"/> 인터페이스 구현체의
    /// 추상 기반 클래스를 제공합니다.
    /// </summary>
    /// <typeparam name="T">상태를 유착할 개체의 형식입니다.</typeparam>
    public abstract class Coalescer<T> : ICoalescer<T>
        where T : class
    {
        private static Coalescer<T> _default = new DefaultCoalescer<T>();

        /// <summary>
        /// <see cref="ICoalescer{T}"/> 인터페이스의 기본 구현제를 가져옵니다.
        /// </summary>
        [System.Diagnostics.CodeAnalysis.SuppressMessage(
            "Microsoft.Design",
            "CA1000:DoNotDeclareStaticMembersOnGenericTypes",
            Justification =
                "Coalescer<T> class should provide default implementation"
                + " of ICoalescer<T> without instantiation.")]
        public static Coalescer<T> Default => _default;

        /// <summary>
        /// 두 개체 상태의 유착 결과를 반환합니다.
        /// </summary>
        /// <param name="left">
        /// 첫번째 피연산자입니다. 구현체는 이 연산자가 가진 상태가
        /// 우선 순위를 갖도록 기능을 제공합니다.
        /// </param>
        /// <param name="right">
        /// 두번째 피연산자입니다. 구현체는 이 연산자가 <paramref name="left"/>가<commit_msg>Coalescer<T> 클래스의 CA 정당화 메시지 줄바꿈을 제거합니다.<commit_after>﻿using System;

namespace ReactiveMvvm
{
    /// <summary>
    /// <see cref="ICoalescer{T}"/> 인터페이스 구현체의
    /// 추상 기반 클래스를 제공합니다.
    /// </summary>
    /// <typeparam name="T">상태를 유착할 개체의 형식입니다.</typeparam>
    public abstract class Coalescer<T> : ICoalescer<T>
        where T : class
    {
        private static Coalescer<T> _default = new DefaultCoalescer<T>();

        /// <summary>
        /// <see cref="ICoalescer{T}"/> 인터페이스의 기본 구현제를 가져옵니다.
        /// </summary>
        [System.Diagnostics.CodeAnalysis.SuppressMessage(
            "Microsoft.Design",
            "CA1000:DoNotDeclareStaticMembersOnGenericTypes",
            Justification = "Coalescer<T> class should provide default implementation of ICoalescer<T> without instantiation.")]
        public static Coalescer<T> Default => _default;

        /// <summary>
        /// 두 개체 상태의 유착 결과를 반환합니다.
        /// </summary>
        /// <param name="left">
        /// 첫번째 피연산자입니다. 구현체는 이 연산자가 가진 상태가
        /// 우선 순위를 갖도록 기능을 제공합니다.
        /// </param>
        /// <param name="right">
        /// 두번째 피연산자입니다. 구현체는 이 연산자가 <paramref name="left"/>가
{'fraction_non_alphanumeric': 0.14249363867684478, 'fraction_numerical': 0.0033927056827820186, 'mean_word_length': 1.9340796019900497, 'pattern_counts': {'":': 0, '<': 46, '<?xml version=': 0, '>': 48, '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': '5000740', 'n_tokens_mistral': 962, 'n_tokens_neox': 1165, 'n_words': 189}