 					return false;
 				}
 			}
-
-			return true;
-		}
-
+			
+			return true;
+		}
+		
+		public static function convert(collection:Object, mapper:Function):Array {
+			var result:Array = [];
+			
+			if (isArrayOrVector(collection)) {
+				for each (var element:Object in collection) {
+					result.push(mapper.call(null, element));
+				}
+			}
+			else {
+				//noinspection JSValidateTypes
+				for (var key:Object in collection) {
+					result.push(mapper.call(null, key, collection[key]));
+				}
+			}
+			
+			return result;
+		}
+		
+		public static function convertToVector(collection:Object, elementClass:Class, mapper:Function):* {
+			const result:Object = createVector(elementClass);
+			
+			if (isArrayOrVector(collection)) {
+				for each (var element:Object in collection) {
+					result.push(mapper.call(null, element));
+				}
+			}
+			else {
+				//noinspection JSValidateTypes
+				for (var key:Object in collection) {
+					result.push(mapper.call(null, key, collection[key]));
+				}
+			}
+			
+			return result;
+		}
+		
+		
 		public static function contains(collection:Object, element:Object):Boolean {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
 			return collection.indexOf(element) !== -1;
 		}
-
+		
 		public static function addUnique(collection:Object, element:Object):Boolean {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+			
 			if (contains(collection, element)) {
 				return false;
 			}
 			collection.push(element);
 			return true;
 		}
-
+		
 		public static function shuffle(collection:Object):void {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();

			}
			return array;
		}

		public static function objectValuesToArray(object:Object):Array {
			const array:Array = [];
			for each (var value:Object in object) {

				}
			}
		}
		
		public static function getVectorClass(elementClass:Class):Class {
			var cls:Class = VECTOR_CLASSES_CACHE[elementClass];
			if (cls === null) {
