Bug 433150 Reorganize structure of runtime bundles / packages
- split runtime bundle into core classes and bundle "otre"
diff --git a/features/org.eclipse.objectteams.otequinox.feature/feature.xml b/features/org.eclipse.objectteams.otequinox.feature/feature.xml
index ee9773c..09cb1d1 100644
--- a/features/org.eclipse.objectteams.otequinox.feature/feature.xml
+++ b/features/org.eclipse.objectteams.otequinox.feature/feature.xml
@@ -33,6 +33,13 @@
          unpack="false"/>
 
    <plugin
+         id="org.eclipse.objectteams.otre"
+         download-size="89"
+         install-size="202"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
          id="org.apache.bcel"
          download-size="0"
          install-size="0"
diff --git a/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF b/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF
index e12d8be..685a7a4 100644
--- a/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF
@@ -7,6 +7,8 @@
 Bundle-Vendor: %providerName
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.objectteams.runtime;bundle-version="2.3.0";visibility:=reexport,
+ org.eclipse.objectteams.otre;bundle-version="2.3.0",
+ org.eclipse.objectteams.otredyn;bundle-version="0.8.0",
  org.eclipse.osgi;bundle-version="3.10.0",
  org.eclipse.equinox.ds;bundle-version="1.4.100",
  org.eclipse.jdt.annotation;bundle-version="[1.1.0,2.0.0)";resolution:=optional
diff --git a/plugins/org.eclipse.objectteams.otre/.classpath b/plugins/org.eclipse.objectteams.otre/.classpath
new file mode 100644
index 0000000..303cd57
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="bcelpatchsrc"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.objectteams.runtime/.gitignore b/plugins/org.eclipse.objectteams.otre/.gitignore
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/.gitignore
rename to plugins/org.eclipse.objectteams.otre/.gitignore
diff --git a/plugins/org.eclipse.objectteams.otre/.project b/plugins/org.eclipse.objectteams.otre/.project
new file mode 100644
index 0000000..191559f
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.objectteams.otre</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.objectteams.otre/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.objectteams.otre/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..35a117b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.objectteams.otdt.compiler.option.pure_java=enabled
diff --git a/plugins/org.eclipse.objectteams.otre/META-INF/MANIFEST.MF b/plugins/org.eclipse.objectteams.otre/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..77d5729
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.objectteams.otre
+Bundle-Version: 2.3.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.apache.bcel;bundle-version="[5.2.0,5.3.0)",
+ org.eclipse.objectteams.runtime;bundle-version="[2.3.0,3.0.0)"
+Export-Package: org.eclipse.objectteams.otre;version="2.3.0",
+ org.eclipse.objectteams.otre.bcel;version="2.1.0",
+ org.eclipse.objectteams.otre.jplis;version="2.3.0",
+ org.eclipse.objectteams.otre.util;version="2.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.objectteams.otre/about.html b/plugins/org.eclipse.objectteams.otre/about.html
new file mode 100644
index 0000000..66ef6f6
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 15, 2010</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.objectteams.runtime/bcelpatchsrc/org/apache/bcel/generic/BranchHandle.java b/plugins/org.eclipse.objectteams.otre/bcelpatchsrc/org/apache/bcel/generic/BranchHandle.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/bcelpatchsrc/org/apache/bcel/generic/BranchHandle.java
rename to plugins/org.eclipse.objectteams.otre/bcelpatchsrc/org/apache/bcel/generic/BranchHandle.java
diff --git a/plugins/org.eclipse.objectteams.runtime/bcelpatchsrc/org/apache/bcel/generic/InstructionHandle.java b/plugins/org.eclipse.objectteams.otre/bcelpatchsrc/org/apache/bcel/generic/InstructionHandle.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/bcelpatchsrc/org/apache/bcel/generic/InstructionHandle.java
rename to plugins/org.eclipse.objectteams.otre/bcelpatchsrc/org/apache/bcel/generic/InstructionHandle.java
diff --git a/plugins/org.eclipse.objectteams.otre/build.properties b/plugins/org.eclipse.objectteams.otre/build.properties
new file mode 100644
index 0000000..f1ac3c5
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/build.properties
@@ -0,0 +1,9 @@
+customBuildCallbacks=customBuildCallbacks.xml
+customBuildCallbacks.inheritall=true
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties,\
+               about.html
+javacProjectSettings = true
diff --git a/plugins/org.eclipse.objectteams.otre/customBuildCallbacks.xml b/plugins/org.eclipse.objectteams.otre/customBuildCallbacks.xml
new file mode 100644
index 0000000..83deba1
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/customBuildCallbacks.xml
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.runtime/otre-export.jardesc b/plugins/org.eclipse.objectteams.otre/otre-export.jardesc
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/otre-export.jardesc
rename to plugins/org.eclipse.objectteams.otre/otre-export.jardesc
diff --git a/plugins/org.eclipse.objectteams.otre/plugin.properties b/plugins/org.eclipse.objectteams.otre/plugin.properties
new file mode 100644
index 0000000..5ad3c96
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otre/plugin.properties
@@ -0,0 +1,2 @@
+pluginName=Object Teams Runtime (BCEL Weaver)
+providerName=Eclipse.org - Object Teams
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/BaseCallRedirection.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/BaseCallRedirection.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/BaseCallRedirection.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/BaseCallRedirection.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/BaseMethodTransformation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/BaseMethodTransformation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/BaseMethodTransformation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/BaseMethodTransformation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ClassEnhancer.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ClassEnhancer.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ClassEnhancer.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ClassEnhancer.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ClassLoaderAccess.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ClassLoaderAccess.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ClassLoaderAccess.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ClassLoaderAccess.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/Decapsulation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/Decapsulation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/Decapsulation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/Decapsulation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/LiftingParticipantTransformation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/LiftingParticipantTransformation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/LiftingParticipantTransformation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/LiftingParticipantTransformation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/OTConstants.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/OTConstants.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/OTConstants.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/OTConstants.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/OTREInternalError.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/OTREInternalError.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/OTREInternalError.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/OTREInternalError.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ObjectTeamsTransformation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ObjectTeamsTransformation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ObjectTeamsTransformation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ObjectTeamsTransformation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/RepositoryAccess.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/RepositoryAccess.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/RepositoryAccess.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/RepositoryAccess.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/StaticSliceBaseTransformation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/StaticSliceBaseTransformation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/StaticSliceBaseTransformation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/StaticSliceBaseTransformation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/SubBoundBaseMethodRedefinition.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/SubBoundBaseMethodRedefinition.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/SubBoundBaseMethodRedefinition.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/SubBoundBaseMethodRedefinition.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/TeamInterfaceImplementation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/TeamInterfaceImplementation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/TeamInterfaceImplementation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/TeamInterfaceImplementation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ThreadActivation.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ThreadActivation.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/ThreadActivation.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/ThreadActivation.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/ConstantPool.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/ConstantPool.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/ConstantPool.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/ConstantPool.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassParser.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/DietClassParser.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassParser.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/DietClassParser.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietJavaClass.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/DietJavaClass.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietJavaClass.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/bcel/DietJavaClass.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/jplis/JPLISEnhancer.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/jplis/JPLISEnhancer.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/jplis/JPLISEnhancer.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/jplis/JPLISEnhancer.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/jplis/ObjectTeamsTransformer.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/jplis/ObjectTeamsTransformer.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/jplis/ObjectTeamsTransformer.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/jplis/ObjectTeamsTransformer.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/jplis/otreAgent.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/jplis/otreAgent.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/jplis/otreAgent.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/jplis/otreAgent.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/AnnotationHelper.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/AnnotationHelper.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/AnnotationHelper.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/AnnotationHelper.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/AttributeReadingGuard.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/AttributeReadingGuard.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/AttributeReadingGuard.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/AttributeReadingGuard.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/BoundClass.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/BoundClass.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/BoundClass.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/BoundClass.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/BoundMethod.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/BoundMethod.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/BoundMethod.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/BoundMethod.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/CallinBindingManager.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/CallinBindingManager.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/CallinBindingManager.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/CallinBindingManager.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/DebugUtil.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/DebugUtil.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/DebugUtil.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/DebugUtil.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/FieldDescriptor.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/FieldDescriptor.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/FieldDescriptor.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/FieldDescriptor.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/ListValueHashMap.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/ListValueHashMap.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/ListValueHashMap.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/ListValueHashMap.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/MethodBinding.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/MethodBinding.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/MethodBinding.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/MethodBinding.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/RoleBaseBinding.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/RoleBaseBinding.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/RoleBaseBinding.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/RoleBaseBinding.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/SuperMethodDescriptor.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/SuperMethodDescriptor.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/SuperMethodDescriptor.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/SuperMethodDescriptor.java
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/TeamIdDispenser.java b/plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/TeamIdDispenser.java
similarity index 100%
rename from plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/util/TeamIdDispenser.java
rename to plugins/org.eclipse.objectteams.otre/src/org/eclipse/objectteams/otre/util/TeamIdDispenser.java
diff --git a/plugins/org.eclipse.objectteams.runtime/.classpath b/plugins/org.eclipse.objectteams.runtime/.classpath
index bd0e74a..304e861 100644
--- a/plugins/org.eclipse.objectteams.runtime/.classpath
+++ b/plugins/org.eclipse.objectteams.runtime/.classpath
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" output="bcelpatchbin" path="bcelpatchsrc"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.objectteams.runtime/META-INF/MANIFEST.MF b/plugins/org.eclipse.objectteams.runtime/META-INF/MANIFEST.MF
index dc04807..24fbc1d 100644
--- a/plugins/org.eclipse.objectteams.runtime/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.objectteams.runtime/META-INF/MANIFEST.MF
@@ -5,11 +5,7 @@
 Bundle-Version: 2.3.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.objectteams.otre;version="2.3.0",
- org.eclipse.objectteams.otre.bcel;version="2.1.0",
- org.eclipse.objectteams.otre.jplis;version="2.3.0",
- org.eclipse.objectteams.otre.util;version="2.0.0",
- org.objectteams;version="2.0.0"
+Export-Package: org.objectteams;version="2.3.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ClassPath: .
-Require-Bundle: org.apache.bcel;bundle-version="[5.2.0,5.3.0)"
+
diff --git a/plugins/org.eclipse.objectteams.runtime/customBuildCallbacks.xml b/plugins/org.eclipse.objectteams.runtime/customBuildCallbacks.xml
index 243cb1d..b8867d9 100644
--- a/plugins/org.eclipse.objectteams.runtime/customBuildCallbacks.xml
+++ b/plugins/org.eclipse.objectteams.runtime/customBuildCallbacks.xml
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/DuplicateRoleException.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/DuplicateRoleException.java
index 7d1e835..8c6cb98 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/DuplicateRoleException.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/DuplicateRoleException.java
@@ -11,7 +11,7 @@
  * Please visit http://www.eclipse.org/objectteams for updates and contact.
  *
  * Contributors:
- * Berlin Institute of Technology - Initial API and implementation
+ *		Berlin Institute of Technology - Initial API and implementation
  **********************************************************************/
 package org.objectteams;
 
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBaseMigratable.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBaseMigratable.java
index 8156203..9e9d157 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBaseMigratable.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBaseMigratable.java
@@ -11,7 +11,7 @@
  * Please visit http://www.eclipse.org/objectteams for updates and contact.
  *
  * Contributors:
- * Berlin Institute of Technology - Initial API and implementation
+ *		Berlin Institute of Technology - Initial API and implementation
  **********************************************************************/
 package org.objectteams;
 
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase.java
index 3b38849..9e5a29c 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase.java
@@ -11,12 +11,13 @@
  * Please visit http://www.eclipse.org/objectteams for updates and contact.
  *
  * Contributors:
- * Berlin Institute of Technology - Initial API and implementation
+ *		Berlin Institute of Technology - Initial API and implementation
  **********************************************************************/
 package org.objectteams;
 
 /**
- * Super type for all bound base classes. Purely internal class, not intended for client use.
+ * Super type for all bound base classes when using the traditional weaver (OTRE).
+ * Purely internal class, not intended for client use.
  * @author Stephan Herrmann
  */
 public interface IBoundBase {
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase2.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase2.java
new file mode 100644
index 0000000..9e7f68c
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IBoundBase2.java
@@ -0,0 +1,45 @@
+/**********************************************************************
+ * This file is part of "Object Teams Runtime Environment"
+ *
+ * Copyright 2007, 2012 Berlin Institute of Technology, Germany, 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ *		Berlin Institute of Technology - Initial API and implementation
+ * 		Oliver Frank - Initial API and Implementation
+ **********************************************************************/
+package org.objectteams;
+
+/**
+ * Super type for all bound base classes when using the "Object Teams Dynamic Runtime Environment".
+ * Purely internal class, not intended for client use.
+ */
+public interface IBoundBase2 {
+
+	/**
+	 * Call a bound base method identified by its ID.
+	 * @param boundMethod_id globally unique ID of a bound base method
+	 * @param args           packed arguments (incl. boxing)
+	 * @return               (possibly boxed) result of the bound base method.
+	 */
+	Object _OT$callOrig(int boundMethod_id, Object[] args);
+
+	/**
+	 * Provides access to fields and methods of a base class
+	 * that have package, protected or private visbility
+	 * @param accessId Unique identifier in the class for the field or method
+	 * @param opKind 0 for read access, 1 for write access. only used for fields
+	 * @param args arguments for a method
+	 * @return
+	 */
+	Object _OT$access(int accessId, int opKind, Object[] args, Team caller);
+
+	/** Method to be used by generated code, only (lifting constructor & unregisterRole()). */
+	void _OT$addOrRemoveRole(Object aRole, boolean adding);
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IConfined.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IConfined.java
index 9f6d4f6..abe7698 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IConfined.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IConfined.java
@@ -11,7 +11,7 @@
  * Please visit http://www.eclipse.org/objectteams for updates and contact.
  *
  * Contributors:
- * Berlin Institute of Technology - Initial API and implementation
+ *		Berlin Institute of Technology - Initial API and implementation
  **********************************************************************/
 package org.objectteams;
 
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeam.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeam.java
index 4a6a2d7..77250e0 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeam.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeam.java
@@ -1,7 +1,7 @@
 /**********************************************************************
  * This file is part of the "Object Teams Runtime Environment"
  *
- * Copyright 2010 Stephan Herrmann.
+ * Copyright 2010, 2014 Stephan Herrmann.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -202,4 +202,20 @@
 	 * Not API, for use by TeamThreadManager, only.
 	 */
 	public void deactivateForEndedThread(Thread thread);
+	
+	/** NOT API, used from code generated by OTDRE */
+	public void _OT$implicitlyActivate();
+
+	/** NOT API, used from code generated by OTDRE */
+	public void _OT$implicitlyDeactivate();
+	
+
+	/** NOT API, used from code generated by OTDRE */
+	public Object _OT$callAllBindings(IBoundBase2 baze, ITeam[] teams,int idx,int[] callinIds, int boundMethodId, Object[] args);
+
+	/** NOT API, used from code generated by OTDRE */
+	public Object _OT$callOrigStatic(int callinId, int boundMethodId, Object[] args);
+
+	/** NOT API, used from code generated by OTDRE */
+	public Object _OT$callNext(IBoundBase2 baze, ITeam[] teams, int idx, int[] callinIds, int boundMethodId, Object[] args, Object[] baseCallArgs);
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeamManager.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeamManager.java
new file mode 100644
index 0000000..b957ad9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/ITeamManager.java
@@ -0,0 +1,30 @@
+/**********************************************************************
+ * This file is part of the "Object Teams Runtime Environment"
+ *
+ * Copyright 2014 Stephan Herrmann.
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * 		Stephan Herrmann - Initial API and implementation
+ **********************************************************************/
+package org.objectteams;
+
+/**
+ * This interface encapsulates the OTDRE for callbacks from {@link Team}.
+ * NOT API.
+ */
+public interface ITeamManager {
+	
+	public static enum TeamStateChange {
+		REGISTER,
+		UNREGISTER
+	}
+
+	void handleTeamStateChange(Team aTeam, TeamStateChange register);
+}
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IllegalRoleCreationException.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IllegalRoleCreationException.java
index 221ccfb..915c217 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IllegalRoleCreationException.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/IllegalRoleCreationException.java
@@ -11,7 +11,7 @@
  * Please visit http://www.eclipse.org/objectteams for updates and contact.
  *
  * Contributors:
- * Berlin Institute of Technology - Initial API and implementation
+ *		Berlin Institute of Technology - Initial API and implementation
  **********************************************************************/
 package org.objectteams;
 
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/NoSuchMethodError.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/NoSuchMethodError.java
new file mode 100644
index 0000000..fbc2800
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/NoSuchMethodError.java
@@ -0,0 +1,30 @@
+/**********************************************************************
+ * This file is part of "Object Teams Dynamic Runtime Environment"
+ *
+ * Copyright 2011 GK Software AG.
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ *		Stephan Herrmann - Initial API and implementation
+ **********************************************************************/
+package org.objectteams;
+
+/**
+ * This error is thrown when some generated code falls through a switch
+ * without finding a requested target method.
+ *
+ * @author stephan
+ */
+public class NoSuchMethodError extends java.lang.NoSuchMethodError {
+	private static final long serialVersionUID = 8166812526610195056L;
+
+	public NoSuchMethodError(int accessId, String className, String accessReason) {
+		super("Method with internal id "+accessId+" cannot be found in "+className+" for "+accessReason);
+	}
+}
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/SneakyException.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/SneakyException.java
new file mode 100644
index 0000000..28fad1a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/SneakyException.java
@@ -0,0 +1,61 @@
+/**********************************************************************
+ * This file is part of the "Object Teams Runtime Environment"
+ *
+ * Copyright 2012 GK Software AG
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ *
+ * Contributors:
+ * 		Stephan Herrmann - Initial API and implementation
+ **********************************************************************/
+package org.objectteams;
+
+import java.io.PrintStream;
+
+/**
+ * Exception class used for tunneling checked exception through generic dispatch
+ * code without matching throws declaration.
+ * 
+ * An original exception raised in a role method is wrapped during any of 
+ * <code>_OT$callReplace</code>, <code>_OT$callBefore</code> and <code>_OT$callAfter</code>
+ * and unwrapped in the initial wrapper of any base method.
+ * 
+ * Note that the opposite direction needs no wrapping: exceptions raised in
+ * the base method are thrown as normal, because this happens inside _OT$callOrig
+ * of the base class, which is created dynamically by OTREDyn and never checked
+ * by any compiler.
+ */
+@SuppressWarnings("serial")
+public class SneakyException extends RuntimeException {
+	private Exception cause;
+
+	/** Wrap a given exception in an unchecked SneakyException. */
+	public SneakyException(Exception cause) {
+		this.cause = cause;
+	}
+
+	/** Re-throw the nested exception but hide it from the compiler. */
+	public void rethrow() {
+		SneakyException.<RuntimeException>sneakyThrow0(this.cause);
+	}
+
+	@SuppressWarnings("unchecked")
+    private static <T extends Exception> void sneakyThrow0(Exception t) throws T {
+	    throw (T)t;
+    }
+	
+	@Override
+	public String getMessage() {
+		return this.cause.getMessage();
+	}
+	
+	@Override
+	public void printStackTrace(PrintStream s) {
+		this.cause.printStackTrace(s);
+	}
+}
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/Team.java b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/Team.java
index 5a65333..f5176b0 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/Team.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/objectteams/Team.java
@@ -54,6 +54,8 @@
 	 * Internal field used by the runtime to install a lifting participant if one is configured.
 	 */
 	public static ILiftingParticipant _OT$liftingParticipant = null;
+	
+	private static ITeamManager teamManager; // callback into OTDRE, if set
 
 	/**
 	 * Default constructor for debugging purpose.
@@ -368,14 +370,20 @@
 
 	private void doRegistration() {
 		if (_OT$registrationState == _OT$UNREGISTERED) {
-			_OT$registerAtBases();
+			if (teamManager != null)
+				teamManager.handleTeamStateChange(this, ITeamManager.TeamStateChange.REGISTER);
+			else
+				_OT$registerAtBases();
 			_OT$registrationState = _OT$REGISTERED;
 		}
 	}
 
 	private void doUnregistration() {
 		if (_OT$registrationState == _OT$REGISTERED) {
-			_OT$unregisterFromBases();
+			if (teamManager != null)
+				teamManager.handleTeamStateChange(this, ITeamManager.TeamStateChange.UNREGISTER);
+			else
+				_OT$unregisterFromBases();
 			_OT$registrationState = _OT$UNREGISTERED;
 		}
 	}
@@ -517,4 +525,133 @@
 	 * for each role that has been retrieved and shall be re-registered for this team.
 	 */
 	protected void restoreRole(Class<?> clazz, Object role) { /* empty; implementation will be generated for each serializable sub-class. */ }
+	
+	// === BELOW THIS POINT: Methods used by the Object Teams Dynamic Runtime Environment, NOT API ===
+	
+	public static void registerTeamManager(ITeamManager teamManager) {
+		if (Team.teamManager != null) throw new IllegalStateException("team manager already defined.");
+		Team.teamManager = teamManager;
+	}
+
+	/**
+	 * This method is the first part of the new chaining wrapper.
+	 * It should be called from the generated client code.
+	 *
+	 * @param baze the current base object
+	 * @param teams the current team objects
+	 * @param idx the index of the current team in teams
+	 * @param callinIds an array of ids, that are unique in the team
+	 *                  for a base method in a base class
+	 * @param boundMethodId an unique id for a base method in the base class.
+	 *                      This id is needed for a base call.
+	 * @param args packed arguments.
+	 * @return possibly boxed result
+	 */
+	public Object _OT$callAllBindings(IBoundBase2 baze, ITeam[] teams,int idx,int[] callinIds, int boundMethodId, Object[] args)
+	{
+
+
+		this._OT$callBefore(baze, callinIds[idx], boundMethodId, args);
+
+		Object res = this._OT$callReplace(baze, teams, idx, callinIds, boundMethodId, args);
+
+		this._OT$callAfter(baze, callinIds[idx], boundMethodId, args, res); // make result available to param mappings!
+
+		return res;
+	}
+
+	/**
+	 * This method calls the next team or a base method,
+	 * if there are no more active teams for a joinpoint
+	 *
+	 * @param baze the current base object
+	 * @param teams the current base object
+	 * @param idx the index of the current team in teams, also points into callinIds, i.e., both lists run synchroneously.
+	 * @param callinIds an array of ids, that are unique in the team
+	 *                  for a base method in a base class
+	 * @param boundMethodId an unique id for a base method in the base class.
+	 *                      This id is needed for a base call.
+	 * @param args original packed arguments.
+	 * @param baseCallArgs packed arguments as provided to the base call.
+	 * @return possibly boxed result
+	 */
+	public Object _OT$callNext(IBoundBase2 baze, ITeam[] teams, int idx, int[] callinIds, int boundMethodId, Object[] args, Object[] baseCallArgs)
+	{
+		// Are there still active teams?
+		if (idx+1 < teams.length) {
+			// Yes, so call the next team/callin
+			return teams[idx+1]._OT$callAllBindings(baze, teams, idx+1, callinIds, boundMethodId, args);
+		} else {
+			//No, call the base method
+			if (baze == null) {
+				//handle base call to a static base method
+				return teams[idx]._OT$callOrigStatic(callinIds[idx], boundMethodId, args);
+			} else {
+				return baze._OT$callOrig(boundMethodId, args);
+			}
+		}
+	}
+
+	/**
+	 * Executes all before callins for a given callin id.
+	 * Must be overridden by a team, if the team gets replace callins.
+	 *
+	 * @param baze the current base object
+	 * @param callinId the current callin id
+	 * @param boundMethodId an unique id for a base method in the base class.
+	 *                      This id is needed for a base call.
+	 * @param args packed arguments.
+	 * @return possibly boxed result
+	 */
+	public void _OT$callBefore(IBoundBase2 baze, int callinId, int boundMethodId, Object[] args) {
+		// nop; override with code from before callin bindings.
+	}
+
+	/**
+	 * Executes all after callins for a given callin id.
+	 * Must be overridden by a team, if the team gets replace callins.
+	 *
+	 * @param baze the current base object
+	 * @param callinId the current callin id
+	 * @param boundMethodId an unique id for a base method in the base class.
+	 *                      This id is needed for a base call.
+	 * @param args packed arguments.
+	 * @param result the result of the base method. Could be used by after callins
+	 */
+	public void _OT$callAfter(IBoundBase2 baze, int callinId, int boundMethodId, Object[] args, Object result) {
+		// nop; override with code from after callin bindings.
+	}
+
+	/**
+	 * Execute replace callins of the team for the current callin id.
+	 * Must be overridden by a team, if the team has got replace callins.
+	 *
+	 * @param baze the current base object
+	 * @param teams the current base object
+	 * @param idx the index of the current team in teams
+	 * @param callinIds an array of ids, that are unique in the team
+	 *                  for a base method in a base class
+	 * @param boundMethodId an unique id for a base method in the base class.
+	 *                      This id is needed for a base call.
+	 * @param args packed arguments.
+	 * @return possibly boxed result
+	 */
+	public Object _OT$callReplace(IBoundBase2 baze, ITeam[] teams, int idx, int[] callinIds, int boundMethodId, Object[] args) {
+		// default; override with code from replace callin bindings.
+		return _OT$callNext(baze, teams, idx, callinIds, boundMethodId, args, null);
+	}
+
+	/**
+	 * Calls the method callOrigStatic of a concrete class dependend on the
+	 * given callin id.
+	 * Must be overridden in a team, if the team has got base calls
+	 * to static base methods
+	 * @param callinId
+	 * @param boundMethodId
+	 * @param args
+	 * @return
+	 */
+	public Object _OT$callOrigStatic(int callinId, int boundMethodId, Object[] args) {
+		return null;
+	}
 }
diff --git a/releng/map/otdt.map.in b/releng/map/otdt.map.in
index d1640db..501949a 100644
--- a/releng/map/otdt.map.in
+++ b/releng/map/otdt.map.in
@@ -19,6 +19,7 @@
 plugin@org.eclipse.objectteams.otdt.metrics,0.7.0=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=plugins/org.eclipse.objectteams.otdt.metrics,tag=builds/201101290806

 

 plugin@org.eclipse.objectteams.runtime=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=plugins/org.eclipse.objectteams.runtime

+plugin@org.eclipse.objectteams.otre=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=plugins/org.eclipse.objectteams.otre

 plugin@org.eclipse.objectteams.otredyn=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=plugins/org.eclipse.objectteams.otredyn

 !the following is also referenced in otdt.doc/buildDoc.xml (plugin-name without version):

 plugin@org.eclipse.objectteams.otequinox=GIT,repo=git://git.eclipse.org/gitroot/objectteams/org.eclipse.objectteams.git,path=plugins/org.eclipse.objectteams.otequinox