(++) Bug 64019 - IllegalArgumentException when editing ant builder
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java
index 8d39e83..7ad2da0 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java
@@ -188,14 +188,27 @@
 	 */
 	private ISchedulingRule getSchedulingRule() {
 		List rules= new ArrayList(2);
+		IResourceRuleFactory fac = ResourcesPlugin.getWorkspace().getRuleFactory();
 		if (!isLocal()) {
-			//working copy will be saved to a workspace location
-			addSchedulingRule(rules, getLocation());
+			//working copy will be saved to a workspace location - create or modify
+			IFile[] files= ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(getLocation());
+			if (files.length > 0) {
+				IFile file = files[0];
+				ISchedulingRule rule = null;
+				if (file.exists()) {
+					rule = fac.modifyRule(file);
+				} else {
+					rule = fac.createRule(file);
+				}
+				rules.add(MultiRule.combine(rule, fac.validateEditRule(files)));
+			}
 		}
 		ILaunchConfiguration original = getOriginal();
-		if (original != null && !original.isLocal()) {
-			//original will be deleted from a workspace location
-			addSchedulingRule(rules, original.getLocation());
+		if (!isNew() && isMoved() && !original.isLocal()) {
+			IFile[] files= ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(original.getLocation());
+			if (files.length > 0) {
+				rules.add(MultiRule.combine(fac.deleteRule(files[0]), fac.validateEditRule(files)));
+			}
 		}
 		if (rules.isEmpty()) {
 			return null;
@@ -203,14 +216,6 @@
 		return new MultiRule((ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules.size()]));
 	}
 	
-	private void addSchedulingRule(List rules, IPath location) {
-		IFile[] files= ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(location);
-		if (files.length > 0) {
-			IResourceRuleFactory fac = ResourcesPlugin.getWorkspace().getRuleFactory();
-			rules.add(MultiRule.combine(fac.createRule(files[0]), fac.validateEditRule(files)));
-		}
-	}
-
 	private void doSave0() throws CoreException {
 		// set up from/to information if this is a move
 		boolean moved = (!isNew() && isMoved());