using System;

namespace Gma.QrCodeNet.Encoding.Positioning.Stencils
{
	internal abstract class PatternStencilBase : BitMatrix
	{
		protected const bool O = false;
		protected const bool X = true;

		internal PatternStencilBase(int version)
		{
			Version = version;
		}

		public int Version { get; private set; }

		public abstract bool[,] Stencil { get; }

		public override bool this[int i, int j]
		{
			get => Stencil[i, j];
			set => throw new NotSupportedException();
		}

		public override int Width => Stencil.GetLength(0);

		public override int Height => Stencil.GetLength(1);

		public override bool[,] InternalArray => throw new NotImplementedException();

		public abstract void ApplyTo(TriStateMatrix matrix);
	}
}

using System;

namespace Gma.QrCodeNet.Encoding.Positioning.Stencils
{
	internal abstract class PatternStencilBase : BitMatrix
	{
		protected const bool O = false;
		protected const bool X = true;

		internal PatternStencilBase(int version)
		{
			Version = version;
		}

		public int Version { get; private set; }

		public abstract bool[,] Stencil { get; }

		public override int Width => Stencil.GetLength(0);

		public override int Height => Stencil.GetLength(1);

		public override bool[,] InternalArray => throw new NotImplementedException();

		public override bool this[int i, int j]
		{
			get => Stencil[i, j];
			set => throw new NotSupportedException();
		}

		public abstract void ApplyTo(TriStateMatrix matrix);
	}
}

Order elements in some classes
Order elements in some classes
