Fix new test
NewTypeWizardTest17.testCreateRecordWithAbstractMethodStubs()

by refreshing a replace callin from its base
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/StubUtility2Core.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/StubUtility2Core.java
index 0863c12..42cc3c1 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/StubUtility2Core.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor/StubUtility2Core.java
@@ -51,14 +51,13 @@
 	@SuppressWarnings("basecall")
 	callin static IMethodBinding[] getUnimplementedMethods(ITypeBinding typeBinding, boolean implementAbstractsOfInput) {
 		// COPY&PASTE from base version:
-		ArrayList allMethods= new ArrayList();
-		ArrayList toImplement= new ArrayList();
+		ArrayList<IMethodBinding> allMethods= new ArrayList<>();
+		ArrayList<IMethodBinding> toImplement= new ArrayList<>();
 
-		IMethodBinding[] typeMethods= typeBinding.getDeclaredMethods();
-		for (int i= 0; i < typeMethods.length; i++) {
-			IMethodBinding curr= typeMethods[i];
+		for (IMethodBinding curr : typeBinding.getDeclaredMethods()) {
 			int modifiers= curr.getModifiers();
-			if (!curr.isConstructor() && !Modifier.isStatic(modifiers) && !Modifier.isPrivate(modifiers)) {
+			if (!curr.isConstructor() && !Modifier.isStatic(modifiers) && !Modifier.isPrivate(modifiers)
+					&& !curr.isSyntheticRecordMethod()) {
 //{ObjectTeams: never enter copied methods (have no java element)
 			  if (!curr.isCopied())
 // SH}
@@ -89,8 +88,7 @@
 		  superClass= superClass.getSuperclass();
 		}
 
-		for (int i= 0; i < allMethods.size(); i++) {
-			IMethodBinding curr= (IMethodBinding) allMethods.get(i);
+		for (IMethodBinding curr : allMethods) {
 			int modifiers= curr.getModifiers();
 			if ((Modifier.isAbstract(modifiers) || curr.getDeclaringClass().isInterface()) && (implementAbstractsOfInput || typeBinding != curr.getDeclaringClass())) {
 				// implement all abstract methods
@@ -98,36 +96,33 @@
 			}
 		}
 
-		HashSet visited= new HashSet();
+		HashSet<ITypeBinding> visited= new HashSet<>();
 		ITypeBinding curr= typeBinding;
 		while (curr != null) {
-			ITypeBinding[] superInterfaces= curr.getInterfaces();
-			for (int i= 0; i < superInterfaces.length; i++) {
+			for (ITypeBinding superInterface : curr.getInterfaces()) {
 //{ObjectTeams: consider that a role class part finds its super interfaces in the interface part:
-				if (curr.isClassPartOf(superInterfaces[i])) {
+				if (curr.isClassPartOf(superInterface)) {
 					// do consider transitively inherited methods:
-					ITypeBinding[] superSuperInterfaces = superInterfaces[i].getInterfaces();
-					for (int j = 0; j < superSuperInterfaces.length; j++)
-						findUnimplementedInterfaceMethods(superSuperInterfaces[j], visited, allMethods, typeBinding.getPackage(), toImplement);
+					ITypeBinding[] superSuperInterfaces = superInterface.getInterfaces();
+					for (ITypeBinding superSuperIfc : superSuperInterfaces)
+						findUnimplementedInterfaceMethods(superSuperIfc, visited, allMethods, typeBinding.getPackage(), toImplement);
 					// but don't add methods from our own ifc-part (occurs when role extends non-role).
 					continue; 
 				}
 // SH}
-				findUnimplementedInterfaceMethods(superInterfaces[i], visited, allMethods, typeBinding.getPackage(), toImplement);
+				findUnimplementedInterfaceMethods(superInterface, visited, allMethods, typeBinding.getPackage(), toImplement);
 			}
 			curr= curr.getSuperclass();
 		}
 
-		return (IMethodBinding[]) toImplement.toArray(new IMethodBinding[toImplement.size()]);
+		return toImplement.toArray(new IMethodBinding[toImplement.size()]);
 	}
 	// COPY&PASTE: orig extracted as helper from base of above:
-	private static void findVisibleVirtualMethods(ITypeBinding typeBinding, ArrayList allMethods) {
-		IMethodBinding[] typeMethods= typeBinding.getDeclaredMethods();
-		for (int i= 0; i < typeMethods.length; i++) {
-			IMethodBinding curr= typeMethods[i];
+	private static void findVisibleVirtualMethods(ITypeBinding typeBinding, ArrayList<IMethodBinding> allMethods) {
+		for (IMethodBinding curr : typeBinding.getDeclaredMethods()) {
 			int modifiers= curr.getModifiers();
 			if ((!curr.isConstructor() && !Modifier.isStatic(modifiers) && !Modifier.isPrivate(modifiers))
-					|| Modifier.isAbstract(modifiers)) // account for 'abstract static' (partially virtual ;P )
+					|| Modifier.isAbstract(modifiers)) // OT: account for 'abstract static' (partially virtual ;P )
 			{
 			  if (!curr.isCopied()) // new check for OT
 				if (findMethodBinding(curr, allMethods) == null) {