 
 public class Copier {
 
-	private static function getCopyableFieldsOfType(type:Type, foundFieldsMap:Dictionary):Vector.<Field> {
+	private static function getCopyableFieldsOfType(type:Type, foundFields:Dictionary):Vector.<Field> {
 		const result:Vector.<Field> = new Vector.<Field>();
 
 		var variable:Variable;

			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);
					}
				}

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