// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;

namespace SampleTypeSpec
{
    /// <summary>
    /// Base plant with discriminator
    /// Please note this is the abstract base class. The derived classes available for instantiation are: <see cref="Tree"/>.
    /// </summary>
    public abstract partial class Plant
    {
        /// <summary> Keeps track of any properties unknown to the library. </summary>
        private protected readonly IDictionary<string, BinaryData> _additionalBinaryDataProperties;

        /// <summary> Initializes a new instance of <see cref="Plant"/>. </summary>
        /// <param name="species"> The species of plant. </param>
        /// <param name="id"> The unique identifier of the plant. </param>
        /// <param name="height"> The height of the plant in centimeters. </param>
        private protected Plant(string species, string id, int height)
        {
            Species = species;
            Id = id;
            Height = height;
        }

        /// <summary> Initializes a new instance of <see cref="Plant"/>. </summary>
        /// <param name="species"> The species of plant. </param>
        /// <param name="id"> The unique identifier of the plant. </param>
        /// <param name="height"> The height of the plant in centimeters. </param>
        /// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
        internal Plant(string species, string id, int height, IDictionary<string, BinaryData> additionalBinaryDataProperties)
        {
            Species = species;
            Id = id;
            Height = height;
            _additionalBinaryDataProperties = additionalBinaryDataProperties;
        }

        /// <summary> The species of plant. </summary>
        internal string Species { get; set; }

        /// <summary> The unique identifier of the plant. </summary>
        public string Id { get; set; }

        /// <summary> The height of the plant in centimeters. </summary>
        public int Height { get; set; }
    }
}
