/// <inheritdoc />
            public byte AddVertex(TVertex vertex)
            {
                ITriangleGroupBuilderContracts.AddVertex(this, vertex);

                this.Vertices.Add(vertex);
                byte vertexOffset = this.Current.Vertices;

                this.Current = new TriangleGroup(this.Current.Triangles, (byte)(vertexOffset + 1));
                return(vertexOffset);
            }
            /// <inheritdoc />
            public ITriangleGroupBuilder <TVertex> AddTriangleOffsets(byte offsetA, byte offsetB, byte offsetC)
            {
                ITriangleGroupBuilderContracts.AddTriangleOffsets(this, offsetA, offsetB, offsetC);

                this.Offsets.Add(offsetA);
                this.Offsets.Add(offsetB);
                this.Offsets.Add(offsetC);
                this.Current = new TriangleGroup((byte)(this.Current.Triangles + 1), this.Current.Vertices);
                return(this);
            }
            /// <inheritdoc />
            public void Dispose()
            {
                ITriangleGroupBuilderContracts.Dispose(this);

                this.IsDisposed = true;
            }