/// <summary>
        /// Gets the default history capabilities object.
        /// </summary>
        public HistoryServerCapabilitiesState GetDefaultHistoryCapabilities()
        {
            lock (Lock)
            {
                if (m_historyCapabilities != null)
                {
                    return m_historyCapabilities;
                }

                HistoryServerCapabilitiesState state = new HistoryServerCapabilitiesState(null);

                NodeId nodeId = CreateNode(
                    SystemContext,
                    null,
                    ReferenceTypeIds.HasComponent,
                    new QualifiedName(BrowseNames.HistoryServerCapabilities),
                    state);

                state.AccessHistoryDataCapability.Value = false;
                state.AccessHistoryEventsCapability.Value = false;
                state.MaxReturnDataValues.Value = 0;
                state.MaxReturnEventValues.Value = 0;
                state.ReplaceDataCapability.Value = false;
                state.UpdateDataCapability.Value = false;
                state.InsertEventCapability.Value = false;
                state.ReplaceEventCapability.Value = false;
                state.UpdateEventCapability.Value = false;
                state.InsertAnnotationCapability.Value = false;
                state.InsertDataCapability.Value = false;
                state.DeleteRawCapability.Value = false;
                state.DeleteAtTimeCapability.Value = false;

                NodeState parent = FindPredefinedNode(ObjectIds.Server_ServerCapabilities, typeof(ServerCapabilitiesState));

                if (parent != null)
                {
                    parent.AddReference(ReferenceTypes.HasComponent, false, state.NodeId);
                    state.AddReference(ReferenceTypes.HasComponent, true, parent.NodeId);
                }

                AddPredefinedNode(SystemContext, state);

                m_historyCapabilities = state;
                return m_historyCapabilities;
            }
        }