title: WrongExpectedVersionException on EventStore Getting started project
body: <p>I have re-written the getting-started-with-event-store project to learn what's going on and now for the test <code>CanSaveExistingAggregate()</code> I am getting a WrongExpectedVersionException.  The thing is, in order to try and work out what's going on I would like to know what the expected version should be, how can I find this out?  In the test, the line <code>repository.Save(firstSaved, Guid.NewGuid(), d =&gt; { });</code> calculates the expected version as <code>101</code> and this is where it fails:</p>
  
  <pre><code>        [Test]
      public void CanSaveExistingAggregate()
      {
          var savedId = SaveTestAggregateWithoutCustomHeaders(repository, 100 /* excludes TestAggregateCreated */);
  
          var firstSaved = repository.GetById&lt;TestAggregate&gt;(savedId);
          Console.WriteLine("version:" + firstSaved.Id);
          firstSaved.ProduceEvents(50);
          repository.Save(firstSaved, Guid.NewGuid(), d =&gt; { });
  
          var secondSaved = repository.GetById&lt;TestAggregate&gt;(savedId);
          Assert.AreEqual(150, secondSaved.AppliedEventCount);
      }
  </code></pre>
  
  <p>And the code where the exception is thrown:</p>
  
  <pre><code>        public void Save(CommonDomain.IAggregate aggregate, Guid commitId, Action&lt;IDictionary&lt;string, object&gt;&gt; updateHeaders)
      {
          var commitHeaders = new Dictionary&lt;string, object&gt;
          {
              {CommitIdHeader, commitId},
              {AggregateClrTypeHeader, aggregate.GetType().AssemblyQualifiedName}
          };
          updateHeaders(commitHeaders);
  
          var streamName = aggregateIdToStreamName(aggregate.GetType(), aggregate.Id);
          var newEvents = aggregate.GetUncommittedEvents().Cast&lt;object&gt;().ToList();
          var originalVersion = aggregate.Version - newEvents.Count;
          var expectedVersion = originalVersion == 0 ? ExpectedVersion.NoStream : originalVersion;
          var eventsToSave = newEvents.Select(e =&gt; ToEventData(Guid.NewGuid(), e, commitHeaders)).ToList();
          if (eventsToSave.Count &lt; WritePageSize)
          {
              eventStoreConnection.AppendToStream(streamName, expectedVersion, eventsToSave);
          }
          else
          {
              var transaction = eventStoreConnection.StartTransaction(streamName, expectedVersion);
  
              var position = 0;
              while (position &lt; eventsToSave.Count)
              {
                  var pageEvents = eventsToSave.Skip(position).Take(WritePageSize);
                  transaction.Write(pageEvents);
                  position += WritePageSize;
              }
  
              transaction.Commit();
          }
  
          aggregate.ClearUncommittedEvents();
      }
  </code></pre>
  
  <p>All the other tests pass (except <code>ThrowsOnGetDeletedAggregate()</code> but I'll ask about that later) but I think this is the only test that has <code>expectedVersion != ThrowsOnGetDeletedAggregate()</code></p>