<commit_before>﻿/// <summary>
///     Private class-constructor definitions are here because they are most important. Do not change these (yet).
/// </summary>
public abstract partial class Direction : System.IComparable<Direction>, System.IEquatable<Direction>
{
    protected byte Id { get; }
    public abstract string Name { get; }
    public abstract Direction Inverse { get; }

    private Direction(byte id)
    {
        Id = id;
    }

    public abstract partial class Cardinal : Direction
    {
        public static readonly Cardinal North = new NorthCardinal(), South = new SouthCardinal(), East = new EastCardinal(), West = new WestCardinal();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id">Must be unique.</param>
        private Cardinal(byte id) : base(id)
        {

        }

        public sealed class NorthCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => South;

            public NorthCardinal() : base(0)
            {
                this.Name = nameof(North);
            }
        }

        public sealed class SouthCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => North;

            public SouthCardinal() : base(1)
            {
                this.Name = nameof(South);
            }
        }

        public sealed class EastCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => West;

            public EastCardinal() : base(2)
            {
                this.Name = nameof(East);
            }
        }

        public sealed class WestCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => East;

            public WestCardinal() : base(3)
            {
                this.Name = nameof(West);
            }
        }
    }

    public abstract partial class Intercardinal : Direction
    {
        internal static readonly Intercardinal NorthNortheast, NorthNorthwest, SouthSoutheast, SouthSouthwest, EastNortheast, EastSoutheast, WestNorthwest, WestSouthwest;

        static Intercardinal()
        {
            NorthNortheast = default(Intercardinal);
            NorthNorthwest = default(Intercardinal);
            SouthSoutheast = default(Intercardinal);
            SouthSouthwest = default(Intercardinal);
            EastNortheast = default(Intercardinal);
            EastSoutheast = default(Intercardinal);
            WestNorthwest = default(Intercardinal);
            WestSouthwest = default(Intercardinal);
        }

        private Intercardinal(byte id) : base(id)
        {
<commit_msg>Copy-paste can't be trusted: After I implemented intercardinals, the first failing test I wrote finally passes with no nulls. The uniqueness test is failing, though.<commit_after>﻿/// <summary>
///     Private class-constructor definitions are here because they are most important. Do not change these (yet).
/// </summary>
public abstract partial class Direction : System.IComparable<Direction>, System.IEquatable<Direction>
{
    protected byte Id { get; }
    public abstract string Name { get; }
    public abstract Direction Inverse { get; }

    private Direction(byte id)
    {
        Id = id;
    }

    public abstract partial class Cardinal : Direction
    {
        public static readonly Cardinal North = new NorthCardinal(), South = new SouthCardinal(), East = new EastCardinal(), West = new WestCardinal();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id">Must be unique.</param>
        private Cardinal(byte id) : base(id)
        {

        }

        public sealed class NorthCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => South;

            public NorthCardinal() : base(0)
            {
                this.Name = nameof(North);
            }
        }

        public sealed class SouthCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => North;

            public SouthCardinal() : base(1)
            {
                this.Name = nameof(South);
            }
        }

        public sealed class EastCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => West;

            public EastCardinal() : base(2)
            {
                this.Name = nameof(East);
            }
        }

        public sealed class WestCardinal : Cardinal
        {
            public override string Name { get; }

            public override Direction Inverse => East;

            public WestCardinal() : base(3)
            {
                this.Name = nameof(West);
            }
        }
    }

    public abstract partial class Intercardinal : Direction
    {
        internal static readonly Intercardinal NorthNortheast, NorthNorthwest, SouthSoutheast, SouthSouthwest, EastNortheast, EastSoutheast, WestNorthwest, WestSouthwest;

        static Intercardinal()
        {
            NorthNortheast = new NorthNortheastIntercardinal();
            NorthNorthwest = new NorthNorthwestIntercardinal();
            SouthSoutheast = new SouthSoutheastIntercardinal();
            SouthSouthwest = new SouthSouthwestIntercardinal();
            EastNortheast = new EastNortheastIntercardinal();
            EastSoutheast = new EastSoutheastIntercardinal();
            WestNorthwest = new WestNorthwestIntercardinal();
            WestSouthwest = new WestSouthwestIntercardinal();
        }

        private Intercardinal(byte id) : base(id)
        {

        }

        public sealed class NorthNortheastIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => SouthSouthwest;

            public NorthNortheastIntercardinal() : base(4)
            {
                this.Name = nameof(NorthNortheast);
            }
        }

        public sealed class NorthNorthwestIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => SouthSoutheast;

            public NorthNorthwestIntercardinal() : base(5)
            {
                this.Name = nameof(NorthNorthwest);
            }
        }

        public sealed class SouthSoutheastIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => NorthNorthwest;

            public SouthSoutheastIntercardinal() : base(4)
            {
                this.Name = nameof(SouthSoutheast);
            }
        }

        public sealed class SouthSouthwestIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => NorthNortheast;

            public SouthSouthwestIntercardinal() : base(5)
            {
                this.Name = nameof(SouthSouthwest);
            }
        }

        public sealed class EastNortheastIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => WestSouthwest;

            public EastNortheastIntercardinal() : base(6)
            {
                this.Name = nameof(EastNortheast);
            }
        }

        public sealed class EastSoutheastIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => WestNorthwest;

            public EastSoutheastIntercardinal() : base(7)
            {
                this.Name = nameof(EastSoutheast);
            }
        }

        public sealed class WestSouthwestIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => EastNortheast;

            public WestSouthwestIntercardinal() : base(8)
            {
                this.Name = nameof(WestSouthwest);
            }
        }

        public sealed class WestNorthwestIntercardinal : Intercardinal
        {
            public override string Name { get; }
            public override Direction Inverse => WestNorthwest;

            public WestNorthwestIntercardinal() : base(9)
            {
                this.Name = nameof(WestNorthwest);
            }
{'fraction_non_alphanumeric': 0.07494771089937254, 'fraction_numerical': 0.0018591680223100163, 'mean_word_length': 1.7854368932038835, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 35, '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': '1262033', 'n_tokens_mistral': 2158, 'n_tokens_neox': 2021, 'n_words': 584}