 
 import dolly.core.dolly_internal;
 import dolly.core.metadata.MetadataName;
+
+import flash.utils.Dictionary;
 
 import org.as3commons.reflect.Accessor;
 import org.as3commons.reflect.AccessorAccess;

		const isTypeCloneable:Boolean = type.hasMetadata(MetadataName.COPYABLE);
		if (isTypeCloneable) {
			for each(variable in type.variables) {
				if (!variable.isStatic) {
					result.push(variable);
				}
			}
			for each(accessor in type.accessors) {
				if (!accessor.isStatic && accessor.access == AccessorAccess.READ_WRITE) {
					result.push(accessor);
				}
			}

			for each(var metadataContainer:IMetadataContainer in metadataContainers) {
				if (metadataContainer is Variable) {
					variable = metadataContainer as Variable;
					if (!foundFieldsMap[variable.name]
							&& !variable.isStatic
							&& variable.hasMetadata(MetadataName.COPYABLE)) {
						foundFieldsMap[variable.name] = variable;
						result.push(variable);
					}
				} else if (metadataContainer is Accessor) {
					accessor = metadataContainer as Accessor;
					if (!foundFieldsMap[accessor.name]
							&& !accessor.isStatic
							&& accessor.access == AccessorAccess.READ_WRITE
							&& accessor.hasMetadata(MetadataName.COPYABLE)) {
						foundFieldsMap[accessor.name] = accessor;
						result.push(accessor);
					}
				}
