public void Detach(byte[] streamId, byte[] streamIdToDetach, DateTime detachedSince)
{
if (ByteArrayHelper.Compare(streamId, streamIdToDetach))
throw new ArgumentException("Detaching a stream from itself is now allowed.");
var stream = repository.Load(streamId);
var result = stream.Detach(streamIdToDetach, detachedSince);
if (result.IsSuccessful)
repository.DetachStream(streamId, streamIdToDetach, detachedSince.ToFileTimeUtc());
}