public IResult <INoteReturn> AddNote(string notebookKey, ICreateNoteParameters parameters)
        {
            if (notebookKey == null)
            {
                throw new ArgumentNullException("notebookKey");
            }

            var keyResult = KeyParserHelper.ParseResult <INotebookKey>(notebookKey);

            if (!keyResult.Success)
            {
                return(keyResult.ConvertTo <INoteReturn>());
            }
            var key = new NotebookKey(keyResult.ResultingObject);

            var createNoteResult = new CreateNoteCommand(_notebookUnitOfWork).Execute(key, _timeStamper.CurrentTimeStamp, parameters);

            if (!createNoteResult.Success)
            {
                return(createNoteResult.ConvertTo <INoteReturn>());
            }

            _notebookUnitOfWork.Commit();

            return(SyncParameters.Using(new SuccessResult <INoteReturn>(new[] { createNoteResult.ResultingObject }.Select(NoteProjectors.Select().Compile()).FirstOrDefault()), key));
        }