 			
 			return splicedObjects;
 		}
-		
+
+        public function spliceUnsafe(startIndex:int, deleteCount:int):Vector.<ManagedObject>
+        {
+            var splicedObjects:Vector.<ManagedObject> = new Vector.<ManagedObject>();
+
+            if (startIndex < _data.length && (startIndex + deleteCount) <= _data.length)
+            {
+                var object:ManagedObject;
+
+                while (deleteCount > 0)
+                {
+                    object = _data[startIndex];
+                    removeUnsafe(object);
+                    splicedObjects.push(object);
+                    deleteCount--;
+                }
+            }
+            else
+            {
+                throw new RangeError("startIndex and deleteCount arguments specify an index to be deleted that's outside the ManagedArray's bounds.");
+            }
+
+            return splicedObjects;
+        }
+
 		public function replaceObject(oldObject:ManagedObject, newObject:ManagedObject):Boolean
 		{
 			var index:int = _data.indexOf(oldObject);

			
			return true;
		}
		
		public function indexOf(searchElement:ManagedObject, fromIndex:int = 0):int
		{

            return object;
        }

        public function shiftUnsafe():ManagedObject
        {
            var object:ManagedObject = null;
            var length:int = _data.length;

            if (length > 0)
            {
                object = _data[0];
                removeUnsafe(object);
            }

            return object;
        }

		public function remove(object:ManagedObject):Boolean
		{
			var index:int = _data.indexOf(object);
