Bug 477781 - API tools report API breakage if default methods are
introduced 
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/comparator/tests/Java8DeltaTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/comparator/tests/Java8DeltaTests.java
index 06e0b11..b6543a9 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/comparator/tests/Java8DeltaTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/comparator/tests/Java8DeltaTests.java
@@ -113,7 +113,7 @@
 		IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after,
 				VisibilityModifiers.ALL_VISIBILITIES, null);
 		assertNotNull("No delta", delta); //$NON-NLS-1$
-		assertTrue("Is compatible", DeltaProcessor.isCompatible(delta)); //$NON-NLS-1$
+		assertTrue("Not compatible", !DeltaProcessor.isCompatible(delta)); //$NON-NLS-1$
 	}
 
 	/**
diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsConfigurationBlock.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsConfigurationBlock.java
index ba90b8b..1a798b4 100644
--- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsConfigurationBlock.java
+++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsConfigurationBlock.java
@@ -264,6 +264,7 @@
 	// interface key constant
 	private static final Key KEY_INTERFACE_ADDED_FIELD = getApiToolsKey(IApiProblemTypes.INTERFACE_ADDED_FIELD);
 	private static final Key KEY_INTERFACE_ADDED_METHOD = getApiToolsKey(IApiProblemTypes.INTERFACE_ADDED_METHOD);
+	private static final Key KEY_INTERFACE_ADDED_DEFAULT_METHOD = getApiToolsKey(IApiProblemTypes.INTERFACE_ADDED_DEFAULT_METHOD);
 	private static final Key KEY_INTERFACE_ADDED_RESTRICTIONS = getApiToolsKey(IApiProblemTypes.INTERFACE_ADDED_RESTRICTIONS);
 	private static final Key KEY_INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS = getApiToolsKey(IApiProblemTypes.INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS);
 	private static final Key KEY_INTERFACE_ADDED_TYPE_PARAMETER = getApiToolsKey(IApiProblemTypes.INTERFACE_ADDED_TYPE_PARAMETER);
@@ -374,7 +375,7 @@
 			KEY_ANNOTATION_REMOVED_TYPE_MEMBER,
 			KEY_ANNOTATION_CHANGED_TYPE_CONVERSION,
 			KEY_ANNOTATION_ADDED_METHOD_NO_DEFAULT_VALUE,
-			KEY_INTERFACE_ADDED_FIELD, KEY_INTERFACE_ADDED_METHOD,
+			KEY_INTERFACE_ADDED_FIELD, KEY_INTERFACE_ADDED_METHOD, KEY_INTERFACE_ADDED_DEFAULT_METHOD,
 			KEY_INTERFACE_ADDED_RESTRICTIONS,
 			KEY_INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS,
 			KEY_INTERFACE_ADDED_TYPE_PARAMETER,
diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/PreferenceMessages.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/PreferenceMessages.java
index d3d0fd0..98da7d3 100644
--- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/PreferenceMessages.java
+++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/PreferenceMessages.java
@@ -95,6 +95,7 @@
 
 	public static String INTERFACE_ADDED_FIELD;
 	public static String INTERFACE_ADDED_METHOD;
+	public static String INTERFACE_ADDED_DEFAULT_METHOD;
 	public static String INTERFACE_ADDED_RESTRICTIONS;
 	public static String INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS;
 	public static String INTERFACE_ADDED_TYPE_PARAMETER;
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java
index 54160e3..2c508db 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java
@@ -2160,7 +2160,7 @@
 							}
 						}
 					}
-					this.addDelta(getElementType(type), IDelta.ADDED, found ? IDelta.METHOD_MOVED_DOWN : IDelta.METHOD, restrictionsForMethodAddition, this.initialDescriptorRestrictions, 0, method.isDefaultMethod() ? (method.getModifiers() | Flags.AccDefaultMethod) : method.getModifiers(), this.type1, getKeyForMethod(method, type), new String[] {
+					this.addDelta(getElementType(type), IDelta.ADDED, found ? IDelta.METHOD_MOVED_DOWN : method.isDefaultMethod() ? IDelta.DEFAULT_METHOD : IDelta.METHOD, restrictionsForMethodAddition, this.initialDescriptorRestrictions, 0, method.isDefaultMethod() ? (method.getModifiers() | Flags.AccDefaultMethod) : method.getModifiers(), this.type1, getKeyForMethod(method, type), new String[] {
 							Util.getDescriptorName(type), methodDisplayName });
 
 				} else {
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java
index 45522d1..3643d44 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java
@@ -769,6 +769,8 @@
 										return 40;
 									case IDelta.METHOD:
 										return 44;
+									case IDelta.DEFAULT_METHOD:
+										return 47;
 									case IDelta.RESTRICTIONS:
 										return 72;
 									case IDelta.SUPER_INTERFACE_WITH_METHODS:
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties
index 6a9f274..1e9922d 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties
@@ -8,7 +8,7 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-# available message ids 47, 48, 49, 50, 51, 53, 57, 58, 59, 60, 62, 63, 65, 68, 70, 71, 75, 80,
+# available message ids  48, 49, 50, 51, 53, 57, 58, 59, 60, 62, 63, 65, 68, 70, 71, 75, 80,
 # 82, 83, 88, 90, 93
 
 #API baseline 
@@ -77,7 +77,8 @@
 39 = The field {0}.{1} in an annotation that is intended to be extended has been added
 40 = The field {0}.{1} in an interface that is intended to be implemented or extended has been added
 41 = The method {0}.{1} that has to be implemented has been added
-44 = The method {0}.{1} in an interface that is intended to be implemented has been added
+44 = The method {0}.{1} in an interface that is intended to be implemented has been adde
+47 = The default method {0}.{1} in an interface has been added
 
 #changed
 52 = The class bound for type parameter {1} in {0} has been changed
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/ApiPlugin.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/ApiPlugin.java
index 4f84e90..f2b1987 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/ApiPlugin.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/ApiPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2013 IBM Corporation and others.
+ * Copyright (c) 2007, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -278,6 +278,7 @@
 			IApiProblemTypes.ANNOTATION_ADDED_METHOD_NO_DEFAULT_VALUE,
 			IApiProblemTypes.INTERFACE_ADDED_FIELD,
 			IApiProblemTypes.INTERFACE_ADDED_METHOD,
+			IApiProblemTypes.INTERFACE_ADDED_DEFAULT_METHOD,
 			IApiProblemTypes.INTERFACE_ADDED_RESTRICTIONS,
 			IApiProblemTypes.INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS,
 			IApiProblemTypes.INTERFACE_ADDED_TYPE_PARAMETER,
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java
index 24c25b4..7e547b3 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java
@@ -568,11 +568,8 @@
 				switch (delta.getFlags()) {
 					case IDelta.FIELD:
 					case IDelta.METHOD:
+					case IDelta.DEFAULT_METHOD:
 					case IDelta.SUPER_INTERFACE_WITH_METHODS:
-						boolean isDefault = Flags.isDefaultMethod(delta.getNewModifiers());
-						if (isDefault == true) {
-							return true;
-						}
 						return RestrictionModifiers.isImplementRestriction(delta.getPreviousRestrictions()) || RestrictionModifiers.isImplementRestriction(delta.getCurrentRestrictions());
 					case IDelta.TYPE_PARAMETER:
 						return false;
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/IDelta.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/IDelta.java
index 23f56fa..04f7381 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/IDelta.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/IDelta.java
@@ -844,6 +844,19 @@
 	public static final int DEPRECATION = 72;
 
 	/**
+	 * Delta kind flag that denotes a default method has been added or removed.
+	 * <br>
+	 * Applies to kinds:
+	 * <ul>
+	 * <li>{@link #ADDED}</li>
+	 * <li>{@link #REMOVED}</li>
+	 * </ul>
+	 *
+	 * @see #getFlags()
+	 */
+	public static final int DEFAULT_METHOD = 73;
+
+	/**
 	 * Return true if the receiver has no children deltas, false otherwise.
 	 *
 	 * @return true if the receiver has no children deltas, false otherwise.
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblemTypes.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblemTypes.java
index e2dcbb8..68b118b 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblemTypes.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblemTypes.java
@@ -35,6 +35,7 @@
 	// interface key constant
 	public static final String INTERFACE_ADDED_FIELD = Util.getDeltaPrefererenceKey(IDelta.INTERFACE_ELEMENT_TYPE, IDelta.ADDED, IDelta.FIELD);
 	public static final String INTERFACE_ADDED_METHOD = Util.getDeltaPrefererenceKey(IDelta.INTERFACE_ELEMENT_TYPE, IDelta.ADDED, IDelta.METHOD);
+	public static final String INTERFACE_ADDED_DEFAULT_METHOD = Util.getDeltaPrefererenceKey(IDelta.INTERFACE_ELEMENT_TYPE, IDelta.ADDED, IDelta.DEFAULT_METHOD);
 	public static final String INTERFACE_ADDED_RESTRICTIONS = Util.getDeltaPrefererenceKey(IDelta.INTERFACE_ELEMENT_TYPE, IDelta.ADDED, IDelta.RESTRICTIONS);
 	public static final String INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS = Util.getDeltaPrefererenceKey(IDelta.INTERFACE_ELEMENT_TYPE, IDelta.ADDED, IDelta.SUPER_INTERFACE_WITH_METHODS);
 	public static final String INTERFACE_ADDED_TYPE_PARAMETER = Util.getDeltaPrefererenceKey(IDelta.INTERFACE_ELEMENT_TYPE, IDelta.ADDED, IDelta.TYPE_PARAMETER);
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java
index 02723d2..8de3c56 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java
@@ -774,6 +774,8 @@
 				return "INTERFACE_BOUND"; //$NON-NLS-1$
 			case IDelta.METHOD:
 				return "METHOD"; //$NON-NLS-1$
+			case IDelta.DEFAULT_METHOD:
+				return "DEFAULT_METHOD"; //$NON-NLS-1$
 			case IDelta.METHOD_MOVED_UP:
 				return "METHOD_MOVED_UP"; //$NON-NLS-1$
 			case IDelta.METHOD_WITH_DEFAULT_VALUE: