avoid some optional warnings being reported against generated methods/fields.
Witnessed by failures in TeamNesting suite after conversion to junit.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
index e0e0df7..643d0b6 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.compiler.ast;
 
+import org.eclipse.jdt.core.compiler.CharOperation;
 import org.eclipse.jdt.core.compiler.IProblem;
 import org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.eclipse.jdt.internal.compiler.impl.*;
@@ -23,6 +24,7 @@
 import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
 import org.eclipse.jdt.internal.compiler.util.Util;
+import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
 import org.eclipse.objectteams.otdt.internal.core.compiler.control.Config;
 import org.eclipse.objectteams.otdt.internal.core.compiler.model.FieldModel;
 import org.eclipse.objectteams.otdt.internal.core.compiler.statemachine.transformer.InsertTypeAdjustmentsVisitor;
@@ -207,6 +209,10 @@
 				if (existingField.original() == this.binding) break checkHiding;
 				if (!existingField.isStatic() && declaringType.isStatic()) break checkHiding;
 			}
+//{ObjectTeams: never report hiding re _OT$base, _OT$cacheInitTrigger et al
+			if (CharOperation.prefixEquals(IOTConstants.OT_DOLLAR_NAME, this.name)) 
+				break checkHiding;
+// SH}
 			// collision with outer field or local variable
 			initializationScope.problemReporter().fieldHiding(this, existingVariable);
 		}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
index e011d14..8271589 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
@@ -1665,6 +1665,10 @@
 							MethodBinding current = currentMethods[c];
 							for (int f = 0; f < foundSize; f++)
 								if (current == found.elementAt(f)) continue next;
+//{ObjectTeams: some fake ifc methods are not relevant here:
+							if (MethodModel.isRoleMethodInheritedFromNonPublicRegular(current))
+								continue next;
+// SH}
 							found.add(current);
 						}
 					} else {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/model/MethodModel.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/model/MethodModel.java
index 5a72c78..9b5899b 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/model/MethodModel.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/model/MethodModel.java
@@ -155,6 +155,10 @@
 		}
 	}
 
+	public static boolean isRoleMethodInheritedFromNonPublicRegular(MethodBinding current) {
+		if (current.model == null) return false;
+		return current.model.problemDetail == ProblemDetail.RoleInheritsNonPublic;
+	}
 
 	// TODO(SH): note that role feature bridges are not really faked, since they are actually generated (synthetic?)
     public static enum FakeKind { NOT_FAKED, BASECALL_SURROGATE, ROLE_FEATURE_BRIDGE, TEAM_REGISTRATION_METHOD }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java
index 834d2ee..05382e5 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java
@@ -1296,7 +1296,7 @@
 					if (   currentField.binding != null
 						&& currentField.binding.copyInheritanceSrc != null
 						&& currentField.binding.copyInheritanceSrc == field.copyInheritanceSrc)
-						break; // not a problem: repeated inheritance of the same field!
+						return; // not a problem: repeated inheritance of the same field!
 
 					ProblemReporter problemReporter = currentField.isStatic() ?
 							roleDeclaration.staticInitializerScope.problemReporter() :