Index: src/org/jruby/RubyArray.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyArray.java,v
retrieving revision 1.55
diff -u -r1.55 RubyArray.java
--- src/org/jruby/RubyArray.java	20 Mar 2006 05:12:56 -0000	1.55
+++ src/org/jruby/RubyArray.java	22 Mar 2006 22:11:27 -0000
@@ -34,6 +34,8 @@
  ***** END LICENSE BLOCK *****/
 package org.jruby;
 
+import java.lang.reflect.Array;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -1423,9 +1425,18 @@
 		return array;
 	}
 
-	public Object[] toArray(Object[] arg0) {
-		// TODO: Implement
-		return null;
+	public Object[] toArray(final Object[] arg0) {
+            Object[] arr = arg0;
+            final int len = getLength();
+            if(arr.length < len) {
+                final Class type = arr.getClass().getComponentType();
+                arr = (Object[])Array.newInstance(type,len);
+            }
+            final Iterator iter = iterator();
+            for (int i = 0; iter.hasNext(); i++) {
+                arr[i] = iter.next();
+            }
+            return arr;
 	}
 
 	public boolean add(Object element) {
Index: src/org/jruby/RubyHash.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyHash.java,v
retrieving revision 1.30
diff -u -r1.30 RubyHash.java
--- src/org/jruby/RubyHash.java	2 Feb 2006 19:51:49 -0000	1.30
+++ src/org/jruby/RubyHash.java	22 Mar 2006 22:11:52 -0000
@@ -34,6 +34,8 @@
  ***** END LICENSE BLOCK *****/
 package org.jruby;
 
+import java.lang.reflect.Array;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -614,10 +616,19 @@
 			return array;
 		}
 
-		public Object[] toArray(Object[] arg0) {
-			// TODO Auto-generated method stub
-			return null;
-		}
+            public Object[] toArray(final Object[] arg0) {
+                Object[] arr = arg0;
+                final int len = size();
+                if(arr.length < len) {
+                    final Class type = arr.getClass().getComponentType();
+                    arr = (Object[])Array.newInstance(type,len);
+                }
+                final Iterator iter = iterator();
+                for (int i = 0; iter.hasNext(); i++) {
+                    arr[i] = iter.next();
+                }
+                return arr;
+            }
 
 		public boolean add(Object element) {
 			return set.add(JavaUtil.convertJavaToRuby(getRuntime(), element));
