/// <summary>
		/// Updates meeting
		/// </summary>
		/// <param name="context">context</param>
		/// <param name="userId">user identifier</param>
		/// <param name="meetingId">meeting identifier</param>
		/// <param name="updateData">meeting update data</param>
		public void UpdateMeeting(Context context, int userId, int meetingId, MeetingUpdateData updateData)
		{
			if (updateData == null)
				throw new MemoryPointerIsNullException("updateData");

			// TODO: user user id to check write access to the meeting

			// TODO: implement this method properly (the following implementation is just a hack)
			this.meetings.Remove(meetingId);

			var newMeetingInitData = new MeetingInitData()
			{
				Id = meetingId,
				Name = updateData.Name,
				StartTime = updateData.StartTime,
				EndTime = updateData.EndTime,
				DelegateProviderResolver = this.delegateProviderResolver,
				AttendeeProviderResolver = this.attendeeProviderResolver,
			};
			
			this.meetings.Add(meetingId, new Meeting(newMeetingInitData));
		}
        /// <summary>
        /// Updates meeting
        /// </summary>
        /// <param name="context">context</param>
        /// <param name="userId">user identifier</param>
        /// <param name="meetingId">meeting identifier</param>
        /// <param name="updateData">meeting update data</param>
        public void UpdateMeeting(Context context, int userId, int meetingId, MeetingUpdateData updateData)
        {
            if (updateData == null)
            {
                throw new MemoryPointerIsNullException("updateData");
            }

            // TODO: user user id to check write access to the meeting

            // TODO: implement this method properly (the following implementation is just a hack)
            this.meetings.Remove(meetingId);

            var newMeetingInitData = new MeetingInitData()
            {
                Id        = meetingId,
                Name      = updateData.Name,
                StartTime = updateData.StartTime,
                EndTime   = updateData.EndTime,
                DelegateProviderResolver = this.delegateProviderResolver,
                AttendeeProviderResolver = this.attendeeProviderResolver,
            };

            this.meetings.Add(meetingId, new Meeting(newMeetingInitData));
        }
		/// <summary>
		/// Updates current meeting associated with the context
		/// </summary>
		/// <param name="updateData">meeting update data</param>
		public void UpdateCurrentMeeting(MeetingUpdateData updateData)
		{
			this.meetingProviderResolver.GetService(this).UpdateMeeting(this, this.GetCurrentUserToken<SampleUserToken>().UserId, this.CurrentMeetingId, updateData);
			ClearCachedMeeting();
		}