/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the neptune-2014-10-31.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Neptune.Model
{
    /// 
    /// Contains the details of an Amazon Neptune DB instance.
    /// 
    ///  
    /// 
    /// This data type is used as a response element in the DescribeDBInstances action.
    /// 
    /// 
    public partial class DBInstance
    {
        private int? _allocatedStorage;
        private bool? _autoMinorVersionUpgrade;
        private string _availabilityZone;
        private int? _backupRetentionPeriod;
        private string _caCertificateIdentifier;
        private string _characterSetName;
        private bool? _copyTagsToSnapshot;
        private string _dbClusterIdentifier;
        private string _dbInstanceArn;
        private string _dbInstanceClass;
        private string _dbInstanceIdentifier;
        private int? _dbInstancePort;
        private string _dbInstanceStatus;
        private string _dbiResourceId;
        private string _dbName;
        private List _dbParameterGroups = new List();
        private List _dbSecurityGroups = new List();
        private DBSubnetGroup _dbSubnetGroup;
        private bool? _deletionProtection;
        private List _domainMemberships = new List();
        private List _enabledCloudwatchLogsExports = new List();
        private Endpoint _endpoint;
        private string _engine;
        private string _engineVersion;
        private string _enhancedMonitoringResourceArn;
        private bool? _iamDatabaseAuthenticationEnabled;
        private DateTime? _instanceCreateTime;
        private int? _iops;
        private string _kmsKeyId;
        private DateTime? _latestRestorableTime;
        private string _licenseModel;
        private string _masterUsername;
        private int? _monitoringInterval;
        private string _monitoringRoleArn;
        private bool? _multiAZ;
        private List _optionGroupMemberships = new List();
        private PendingModifiedValues _pendingModifiedValues;
        private bool? _performanceInsightsEnabled;
        private string _performanceInsightsKMSKeyId;
        private string _preferredBackupWindow;
        private string _preferredMaintenanceWindow;
        private int? _promotionTier;
        private bool? _publiclyAccessible;
        private List _readReplicaDBClusterIdentifiers = new List();
        private List _readReplicaDBInstanceIdentifiers = new List();
        private string _readReplicaSourceDBInstanceIdentifier;
        private string _secondaryAvailabilityZone;
        private List _statusInfos = new List();
        private bool? _storageEncrypted;
        private string _storageType;
        private string _tdeCredentialArn;
        private string _timezone;
        private List _vpcSecurityGroups = new List();
        /// 
        /// Gets and sets the property AllocatedStorage. 
        /// 
        /// Not supported by Neptune.
        /// 
        /// 
        public int AllocatedStorage
        {
            get { return this._allocatedStorage.GetValueOrDefault(); }
            set { this._allocatedStorage = value; }
        }
        // Check to see if AllocatedStorage property is set
        internal bool IsSetAllocatedStorage()
        {
            return this._allocatedStorage.HasValue; 
        }
        /// 
        /// Gets and sets the property AutoMinorVersionUpgrade. 
        /// 
        /// Indicates that minor version patches are applied automatically.
        /// 
        /// 
        public bool AutoMinorVersionUpgrade
        {
            get { return this._autoMinorVersionUpgrade.GetValueOrDefault(); }
            set { this._autoMinorVersionUpgrade = value; }
        }
        // Check to see if AutoMinorVersionUpgrade property is set
        internal bool IsSetAutoMinorVersionUpgrade()
        {
            return this._autoMinorVersionUpgrade.HasValue; 
        }
        /// 
        /// Gets and sets the property AvailabilityZone. 
        /// 
        /// Specifies the name of the Availability Zone the DB instance is located in.
        /// 
        /// 
        public string AvailabilityZone
        {
            get { return this._availabilityZone; }
            set { this._availabilityZone = value; }
        }
        // Check to see if AvailabilityZone property is set
        internal bool IsSetAvailabilityZone()
        {
            return this._availabilityZone != null;
        }
        /// 
        /// Gets and sets the property BackupRetentionPeriod. 
        /// 
        /// Specifies the number of days for which automatic DB snapshots are retained.
        /// 
        /// 
        public int BackupRetentionPeriod
        {
            get { return this._backupRetentionPeriod.GetValueOrDefault(); }
            set { this._backupRetentionPeriod = value; }
        }
        // Check to see if BackupRetentionPeriod property is set
        internal bool IsSetBackupRetentionPeriod()
        {
            return this._backupRetentionPeriod.HasValue; 
        }
        /// 
        /// Gets and sets the property CACertificateIdentifier. 
        /// 
        /// The identifier of the CA certificate for this DB instance.
        /// 
        /// 
        public string CACertificateIdentifier
        {
            get { return this._caCertificateIdentifier; }
            set { this._caCertificateIdentifier = value; }
        }
        // Check to see if CACertificateIdentifier property is set
        internal bool IsSetCACertificateIdentifier()
        {
            return this._caCertificateIdentifier != null;
        }
        /// 
        /// Gets and sets the property CharacterSetName. 
        /// 
        ///  (Not supported by Neptune) 
        /// 
        /// 
        public string CharacterSetName
        {
            get { return this._characterSetName; }
            set { this._characterSetName = value; }
        }
        // Check to see if CharacterSetName property is set
        internal bool IsSetCharacterSetName()
        {
            return this._characterSetName != null;
        }
        /// 
        /// Gets and sets the property CopyTagsToSnapshot. 
        /// 
        /// Specifies whether tags are copied from the DB instance to snapshots of the DB instance.
        /// 
        /// 
        public bool CopyTagsToSnapshot
        {
            get { return this._copyTagsToSnapshot.GetValueOrDefault(); }
            set { this._copyTagsToSnapshot = value; }
        }
        // Check to see if CopyTagsToSnapshot property is set
        internal bool IsSetCopyTagsToSnapshot()
        {
            return this._copyTagsToSnapshot.HasValue; 
        }
        /// 
        /// Gets and sets the property DBClusterIdentifier. 
        /// 
        /// If the DB instance is a member of a DB cluster, contains the name of the DB cluster
        /// that the DB instance is a member of.
        /// 
        /// 
        public string DBClusterIdentifier
        {
            get { return this._dbClusterIdentifier; }
            set { this._dbClusterIdentifier = value; }
        }
        // Check to see if DBClusterIdentifier property is set
        internal bool IsSetDBClusterIdentifier()
        {
            return this._dbClusterIdentifier != null;
        }
        /// 
        /// Gets and sets the property DBInstanceArn. 
        /// 
        /// The Amazon Resource Name (ARN) for the DB instance.
        /// 
        /// 
        public string DBInstanceArn
        {
            get { return this._dbInstanceArn; }
            set { this._dbInstanceArn = value; }
        }
        // Check to see if DBInstanceArn property is set
        internal bool IsSetDBInstanceArn()
        {
            return this._dbInstanceArn != null;
        }
        /// 
        /// Gets and sets the property DBInstanceClass. 
        /// 
        /// Contains the name of the compute and memory capacity class of the DB instance.
        /// 
        /// 
        public string DBInstanceClass
        {
            get { return this._dbInstanceClass; }
            set { this._dbInstanceClass = value; }
        }
        // Check to see if DBInstanceClass property is set
        internal bool IsSetDBInstanceClass()
        {
            return this._dbInstanceClass != null;
        }
        /// 
        /// Gets and sets the property DBInstanceIdentifier. 
        /// 
        /// Contains a user-supplied database identifier. This identifier is the unique key that
        /// identifies a DB instance.
        /// 
        /// 
        public string DBInstanceIdentifier
        {
            get { return this._dbInstanceIdentifier; }
            set { this._dbInstanceIdentifier = value; }
        }
        // Check to see if DBInstanceIdentifier property is set
        internal bool IsSetDBInstanceIdentifier()
        {
            return this._dbInstanceIdentifier != null;
        }
        /// 
        /// Gets and sets the property DbInstancePort. 
        /// 
        /// Specifies the port that the DB instance listens on. If the DB instance is part of
        /// a DB cluster, this can be a different port than the DB cluster port.
        /// 
        /// 
        public int DbInstancePort
        {
            get { return this._dbInstancePort.GetValueOrDefault(); }
            set { this._dbInstancePort = value; }
        }
        // Check to see if DbInstancePort property is set
        internal bool IsSetDbInstancePort()
        {
            return this._dbInstancePort.HasValue; 
        }
        /// 
        /// Gets and sets the property DBInstanceStatus. 
        /// 
        /// Specifies the current state of this database.
        /// 
        /// 
        public string DBInstanceStatus
        {
            get { return this._dbInstanceStatus; }
            set { this._dbInstanceStatus = value; }
        }
        // Check to see if DBInstanceStatus property is set
        internal bool IsSetDBInstanceStatus()
        {
            return this._dbInstanceStatus != null;
        }
        /// 
        /// Gets and sets the property DbiResourceId. 
        /// 
        /// The Amazon Region-unique, immutable identifier for the DB instance. This identifier
        /// is found in Amazon CloudTrail log entries whenever the Amazon KMS key for the DB instance
        /// is accessed.
        /// 
        /// 
        public string DbiResourceId
        {
            get { return this._dbiResourceId; }
            set { this._dbiResourceId = value; }
        }
        // Check to see if DbiResourceId property is set
        internal bool IsSetDbiResourceId()
        {
            return this._dbiResourceId != null;
        }
        /// 
        /// Gets and sets the property DBName. 
        /// 
        /// The database name.
        /// 
        /// 
        public string DBName
        {
            get { return this._dbName; }
            set { this._dbName = value; }
        }
        // Check to see if DBName property is set
        internal bool IsSetDBName()
        {
            return this._dbName != null;
        }
        /// 
        /// Gets and sets the property DBParameterGroups. 
        /// 
        /// Provides the list of DB parameter groups applied to this DB instance.
        /// 
        /// 
        public List DBParameterGroups
        {
            get { return this._dbParameterGroups; }
            set { this._dbParameterGroups = value; }
        }
        // Check to see if DBParameterGroups property is set
        internal bool IsSetDBParameterGroups()
        {
            return this._dbParameterGroups != null && this._dbParameterGroups.Count > 0; 
        }
        /// 
        /// Gets and sets the property DBSecurityGroups. 
        /// 
        ///  Provides List of DB security group elements containing only DBSecurityGroup.Name
        /// and DBSecurityGroup.Status subelements.
        /// 
        /// 
        public List DBSecurityGroups
        {
            get { return this._dbSecurityGroups; }
            set { this._dbSecurityGroups = value; }
        }
        // Check to see if DBSecurityGroups property is set
        internal bool IsSetDBSecurityGroups()
        {
            return this._dbSecurityGroups != null && this._dbSecurityGroups.Count > 0; 
        }
        /// 
        /// Gets and sets the property DBSubnetGroup. 
        /// 
        /// Specifies information on the subnet group associated with the DB instance, including
        /// the name, description, and subnets in the subnet group.
        /// 
        /// 
        public DBSubnetGroup DBSubnetGroup
        {
            get { return this._dbSubnetGroup; }
            set { this._dbSubnetGroup = value; }
        }
        // Check to see if DBSubnetGroup property is set
        internal bool IsSetDBSubnetGroup()
        {
            return this._dbSubnetGroup != null;
        }
        /// 
        /// Gets and sets the property DeletionProtection. 
        /// 
        /// Indicates whether or not the DB instance has deletion protection enabled. The instance
        /// can't be deleted when deletion protection is enabled. See Deleting
        /// a DB Instance.
        /// 
        /// 
        public bool DeletionProtection
        {
            get { return this._deletionProtection.GetValueOrDefault(); }
            set { this._deletionProtection = value; }
        }
        // Check to see if DeletionProtection property is set
        internal bool IsSetDeletionProtection()
        {
            return this._deletionProtection.HasValue; 
        }
        /// 
        /// Gets and sets the property DomainMemberships. 
        /// 
        /// Not supported
        /// 
        /// 
        public List DomainMemberships
        {
            get { return this._domainMemberships; }
            set { this._domainMemberships = value; }
        }
        // Check to see if DomainMemberships property is set
        internal bool IsSetDomainMemberships()
        {
            return this._domainMemberships != null && this._domainMemberships.Count > 0; 
        }
        /// 
        /// Gets and sets the property EnabledCloudwatchLogsExports. 
        /// 
        /// A list of log types that this DB instance is configured to export to CloudWatch Logs.
        /// 
        /// 
        public List EnabledCloudwatchLogsExports
        {
            get { return this._enabledCloudwatchLogsExports; }
            set { this._enabledCloudwatchLogsExports = value; }
        }
        // Check to see if EnabledCloudwatchLogsExports property is set
        internal bool IsSetEnabledCloudwatchLogsExports()
        {
            return this._enabledCloudwatchLogsExports != null && this._enabledCloudwatchLogsExports.Count > 0; 
        }
        /// 
        /// Gets and sets the property Endpoint. 
        /// 
        /// Specifies the connection endpoint.
        /// 
        /// 
        public Endpoint Endpoint
        {
            get { return this._endpoint; }
            set { this._endpoint = value; }
        }
        // Check to see if Endpoint property is set
        internal bool IsSetEndpoint()
        {
            return this._endpoint != null;
        }
        /// 
        /// Gets and sets the property Engine. 
        /// 
        /// Provides the name of the database engine to be used for this DB instance.
        /// 
        /// 
        public string Engine
        {
            get { return this._engine; }
            set { this._engine = value; }
        }
        // Check to see if Engine property is set
        internal bool IsSetEngine()
        {
            return this._engine != null;
        }
        /// 
        /// Gets and sets the property EngineVersion. 
        /// 
        /// Indicates the database engine version.
        /// 
        /// 
        public string EngineVersion
        {
            get { return this._engineVersion; }
            set { this._engineVersion = value; }
        }
        // Check to see if EngineVersion property is set
        internal bool IsSetEngineVersion()
        {
            return this._engineVersion != null;
        }
        /// 
        /// Gets and sets the property EnhancedMonitoringResourceArn. 
        /// 
        /// The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that receives
        /// the Enhanced Monitoring metrics data for the DB instance.
        /// 
        /// 
        public string EnhancedMonitoringResourceArn
        {
            get { return this._enhancedMonitoringResourceArn; }
            set { this._enhancedMonitoringResourceArn = value; }
        }
        // Check to see if EnhancedMonitoringResourceArn property is set
        internal bool IsSetEnhancedMonitoringResourceArn()
        {
            return this._enhancedMonitoringResourceArn != null;
        }
        /// 
        /// Gets and sets the property IAMDatabaseAuthenticationEnabled. 
        /// 
        /// True if Amazon Identity and Access Management (IAM) authentication is enabled, and
        /// otherwise false.
        /// 
        /// 
        public bool IAMDatabaseAuthenticationEnabled
        {
            get { return this._iamDatabaseAuthenticationEnabled.GetValueOrDefault(); }
            set { this._iamDatabaseAuthenticationEnabled = value; }
        }
        // Check to see if IAMDatabaseAuthenticationEnabled property is set
        internal bool IsSetIAMDatabaseAuthenticationEnabled()
        {
            return this._iamDatabaseAuthenticationEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property InstanceCreateTime. 
        /// 
        /// Provides the date and time the DB instance was created.
        /// 
        /// 
        public DateTime InstanceCreateTime
        {
            get { return this._instanceCreateTime.GetValueOrDefault(); }
            set { this._instanceCreateTime = value; }
        }
        // Check to see if InstanceCreateTime property is set
        internal bool IsSetInstanceCreateTime()
        {
            return this._instanceCreateTime.HasValue; 
        }
        /// 
        /// Gets and sets the property Iops. 
        /// 
        /// Specifies the Provisioned IOPS (I/O operations per second) value.
        /// 
        /// 
        public int Iops
        {
            get { return this._iops.GetValueOrDefault(); }
            set { this._iops = value; }
        }
        // Check to see if Iops property is set
        internal bool IsSetIops()
        {
            return this._iops.HasValue; 
        }
        /// 
        /// Gets and sets the property KmsKeyId. 
        /// 
        ///  Not supported: The encryption for DB instances is managed by the DB cluster.
        /// 
        /// 
        public string KmsKeyId
        {
            get { return this._kmsKeyId; }
            set { this._kmsKeyId = value; }
        }
        // Check to see if KmsKeyId property is set
        internal bool IsSetKmsKeyId()
        {
            return this._kmsKeyId != null;
        }
        /// 
        /// Gets and sets the property LatestRestorableTime. 
        /// 
        /// Specifies the latest time to which a database can be restored with point-in-time restore.
        /// 
        /// 
        public DateTime LatestRestorableTime
        {
            get { return this._latestRestorableTime.GetValueOrDefault(); }
            set { this._latestRestorableTime = value; }
        }
        // Check to see if LatestRestorableTime property is set
        internal bool IsSetLatestRestorableTime()
        {
            return this._latestRestorableTime.HasValue; 
        }
        /// 
        /// Gets and sets the property LicenseModel. 
        /// 
        /// License model information for this DB instance.
        /// 
        /// 
        public string LicenseModel
        {
            get { return this._licenseModel; }
            set { this._licenseModel = value; }
        }
        // Check to see if LicenseModel property is set
        internal bool IsSetLicenseModel()
        {
            return this._licenseModel != null;
        }
        /// 
        /// Gets and sets the property MasterUsername. 
        /// 
        /// Not supported by Neptune.
        /// 
        /// 
        public string MasterUsername
        {
            get { return this._masterUsername; }
            set { this._masterUsername = value; }
        }
        // Check to see if MasterUsername property is set
        internal bool IsSetMasterUsername()
        {
            return this._masterUsername != null;
        }
        /// 
        /// Gets and sets the property MonitoringInterval. 
        /// 
        /// The interval, in seconds, between points when Enhanced Monitoring metrics are collected
        /// for the DB instance.
        /// 
        /// 
        public int MonitoringInterval
        {
            get { return this._monitoringInterval.GetValueOrDefault(); }
            set { this._monitoringInterval = value; }
        }
        // Check to see if MonitoringInterval property is set
        internal bool IsSetMonitoringInterval()
        {
            return this._monitoringInterval.HasValue; 
        }
        /// 
        /// Gets and sets the property MonitoringRoleArn. 
        /// 
        /// The ARN for the IAM role that permits Neptune to send Enhanced Monitoring metrics
        /// to Amazon CloudWatch Logs.
        /// 
        /// 
        public string MonitoringRoleArn
        {
            get { return this._monitoringRoleArn; }
            set { this._monitoringRoleArn = value; }
        }
        // Check to see if MonitoringRoleArn property is set
        internal bool IsSetMonitoringRoleArn()
        {
            return this._monitoringRoleArn != null;
        }
        /// 
        /// Gets and sets the property MultiAZ. 
        /// 
        /// Specifies if the DB instance is a Multi-AZ deployment.
        /// 
        /// 
        public bool MultiAZ
        {
            get { return this._multiAZ.GetValueOrDefault(); }
            set { this._multiAZ = value; }
        }
        // Check to see if MultiAZ property is set
        internal bool IsSetMultiAZ()
        {
            return this._multiAZ.HasValue; 
        }
        /// 
        /// Gets and sets the property OptionGroupMemberships. 
        /// 
        ///  (Not supported by Neptune) 
        /// 
        /// 
        public List OptionGroupMemberships
        {
            get { return this._optionGroupMemberships; }
            set { this._optionGroupMemberships = value; }
        }
        // Check to see if OptionGroupMemberships property is set
        internal bool IsSetOptionGroupMemberships()
        {
            return this._optionGroupMemberships != null && this._optionGroupMemberships.Count > 0; 
        }
        /// 
        /// Gets and sets the property PendingModifiedValues. 
        /// 
        /// Specifies that changes to the DB instance are pending. This element is only included
        /// when changes are pending. Specific changes are identified by subelements.
        /// 
        /// 
        public PendingModifiedValues PendingModifiedValues
        {
            get { return this._pendingModifiedValues; }
            set { this._pendingModifiedValues = value; }
        }
        // Check to see if PendingModifiedValues property is set
        internal bool IsSetPendingModifiedValues()
        {
            return this._pendingModifiedValues != null;
        }
        /// 
        /// Gets and sets the property PerformanceInsightsEnabled. 
        /// 
        ///  (Not supported by Neptune) 
        /// 
        /// 
        public bool PerformanceInsightsEnabled
        {
            get { return this._performanceInsightsEnabled.GetValueOrDefault(); }
            set { this._performanceInsightsEnabled = value; }
        }
        // Check to see if PerformanceInsightsEnabled property is set
        internal bool IsSetPerformanceInsightsEnabled()
        {
            return this._performanceInsightsEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property PerformanceInsightsKMSKeyId. 
        /// 
        ///  (Not supported by Neptune) 
        /// 
        /// 
        public string PerformanceInsightsKMSKeyId
        {
            get { return this._performanceInsightsKMSKeyId; }
            set { this._performanceInsightsKMSKeyId = value; }
        }
        // Check to see if PerformanceInsightsKMSKeyId property is set
        internal bool IsSetPerformanceInsightsKMSKeyId()
        {
            return this._performanceInsightsKMSKeyId != null;
        }
        /// 
        /// Gets and sets the property PreferredBackupWindow. 
        /// 
        ///  Specifies the daily time range during which automated backups are created if automated
        /// backups are enabled, as determined by the BackupRetentionPeriod.
        /// 
        /// 
        public string PreferredBackupWindow
        {
            get { return this._preferredBackupWindow; }
            set { this._preferredBackupWindow = value; }
        }
        // Check to see if PreferredBackupWindow property is set
        internal bool IsSetPreferredBackupWindow()
        {
            return this._preferredBackupWindow != null;
        }
        /// 
        /// Gets and sets the property PreferredMaintenanceWindow. 
        /// 
        /// Specifies the weekly time range during which system maintenance can occur, in Universal
        /// Coordinated Time (UTC).
        /// 
        /// 
        public string PreferredMaintenanceWindow
        {
            get { return this._preferredMaintenanceWindow; }
            set { this._preferredMaintenanceWindow = value; }
        }
        // Check to see if PreferredMaintenanceWindow property is set
        internal bool IsSetPreferredMaintenanceWindow()
        {
            return this._preferredMaintenanceWindow != null;
        }
        /// 
        /// Gets and sets the property PromotionTier. 
        /// 
        /// A value that specifies the order in which a Read Replica is promoted to the primary
        /// instance after a failure of the existing primary instance. 
        /// 
        /// 
        public int PromotionTier
        {
            get { return this._promotionTier.GetValueOrDefault(); }
            set { this._promotionTier = value; }
        }
        // Check to see if PromotionTier property is set
        internal bool IsSetPromotionTier()
        {
            return this._promotionTier.HasValue; 
        }
        /// 
        /// Gets and sets the property PubliclyAccessible. 
        /// 
        /// This flag should no longer be used.
        /// 
        /// 
        [Obsolete("This parameter is not supported")]
        public bool PubliclyAccessible
        {
            get { return this._publiclyAccessible.GetValueOrDefault(); }
            set { this._publiclyAccessible = value; }
        }
        // Check to see if PubliclyAccessible property is set
        internal bool IsSetPubliclyAccessible()
        {
            return this._publiclyAccessible.HasValue; 
        }
        /// 
        /// Gets and sets the property ReadReplicaDBClusterIdentifiers. 
        /// 
        /// Contains one or more identifiers of DB clusters that are Read Replicas of this DB
        /// instance.
        /// 
        /// 
        public List ReadReplicaDBClusterIdentifiers
        {
            get { return this._readReplicaDBClusterIdentifiers; }
            set { this._readReplicaDBClusterIdentifiers = value; }
        }
        // Check to see if ReadReplicaDBClusterIdentifiers property is set
        internal bool IsSetReadReplicaDBClusterIdentifiers()
        {
            return this._readReplicaDBClusterIdentifiers != null && this._readReplicaDBClusterIdentifiers.Count > 0; 
        }
        /// 
        /// Gets and sets the property ReadReplicaDBInstanceIdentifiers. 
        /// 
        /// Contains one or more identifiers of the Read Replicas associated with this DB instance.
        /// 
        /// 
        public List ReadReplicaDBInstanceIdentifiers
        {
            get { return this._readReplicaDBInstanceIdentifiers; }
            set { this._readReplicaDBInstanceIdentifiers = value; }
        }
        // Check to see if ReadReplicaDBInstanceIdentifiers property is set
        internal bool IsSetReadReplicaDBInstanceIdentifiers()
        {
            return this._readReplicaDBInstanceIdentifiers != null && this._readReplicaDBInstanceIdentifiers.Count > 0; 
        }
        /// 
        /// Gets and sets the property ReadReplicaSourceDBInstanceIdentifier. 
        /// 
        /// Contains the identifier of the source DB instance if this DB instance is a Read Replica.
        /// 
        /// 
        public string ReadReplicaSourceDBInstanceIdentifier
        {
            get { return this._readReplicaSourceDBInstanceIdentifier; }
            set { this._readReplicaSourceDBInstanceIdentifier = value; }
        }
        // Check to see if ReadReplicaSourceDBInstanceIdentifier property is set
        internal bool IsSetReadReplicaSourceDBInstanceIdentifier()
        {
            return this._readReplicaSourceDBInstanceIdentifier != null;
        }
        /// 
        /// Gets and sets the property SecondaryAvailabilityZone. 
        /// 
        /// If present, specifies the name of the secondary Availability Zone for a DB instance
        /// with multi-AZ support.
        /// 
        /// 
        public string SecondaryAvailabilityZone
        {
            get { return this._secondaryAvailabilityZone; }
            set { this._secondaryAvailabilityZone = value; }
        }
        // Check to see if SecondaryAvailabilityZone property is set
        internal bool IsSetSecondaryAvailabilityZone()
        {
            return this._secondaryAvailabilityZone != null;
        }
        /// 
        /// Gets and sets the property StatusInfos. 
        /// 
        /// The status of a Read Replica. If the instance is not a Read Replica, this is blank.
        /// 
        /// 
        public List StatusInfos
        {
            get { return this._statusInfos; }
            set { this._statusInfos = value; }
        }
        // Check to see if StatusInfos property is set
        internal bool IsSetStatusInfos()
        {
            return this._statusInfos != null && this._statusInfos.Count > 0; 
        }
        /// 
        /// Gets and sets the property StorageEncrypted. 
        /// 
        /// Not supported: The encryption for DB instances is managed by the DB cluster.
        /// 
        /// 
        public bool StorageEncrypted
        {
            get { return this._storageEncrypted.GetValueOrDefault(); }
            set { this._storageEncrypted = value; }
        }
        // Check to see if StorageEncrypted property is set
        internal bool IsSetStorageEncrypted()
        {
            return this._storageEncrypted.HasValue; 
        }
        /// 
        /// Gets and sets the property StorageType. 
        /// 
        /// Specifies the storage type associated with DB instance.
        /// 
        /// 
        public string StorageType
        {
            get { return this._storageType; }
            set { this._storageType = value; }
        }
        // Check to see if StorageType property is set
        internal bool IsSetStorageType()
        {
            return this._storageType != null;
        }
        /// 
        /// Gets and sets the property TdeCredentialArn. 
        /// 
        /// The ARN from the key store with which the instance is associated for TDE encryption.
        /// 
        /// 
        public string TdeCredentialArn
        {
            get { return this._tdeCredentialArn; }
            set { this._tdeCredentialArn = value; }
        }
        // Check to see if TdeCredentialArn property is set
        internal bool IsSetTdeCredentialArn()
        {
            return this._tdeCredentialArn != null;
        }
        /// 
        /// Gets and sets the property Timezone. 
        /// 
        /// Not supported.
        /// 
        /// 
        public string Timezone
        {
            get { return this._timezone; }
            set { this._timezone = value; }
        }
        // Check to see if Timezone property is set
        internal bool IsSetTimezone()
        {
            return this._timezone != null;
        }
        /// 
        /// Gets and sets the property VpcSecurityGroups. 
        /// 
        /// Provides a list of VPC security group elements that the DB instance belongs to.
        /// 
        /// 
        public List VpcSecurityGroups
        {
            get { return this._vpcSecurityGroups; }
            set { this._vpcSecurityGroups = value; }
        }
        // Check to see if VpcSecurityGroups property is set
        internal bool IsSetVpcSecurityGroups()
        {
            return this._vpcSecurityGroups != null && this._vpcSecurityGroups.Count > 0; 
        }
    }
}