Index: trunk/src/com/drew/metadata/tiff/DirectoryTiffHandler.java
===================================================================
--- trunk/src/com/drew/metadata/tiff/DirectoryTiffHandler.java	(revision 8132)
+++ trunk/src/com/drew/metadata/tiff/DirectoryTiffHandler.java	(revision 8243)
@@ -41,8 +41,15 @@
     protected final Metadata _metadata;
 
-    protected DirectoryTiffHandler(Metadata metadata, Class<? extends Directory> initialDirectory)
+    protected DirectoryTiffHandler(Metadata metadata, Class<? extends Directory> initialDirectoryClass)
     {
         _metadata = metadata;
-        _currentDirectory = _metadata.getOrCreateDirectory(initialDirectory);
+        try {
+            _currentDirectory = initialDirectoryClass.newInstance();
+        } catch (InstantiationException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        _metadata.addDirectory(_currentDirectory);
     }
 
@@ -54,7 +61,13 @@
     protected void pushDirectory(@NotNull Class<? extends Directory> directoryClass)
     {
-        assert(directoryClass != _currentDirectory.getClass());
         _directoryStack.push(_currentDirectory);
-        _currentDirectory = _metadata.getOrCreateDirectory(directoryClass);
+        try {
+            _currentDirectory = directoryClass.newInstance();
+        } catch (InstantiationException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        _metadata.addDirectory(_currentDirectory);
     }
 
