Fix impl of memory directory's _renameSync. (#66)

diff --git a/lib/src/backends/memory/memory_directory.dart b/lib/src/backends/memory/memory_directory.dart
index da41c96..eaf6875 100644
--- a/lib/src/backends/memory/memory_directory.dart
+++ b/lib/src/backends/memory/memory_directory.dart
@@ -71,7 +71,7 @@
   Future<Directory> rename(String newPath) async => renameSync(newPath);
 
   @override
-  Directory renameSync(String newPath) => _renameSync(
+  Directory renameSync(String newPath) => _renameSync<_DirectoryNode>(
         newPath,
         validateOverwriteExistingEntity: (_DirectoryNode existingNode) {
           if (existingNode.children.isNotEmpty) {
diff --git a/lib/src/backends/memory/memory_file_system_entity.dart b/lib/src/backends/memory/memory_file_system_entity.dart
index 05dd9a1..349e03b 100644
--- a/lib/src/backends/memory/memory_file_system_entity.dart
+++ b/lib/src/backends/memory/memory_file_system_entity.dart
@@ -207,9 +207,9 @@
   /// If [checkType] is specified, it will be used to validate that the file
   /// system entity that exists at [path] is of the expected type. By default,
   /// [_defaultCheckType] is used to perform this validation.
-  FileSystemEntity _renameSync(
+  FileSystemEntity _renameSync<T extends _Node>(
     String newPath, {
-    _RenameOverwriteValidator<_Node> validateOverwriteExistingEntity,
+    _RenameOverwriteValidator<T> validateOverwriteExistingEntity,
     bool followTailLink: false,
     _TypeChecker checkType,
   }) {