changeset 35:1ded1692e7e0

meth, indy-demo: update netbeans projects
author jrose
date Wed, 13 Jan 2010 23:26:51 -0800
parents 1317d1aa6fdf
children 1c7351d7192f
files netbeans/indy-demo/README.txt netbeans/indy-demo/nbproject/build-impl.xml netbeans/indy-demo/nbproject/genfiles.properties netbeans/indy-demo/nbproject/project.properties netbeans/meth/build.xml netbeans/meth/nbproject/build-impl.xml netbeans/meth/nbproject/genfiles.properties netbeans/meth/nbproject/project.properties netbeans/meth/test/jdk/java/dyn/MethodHandleBytecodeTest.java netbeans/meth/test/jdk/java/dyn/MethodHandleDemo.java netbeans/meth/test/jdk/java/dyn/MethodHandleSyntax.java netbeans/meth/test/jdk/java/dyn/MethodHandlesTest.java netbeans/meth/test/jdk/java/dyn/MethodTypeTest.java netbeans/meth/test/sun/dyn/util/ValueConversionsTest.java
diffstat 14 files changed, 745 insertions(+), 204 deletions(-) [+]
line wrap: on
line diff
--- a/netbeans/indy-demo/README.txt	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/indy-demo/README.txt	Wed Jan 13 23:26:51 2010 -0800
@@ -1,5 +1,5 @@
 To build this project, you will need an Da Vinci Machine Project build.
 This includes a JSR 292 aware javac from langtools, a libjvm from hotspot, and an rt.jar from jvm.
 
-To run this project, you will need the JVM option -XX:+EnableInvokeDynamic,
-and a JSR 292 capable JVM that understands it.
+To run this project, you will need the JVM options -XX:+UnlockExperimentalVMOptions
+and -XX:+EnableInvokeDynamic, and a JSR 292 capable JVM that understands them.
--- a/netbeans/indy-demo/nbproject/build-impl.xml	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/indy-demo/nbproject/build-impl.xml	Wed Jan 13 23:26:51 2010 -0800
@@ -20,6 +20,13 @@
 
         -->
 <project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="indy-demo-impl">
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
     <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
     <!-- 
                 ======================
@@ -85,21 +92,52 @@
   or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used) 
   </fail>
         <available file="${manifest.file}" property="manifest.available"/>
-        <condition property="manifest.available+main.class">
+        <condition property="main.class.available">
             <and>
-                <isset property="manifest.available"/>
                 <isset property="main.class"/>
                 <not>
                     <equals arg1="${main.class}" arg2="" trim="true"/>
                 </not>
             </and>
         </condition>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class.available"/>
+            </and>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
         <condition property="manifest.available+main.class+mkdist.available">
             <and>
                 <istrue value="${manifest.available+main.class}"/>
-                <isset property="libs.CopyLibs.classpath"/>
+                <isset property="do.mkdist"/>
             </and>
         </condition>
+        <condition property="manifest.available+mkdist.available">
+            <and>
+                <istrue value="${manifest.available}"/>
+                <isset property="do.mkdist"/>
+            </and>
+        </condition>
+        <condition property="manifest.available-mkdist.available">
+            <or>
+                <istrue value="${manifest.available}"/>
+                <isset property="do.mkdist"/>
+            </or>
+        </condition>
+        <condition property="manifest.available+main.class-mkdist.available">
+            <or>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="do.mkdist"/>
+            </or>
+        </condition>
         <condition property="have.tests">
             <or>
                 <available file="${test.src.dir}"/>
@@ -134,6 +172,7 @@
         <property name="javadoc.preview" value="true"/>
         <property name="application.args" value=""/>
         <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
         <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
             <and>
                 <isset property="javadoc.encoding"/>
@@ -149,11 +188,9 @@
         <condition property="do.depend.true">
             <istrue value="${do.depend}"/>
         </condition>
-        <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
-            <and>
-                <isset property="jaxws.endorsed.dir"/>
-                <available file="nbproject/jaxws-build.xml"/>
-            </and>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <length length="0" string="${endorsed.classpath}" when="greater"/>
         </condition>
     </target>
     <target name="-post-init">
@@ -189,14 +226,23 @@
             <attribute default="${includes}" name="includes"/>
             <attribute default="${excludes}" name="excludes"/>
             <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="/does/not/exist" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
             <element name="customize" optional="true"/>
             <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
                 <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
-                    <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
                     <customize/>
                 </javac>
             </sequential>
@@ -235,7 +281,7 @@
             <attribute default="${excludes}" name="excludes"/>
             <attribute default="**" name="testincludes"/>
             <sequential>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${platform.java}" showoutput="true">
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
                     <batchtest todir="${build.test.results.dir}">
                         <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
                             <filename name="@{testincludes}"/>
@@ -250,6 +296,7 @@
                     </syspropertyset>
                     <formatter type="brief" usefile="false"/>
                     <formatter type="xml"/>
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg line="${run.jvmargs}"/>
                 </junit>
             </sequential>
@@ -311,8 +358,11 @@
             <element name="customize" optional="true"/>
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true" jvm="${platform.java}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg line="${debug-args-line}"/>
                     <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
                         <path path="@{classpath}"/>
@@ -329,12 +379,16 @@
     <target name="-init-macrodef-java">
         <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
             <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
             <element name="customize" optional="true"/>
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true" jvm="${platform.java}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
-                        <path path="${run.classpath}"/>
+                        <path path="@{classpath}"/>
                     </classpath>
                     <syspropertyset>
                         <propertyref prefix="run-sys-prop."/>
@@ -358,7 +412,22 @@
                 COMPILATION SECTION
                 ===================
             -->
-    <target depends="init" name="deps-jar" unless="no.deps"/>
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: indy-demo was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
     <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
     <target depends="init" name="-check-automatic-build">
         <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
@@ -374,10 +443,15 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target if="do.depend.true" name="-compile-depend">
-        <j2seproject3:depend/>
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
     </target>
     <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
-        <j2seproject3:javac/>
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
         <copy todir="${build.classes.dir}">
             <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
         </copy>
@@ -394,7 +468,7 @@
     <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
         <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
         <j2seproject3:force-recompile/>
-        <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
     </target>
     <target name="-post-compile-single">
         <!-- Empty placeholder for easier customization. -->
@@ -414,10 +488,10 @@
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
         <j2seproject1:jar/>
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
         <j2seproject1:jar manifest="${manifest.file}"/>
     </target>
     <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
@@ -460,11 +534,53 @@
         <property location="${dist.jar}" name="dist.jar.resolved"/>
         <echo>${platform.java} -jar "${dist.jar.resolved}"</echo>
     </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+mkdist.available" name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist" name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+    </target>
     <target name="-post-jar">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar" description="Build JAR." name="jar"/>
     <!--
                 =================
                 EXECUTION SECTION
@@ -480,10 +596,14 @@
     <target name="-do-not-recompile">
         <property name="javac.includes.binary" value=""/>
     </target>
-    <target depends="init,-do-not-recompile,compile-single" name="run-single">
+    <target depends="init,compile-single" name="run-single">
         <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
         <j2seproject1:java classname="${run.class}"/>
     </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
     <!--
                 =================
                 DEBUGGING SECTION
@@ -492,6 +612,9 @@
     <target depends="init" if="netbeans.home" name="-debug-start-debugger">
         <j2seproject1:nbjpdastart name="${debug.class}"/>
     </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
     <target depends="init,compile" name="-debug-start-debuggee">
         <j2seproject3:debug>
             <customize>
@@ -508,7 +631,12 @@
         <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
         <j2seproject3:debug classname="${debug.class}"/>
     </target>
-    <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
     <target depends="init" name="-pre-debug-fix">
         <fail unless="fix.includes">Must set fix.includes</fail>
         <property name="javac.includes" value="${fix.includes}.java"/>
@@ -531,6 +659,9 @@
             <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
                 <filename name="**/*.java"/>
             </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
         </javadoc>
     </target>
     <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
@@ -592,7 +723,7 @@
         <j2seproject3:junit testincludes="**/*Test.java"/>
     </target>
     <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
-        <fail if="tests.failed">Some tests failed; see details above.</fail>
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
     </target>
     <target depends="init" if="have.tests" name="test-report"/>
     <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
@@ -605,9 +736,9 @@
         <j2seproject3:junit excludes="" includes="${test.includes}"/>
     </target>
     <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
-        <fail if="tests.failed">Some tests failed; see details above.</fail>
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
     </target>
-    <target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
     <!--
                 =======================
                 JUNIT DEBUGGING SECTION
@@ -634,7 +765,7 @@
     <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
         <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
     </target>
-    <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
     <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
         <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
     </target>
@@ -671,14 +802,45 @@
                 CLEANUP SECTION
                 ===============
             -->
-    <target depends="init" name="deps-clean" unless="no.deps"/>
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: indy-demo was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
-        <delete dir="${dist.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
     </target>
     <target name="-post-clean">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <not>
+                <isset property="already.built.${call.subproject}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
 </project>
--- a/netbeans/indy-demo/nbproject/genfiles.properties	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/indy-demo/nbproject/genfiles.properties	Wed Jan 13 23:26:51 2010 -0800
@@ -4,5 +4,5 @@
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
 nbproject/build-impl.xml.data.CRC32=3450aa5a
-nbproject/build-impl.xml.script.CRC32=1c86579e
-nbproject/build-impl.xml.stylesheet.CRC32=65b8de21
+nbproject/build-impl.xml.script.CRC32=348f9cb8
+nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45
--- a/netbeans/indy-demo/nbproject/project.properties	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/indy-demo/nbproject/project.properties	Wed Jan 13 23:26:51 2010 -0800
@@ -47,6 +47,7 @@
 javadoc.use=true
 javadoc.version=false
 javadoc.windowtitle=
+jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
 main.class=Main
 manifest.file=manifest.mf
 meta.inf.dir=${src.dir}/META-INF
--- a/netbeans/meth/build.xml	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/build.xml	Wed Jan 13 23:26:51 2010 -0800
@@ -18,9 +18,8 @@
 
     <target depends="init" name="-javadoc-build">
         <mkdir dir="${dist.javadoc.dir}"/>
-        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}"
+        <javadoc additionalparam="-verbose ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}"
          verbose="yes"
-         public="yes"
          >
             <classpath>
                 <path path="${javac.classpath}"/>
--- a/netbeans/meth/nbproject/build-impl.xml	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/nbproject/build-impl.xml	Wed Jan 13 23:26:51 2010 -0800
@@ -20,6 +20,13 @@
 
         -->
 <project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="meth-impl">
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
     <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
     <!-- 
                 ======================
@@ -85,21 +92,52 @@
   or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used) 
   </fail>
         <available file="${manifest.file}" property="manifest.available"/>
-        <condition property="manifest.available+main.class">
+        <condition property="main.class.available">
             <and>
-                <isset property="manifest.available"/>
                 <isset property="main.class"/>
                 <not>
                     <equals arg1="${main.class}" arg2="" trim="true"/>
                 </not>
             </and>
         </condition>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class.available"/>
+            </and>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
         <condition property="manifest.available+main.class+mkdist.available">
             <and>
                 <istrue value="${manifest.available+main.class}"/>
-                <isset property="libs.CopyLibs.classpath"/>
+                <isset property="do.mkdist"/>
             </and>
         </condition>
+        <condition property="manifest.available+mkdist.available">
+            <and>
+                <istrue value="${manifest.available}"/>
+                <isset property="do.mkdist"/>
+            </and>
+        </condition>
+        <condition property="manifest.available-mkdist.available">
+            <or>
+                <istrue value="${manifest.available}"/>
+                <isset property="do.mkdist"/>
+            </or>
+        </condition>
+        <condition property="manifest.available+main.class-mkdist.available">
+            <or>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="do.mkdist"/>
+            </or>
+        </condition>
         <condition property="have.tests">
             <or>
                 <available file="${test.src.dir}"/>
@@ -134,6 +172,7 @@
         <property name="javadoc.preview" value="true"/>
         <property name="application.args" value=""/>
         <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
         <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
             <and>
                 <isset property="javadoc.encoding"/>
@@ -149,11 +188,9 @@
         <condition property="do.depend.true">
             <istrue value="${do.depend}"/>
         </condition>
-        <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
-            <and>
-                <isset property="jaxws.endorsed.dir"/>
-                <available file="nbproject/jaxws-build.xml"/>
-            </and>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <length length="0" string="${endorsed.classpath}" when="greater"/>
         </condition>
     </target>
     <target name="-post-init">
@@ -189,14 +226,23 @@
             <attribute default="${includes}" name="includes"/>
             <attribute default="${excludes}" name="excludes"/>
             <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="/does/not/exist" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
             <element name="customize" optional="true"/>
             <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
                 <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
-                    <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
                     <customize/>
                 </javac>
             </sequential>
@@ -235,7 +281,7 @@
             <attribute default="${excludes}" name="excludes"/>
             <attribute default="**" name="testincludes"/>
             <sequential>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${platform.java}" showoutput="true">
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
                     <batchtest todir="${build.test.results.dir}">
                         <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
                             <filename name="@{testincludes}"/>
@@ -250,6 +296,7 @@
                     </syspropertyset>
                     <formatter type="brief" usefile="false"/>
                     <formatter type="xml"/>
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg line="${run.jvmargs}"/>
                 </junit>
             </sequential>
@@ -311,8 +358,11 @@
             <element name="customize" optional="true"/>
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true" jvm="${platform.java}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg line="${debug-args-line}"/>
                     <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
                         <path path="@{classpath}"/>
@@ -329,12 +379,16 @@
     <target name="-init-macrodef-java">
         <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
             <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
             <element name="customize" optional="true"/>
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true" jvm="${platform.java}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
-                        <path path="${run.classpath}"/>
+                        <path path="@{classpath}"/>
                     </classpath>
                     <syspropertyset>
                         <propertyref prefix="run-sys-prop."/>
@@ -358,7 +412,22 @@
                 COMPILATION SECTION
                 ===================
             -->
-    <target depends="init" name="deps-jar" unless="no.deps"/>
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: meth was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
     <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
     <target depends="init" name="-check-automatic-build">
         <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
@@ -374,10 +443,15 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target if="do.depend.true" name="-compile-depend">
-        <j2seproject3:depend/>
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.src.dir}:${build.generated.subdirs}"/>
     </target>
     <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
-        <j2seproject3:javac/>
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
         <copy todir="${build.classes.dir}">
             <fileset dir="${src.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
         </copy>
@@ -394,7 +468,7 @@
     <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
         <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
         <j2seproject3:force-recompile/>
-        <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.src.dir}"/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.src.dir}"/>
     </target>
     <target name="-post-compile-single">
         <!-- Empty placeholder for easier customization. -->
@@ -414,10 +488,10 @@
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
         <j2seproject1:jar/>
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
         <j2seproject1:jar manifest="${manifest.file}"/>
     </target>
     <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
@@ -460,11 +534,53 @@
         <property location="${dist.jar}" name="dist.jar.resolved"/>
         <echo>${platform.java} -jar "${dist.jar.resolved}"</echo>
     </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+mkdist.available" name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist" name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+    </target>
     <target name="-post-jar">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar" description="Build JAR." name="jar"/>
     <!--
                 =================
                 EXECUTION SECTION
@@ -480,10 +596,14 @@
     <target name="-do-not-recompile">
         <property name="javac.includes.binary" value=""/>
     </target>
-    <target depends="init,-do-not-recompile,compile-single" name="run-single">
+    <target depends="init,compile-single" name="run-single">
         <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
         <j2seproject1:java classname="${run.class}"/>
     </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
     <!--
                 =================
                 DEBUGGING SECTION
@@ -492,6 +612,9 @@
     <target depends="init" if="netbeans.home" name="-debug-start-debugger">
         <j2seproject1:nbjpdastart name="${debug.class}"/>
     </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
     <target depends="init,compile" name="-debug-start-debuggee">
         <j2seproject3:debug>
             <customize>
@@ -508,7 +631,12 @@
         <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
         <j2seproject3:debug classname="${debug.class}"/>
     </target>
-    <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
     <target depends="init" name="-pre-debug-fix">
         <fail unless="fix.includes">Must set fix.includes</fail>
         <property name="javac.includes" value="${fix.includes}.java"/>
@@ -531,6 +659,9 @@
             <fileset dir="${src.src.dir}" excludes="${excludes}" includes="${includes}">
                 <filename name="**/*.java"/>
             </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
         </javadoc>
     </target>
     <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
@@ -592,7 +723,7 @@
         <j2seproject3:junit testincludes="**/*Test.java"/>
     </target>
     <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
-        <fail if="tests.failed">Some tests failed; see details above.</fail>
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
     </target>
     <target depends="init" if="have.tests" name="test-report"/>
     <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
@@ -605,9 +736,9 @@
         <j2seproject3:junit excludes="" includes="${test.includes}"/>
     </target>
     <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
-        <fail if="tests.failed">Some tests failed; see details above.</fail>
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
     </target>
-    <target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
     <!--
                 =======================
                 JUNIT DEBUGGING SECTION
@@ -634,7 +765,7 @@
     <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
         <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
     </target>
-    <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
     <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
         <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
     </target>
@@ -671,14 +802,45 @@
                 CLEANUP SECTION
                 ===============
             -->
-    <target depends="init" name="deps-clean" unless="no.deps"/>
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: meth was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
-        <delete dir="${dist.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
     </target>
     <target name="-post-clean">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <not>
+                <isset property="already.built.${call.subproject}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
 </project>
--- a/netbeans/meth/nbproject/genfiles.properties	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/nbproject/genfiles.properties	Wed Jan 13 23:26:51 2010 -0800
@@ -1,5 +1,5 @@
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
 nbproject/build-impl.xml.data.CRC32=1b4417fc
-nbproject/build-impl.xml.script.CRC32=679313c0
-nbproject/build-impl.xml.stylesheet.CRC32=65b8de21
+nbproject/build-impl.xml.script.CRC32=cef958d5
+nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45
--- a/netbeans/meth/nbproject/project.properties	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/nbproject/project.properties	Wed Jan 13 23:26:51 2010 -0800
@@ -22,12 +22,14 @@
 dist.dir=dist
 dist.jar=${dist.dir}/meth.jar
 dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
 ####config.run.jvmargs=-XX:+EnableInvokeDynamic
 ####excludes=
 excludes=jdk/java/dyn/*Dynamic*
 #excludes=java/dyn/Anonymous*.java,java/dyn/*ConstantPool*.java,jdk/java/dyn/Anonymous*.java,links/**
 #file.reference.bsd-i586-classes=../davinci/sources/build/bsd-i586/classes
 file.reference.test-classes=build/test/classes
+file.reference.jdk-tests=${file.reference.davinci.sources.jdk}/test
 includes=java/dyn/**,jdk/java/dyn/**,sun/dyn/**
 #includes=**
 jar.compress=true
@@ -46,17 +48,20 @@
     ${javac.classpath}:\
     ${build.classes.dir}:\
     ${libs.junit_4.classpath}
-javadoc.additionalparam=
+javadoc.additionalparam=-protected
+#javadoc.access=protected
 javadoc.author=false
 javadoc.encoding=
 javadoc.noindex=true
 javadoc.nonavbar=true
 javadoc.notree=true
 javadoc.private=false
+#javadoc.private=false
 javadoc.splitindex=false
 javadoc.use=true
 javadoc.version=false
 javadoc.windowtitle=
+jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
 jnlp.codebase.type=local
 jnlp.codebase.url=file:/Users/jrose/Projects/meth/dist/
 jnlp.descriptor=application
@@ -100,6 +105,5 @@
 # e.g., ln -s ...davinci/sources/build/bsd-i586/j2sdk-image ~/env/JAVA7X_HOME
 #platforms.JDK_7X.home=${project.davinci}/sources/build/bsd-i586
 #project.davinci=${user.home}/Projects/davinci/j2sdk-image
-libs.junit_4.classpath=${user.home}/env/jars/junit-4.1.jar
+libs.junit_4.classpath=${user.home}/env/jars/junit-4.5.jar
 platform.java=${platforms.JDK_7X.home}/bin/java
-
--- a/netbeans/meth/test/jdk/java/dyn/MethodHandleBytecodeTest.java	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/test/jdk/java/dyn/MethodHandleBytecodeTest.java	Wed Jan 13 23:26:51 2010 -0800
@@ -59,7 +59,7 @@
     public void testToString() throws Throwable {
         System.out.println("invoke toString");
         MethodHandle instance = METHODS.findVirtual(
-                Object.class, "toString", MethodType.make(String.class) );
+                Object.class, "toString", MethodType.methodType(String.class) );
         String foo = "foo";
         String expResult = foo.toString();
         String result = invokeToString(instance, foo);
@@ -69,7 +69,7 @@
 
     private String invokeToString(MethodHandle mh, Object obj) throws Throwable {
         System.out.println("invoke mh="+mh);
-        return (String) MethodHandles.invoke(mh, obj);
+        return (String) mh.invokeGeneric(obj);
     }
 
     // Extra entry point for standalone use.  Use as follows:
--- a/netbeans/meth/test/jdk/java/dyn/MethodHandleDemo.java	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/test/jdk/java/dyn/MethodHandleDemo.java	Wed Jan 13 23:26:51 2010 -0800
@@ -74,19 +74,19 @@
         Lookup lookup = MethodHandles.lookup();
         MethodHandle mh;
         mh = lookup.findVirtual(Object.class,
-                "toString", MethodType.make(String.class));
+                "toString", MethodType.methodType(String.class));
         println("calling "+mh);
         result = mh.<String>invoke((Object)"foo");
         assertSame("foo", result);
 
         mh = lookup.findStatic(MethodHandleDemo.class,
-                "test0", MethodType.make(String.class));
+                "test0", MethodType.methodType(String.class));
         println("calling "+mh);
         result = mh.<String>invoke();
         assertEquals("[test0]", result);
 
         mh = lookup.findStatic(MethodHandleDemo.class,
-                "test1", MethodType.make(String.class, String.class));
+                "test1", MethodType.methodType(String.class, String.class));
         println("calling "+mh);
         result = mh.<String>invoke("X");
         assertEquals("[test1 X]", result);
@@ -97,7 +97,7 @@
         assertEquals("[test1 Bounderby]", result);
 
         mh = lookup.findStatic(MethodHandleDemo.class,
-                "test2", MethodType.make(String.class, String.class, int.class));
+                "test2", MethodType.methodType(String.class, String.class, int.class));
         println("calling "+mh);
         result = mh.<String>invoke("X", 123);
         assertEquals("[test2 X #123]", result);
@@ -109,13 +109,13 @@
 
         Obj obj = new Obj("X");
         mh = lookup.findVirtual(I.class,
-                "test1", MethodType.make(String.class));
+                "test1", MethodType.methodType(String.class));
         println("calling "+mh);
         result = mh.<String>invoke((I)obj);
         assertEquals("[Obj.test1 X]", result);
 
         mh = lookup.findVirtual(I.class,
-                "test2", MethodType.make(String.class, int.class));
+                "test2", MethodType.methodType(String.class, int.class));
         println("calling "+mh);
         result = mh.<String>invoke((I)obj, 123);
         assertEquals("[Obj.test2 X #123]", result);
--- a/netbeans/meth/test/jdk/java/dyn/MethodHandleSyntax.java	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/test/jdk/java/dyn/MethodHandleSyntax.java	Wed Jan 13 23:26:51 2010 -0800
@@ -34,7 +34,7 @@
     }
     static void test() throws Throwable {
         MethodHandle mh = MethodHandles.lookup().findVirtual(Object.class,
-                "toString", MethodType.make(String.class));
+                "toString", MethodType.methodType(String.class));
         System.out.println("calling "+mh);
         // The following non-comment line will fail unless an enhanced
         // javac.jar from JDK7 langtools is used to bulid this project.
--- a/netbeans/meth/test/jdk/java/dyn/MethodHandlesTest.java	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/test/jdk/java/dyn/MethodHandlesTest.java	Wed Jan 13 23:26:51 2010 -0800
@@ -1,23 +1,23 @@
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Sun designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Sun in the LICENSE file that accompanied this code.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  * CA 95054 USA or visit www.sun.com if you need additional information or
  * have any questions.
@@ -37,6 +37,7 @@
 import java.util.*;
 import org.junit.*;
 import static org.junit.Assert.*;
+import static org.junit.Assume.*;
 
 
 /**
@@ -85,7 +86,7 @@
     }
     @Test @Ignore("cannot collect leading primitive types")
     public void testFail_5() throws Throwable {
-        testInvokers(MethodType.makeGeneric(2).changeParameterType(0, int.class));
+        testInvokers(MethodType.genericMethodType(2).changeParameterType(0, int.class));
     }
     @Test @Ignore("should not insert arguments beyond MethodHandlePushLimit")
     public void testFail_6() throws Throwable {
@@ -96,6 +97,23 @@
     public MethodHandlesTest() {
     }
 
+    @Before
+    public void checkImplementedPlatform() {
+        boolean platformOK = false;
+        Properties properties = System.getProperties();
+        String vers = properties.getProperty("java.vm.version");
+        String name = properties.getProperty("java.vm.name");
+        String arch = properties.getProperty("os.arch");
+        if (arch.equals("i386") &&
+            (name.contains("Client") || name.contains("Server"))
+            ) {
+            platformOK = true;
+        } else {
+            System.err.println("Skipping tests for unsupported platform: "+Arrays.asList(vers, name, arch));
+        }
+        assumeTrue(platformOK);
+    }
+
     String testName;
     int posTests, negTests;
     @After
@@ -179,6 +197,10 @@
             return (float)(value);
         if (dst == double.class || dst == Double.class)
             return (double)(value);
+        if (dst == byte.class || dst == Byte.class)
+            return (byte)(value);
+        if (dst == boolean.class || dst == boolean.class)
+            return ((value % 29) & 1) == 0;
         return null;
     }
 
@@ -257,7 +279,7 @@
         end = Math.min(end, targetType.parameterCount());
         ArrayList<Class<?>> argTypes = new ArrayList<Class<?>>(targetType.parameterList());
         Collections.fill(argTypes.subList(beg, end), argType);
-        MethodType ttype2 = MethodType.make(targetType.returnType(), argTypes);
+        MethodType ttype2 = MethodType.methodType(targetType.returnType(), argTypes);
         return MethodHandles.convertArguments(target, ttype2);
     }
 
@@ -364,7 +386,7 @@
     }
     void testFindStatic(boolean positive, Lookup lookup, Class<?> defc, Class<?> ret, String name, Class<?>... params) throws Throwable {
         countTest(positive);
-        MethodType type = MethodType.make(ret, params);
+        MethodType type = MethodType.methodType(ret, params);
         MethodHandle target = null;
         RuntimeException noAccess = null;
         try {
@@ -383,7 +405,7 @@
         if (!DO_MORE_CALLS && lookup != PRIVATE)  return;
         Object[] args = randomArgs(params);
         printCalled(target, name, args);
-        MethodHandles.invokeVarargs(target, args);
+        target.invokeVarargs(args);
         assertCalled(name, args);
         System.out.print(':');
     }
@@ -426,7 +448,7 @@
     void testFindVirtual(boolean positive, Lookup lookup, Class<?> rcvc, Class<?> defc, Class<?> ret, String name, Class<?>... params) throws Throwable {
         countTest(positive);
         String methodName = name.substring(1 + name.indexOf('/'));  // foo/bar => foo
-        MethodType type = MethodType.make(ret, params);
+        MethodType type = MethodType.methodType(ret, params);
         MethodHandle target = null;
         RuntimeException noAccess = null;
         try {
@@ -441,7 +463,7 @@
         assertEquals(positive ? "positive test" : "negative test erroneously passed", positive, target != null);
         if (!positive)  return; // negative test failed as expected
         Class<?>[] paramsWithSelf = cat(array(Class[].class, (Class)defc), params);
-        MethodType typeWithSelf = MethodType.make(ret, paramsWithSelf);
+        MethodType typeWithSelf = MethodType.methodType(ret, paramsWithSelf);
         MethodType ttype = target.type();
         ttype = ttype.changeParameterType(0, defc); // FIXME: test this
         assertEquals(typeWithSelf, ttype);
@@ -450,7 +472,7 @@
         Object[] argsWithSelf = randomArgs(paramsWithSelf);
         if (rcvc != defc)  argsWithSelf[0] = randomArg(rcvc);
         printCalled(target, name, argsWithSelf);
-        MethodHandles.invokeVarargs(target, argsWithSelf);
+        target.invokeVarargs(argsWithSelf);
         assertCalled(name, argsWithSelf);
         System.out.print(':');
     }
@@ -472,7 +494,7 @@
     }
     void testFindSpecial(boolean positive, Lookup lookup, Class<?> defc, Class<?> ret, String name, Class<?>... params) throws Throwable {
         countTest(positive);
-        MethodType type = MethodType.make(ret, params);
+        MethodType type = MethodType.methodType(ret, params);
         MethodHandle target = null;
         RuntimeException noAccess = null;
         try {
@@ -487,7 +509,7 @@
         assertEquals(positive ? "positive test" : "negative test erroneously passed", positive, target != null);
         if (!positive)  return; // negative test failed as expected
         Class<?>[] paramsWithSelf = cat(array(Class[].class, (Class)defc), params);
-        MethodType typeWithSelf = MethodType.make(ret, paramsWithSelf);
+        MethodType typeWithSelf = MethodType.methodType(ret, paramsWithSelf);
         MethodType ttype = target.type();
         ttype = ttype.changeParameterType(0, defc); // FIXME: test this
         assertEquals(typeWithSelf, ttype);
@@ -495,7 +517,7 @@
         if (!DO_MORE_CALLS && lookup != PRIVATE)  return;
         Object[] args = randomArgs(paramsWithSelf);
         printCalled(target, name, args);
-        MethodHandles.invokeVarargs(target, args);
+        target.invokeVarargs(args);
         assertCalled(name, args);
         System.out.print(':');
     }
@@ -527,7 +549,7 @@
     void testBind(boolean positive, Lookup lookup, Class<?> defc, Class<?> ret, String name, Class<?>... params) throws Throwable {
         countTest(positive);
         String methodName = name.substring(1 + name.indexOf('/'));  // foo/bar => foo
-        MethodType type = MethodType.make(ret, params);
+        MethodType type = MethodType.methodType(ret, params);
         Object receiver = randomArg(defc);
         MethodHandle target = null;
         RuntimeException noAccess = null;
@@ -545,7 +567,7 @@
         assertEquals(type, target.type());
         Object[] args = randomArgs(params);
         printCalled(target, name, args);
-        MethodHandles.invokeVarargs(target, args);
+        target.invokeVarargs(args);
         Object[] argsWithReceiver = cat(array(Object[].class, receiver), args);
         assertCalled(name, argsWithReceiver);
         System.out.print(':');
@@ -583,7 +605,7 @@
     }
     void testUnreflect(boolean positive, Lookup lookup, Class<?> defc, boolean isStatic, Class<?> ret, String name, Class<?>... params) throws Throwable {
         countTest(positive);
-        MethodType type = MethodType.make(ret, params);
+        MethodType type = MethodType.methodType(ret, params);
         Method rmethod = null;
         MethodHandle target = null;
         RuntimeException noAccess = null;
@@ -608,14 +630,14 @@
         if (!isStatic) {
             paramsMaybeWithSelf = cat(array(Class[].class, (Class)defc), params);
         }
-        MethodType typeMaybeWithSelf = MethodType.make(ret, paramsMaybeWithSelf);
+        MethodType typeMaybeWithSelf = MethodType.methodType(ret, paramsMaybeWithSelf);
         MethodType ttype = target.type();
         if (!isStatic)
             ttype = ttype.changeParameterType(0, defc); // FIXME: test this
         assertEquals(typeMaybeWithSelf, ttype);
         Object[] argsMaybeWithSelf = randomArgs(paramsMaybeWithSelf);
         printCalled(target, name, argsMaybeWithSelf);
-        MethodHandles.invokeVarargs(target, argsMaybeWithSelf);
+        target.invokeVarargs(argsMaybeWithSelf);
         assertCalled(name, argsMaybeWithSelf);
         System.out.print(':');
     }
@@ -631,46 +653,238 @@
         fail("The test case is a prototype.");
     }
 
-    @Test @Ignore("unimplemented")
+    public static class HasFields {
+        boolean fZ = false;
+        byte fB = (byte)'B';
+        short fS = (short)'S';
+        char fC = 'C';
+        int fI = 'I';
+        long fJ = 'J';
+        float fF = 'F';
+        double fD = 'D';
+        static boolean sZ = true;
+        static byte sB = 1+(byte)'B';
+        static short sS = 1+(short)'S';
+        static char sC = 1+'C';
+        static int sI = 1+'I';
+        static long sJ = 1+'J';
+        static float sF = 1+'F';
+        static double sD = 1+'D';
+
+        Object fL = 'L';
+        String fR = "R";
+        static Object sL = 'M';
+        static String sR = "S";
+
+        static final Object[][] CASES;
+        static {
+            ArrayList<Object[]> cases = new ArrayList<Object[]>();
+            Object types[][] = {
+                {'L',Object.class}, {'R',String.class},
+                {'I',int.class}, {'J',long.class},
+                {'F',float.class}, {'D',double.class},
+                {'Z',boolean.class}, {'B',byte.class},
+                {'S',short.class}, {'C',char.class},
+            };
+            HasFields fields = new HasFields();
+            for (Object[] t : types) {
+                for (int kind = 0; kind <= 1; kind++) {
+                    boolean isStatic = (kind != 0);
+                    char btc = (Character)t[0];
+                    String name = (isStatic ? "s" : "f") + btc;
+                    Class<?> type = (Class<?>) t[1];
+                    Object value;
+                    Field field;
+                    try {
+                        field = HasFields.class.getDeclaredField(name);
+                    } catch (Exception ex) {
+                        throw new InternalError("no field HasFields."+name);
+                    }
+                    try {
+                        value = field.get(fields);
+                    } catch (Exception ex) {
+                        throw new InternalError("cannot fetch field HasFields."+name);
+                    }
+                    if (type == float.class) {
+                        float v = 'F';
+                        if (isStatic)  v++;
+                        assert(value.equals(v));
+                    }
+                    assert(name.equals(field.getName()));
+                    assert(type.equals(field.getType()));
+                    assert(isStatic == (Modifier.isStatic(field.getModifiers())));
+                    cases.add(new Object[]{ field, value });
+                }
+            }
+            CASES = cases.toArray(new Object[0][]);
+        }
+    }
+
+    @Test
     public void testUnreflectGetter() throws Throwable {
         Lookup lookup = PRIVATE;  // FIXME: test more lookups than this one
         startTest("unreflectGetter");
-        Field f = null;
-        MethodHandle expResult = null;
-        MethodHandle result = lookup.unreflectGetter(f);
-        assertEquals(expResult, result);
-        fail("The test case is a prototype.");
+        for (Object[] c : HasFields.CASES) {
+            Field f = (Field)c[0];
+            Object value = c[1];
+            Class<?> type = f.getType();
+            if (type.isPrimitive() && type != int.class)
+                continue;  //FIXME
+            testUnreflectGetter(lookup, f, type, value);
+        }
+    }
+    public void testUnreflectGetter(MethodHandles.Lookup lookup,
+            Field f, Class<?> type, Object value) throws Throwable {
+        countTest(true);
+        boolean isStatic = Modifier.isStatic(f.getModifiers());
+        MethodType expType = MethodType.methodType(type, HasFields.class);
+        if (isStatic)  expType = expType.dropParameterTypes(0, 1);
+        MethodHandle mh = lookup.unreflectGetter(f);
+        assertSame(mh.type(), expType);
+        assertEquals(mh.toString(), f.getName());
+        HasFields fields = new HasFields();
+        Object sawValue;
+        Class<?> rtype = type;
+        if (type != int.class)  rtype = Object.class;
+        mh = MethodHandles.convertArguments(mh, mh.type().generic().changeReturnType(rtype));
+        Object expValue = value;
+        for (int i = 0; i <= 1; i++) {
+            if (isStatic) {
+                if (type == int.class)
+                    sawValue = mh.<int>invoke();  // do these exactly
+                else
+                    sawValue = mh.invoke();
+            } else {
+                if (type == int.class)
+                    sawValue = mh.<int>invoke((Object) fields);
+                else
+                    sawValue = mh.invoke((Object) fields);
+            }
+            assertEquals(sawValue, expValue);
+            Object random = randomArg(type);
+            f.set(fields, random);
+            expValue = random;
+        }
+        f.set(fields, value);  // put it back
     }
 
-    @Test @Ignore("unimplemented")
+
+    @Test
     public void testUnreflectSetter() throws Throwable {
         Lookup lookup = PRIVATE;  // FIXME: test more lookups than this one
         startTest("unreflectSetter");
-        Field f = null;
-        MethodHandle expResult = null;
-        MethodHandle result = lookup.unreflectSetter(f);
-        assertEquals(expResult, result);
-        fail("The test case is a prototype.");
+        for (Object[] c : HasFields.CASES) {
+            Field f = (Field)c[0];
+            Object value = c[1];
+            Class<?> type = f.getType();
+            if (type.isPrimitive() && type != int.class)
+                continue;  //FIXME
+            testUnreflectSetter(lookup, f, type, value);
+        }
+    }
+    public void testUnreflectSetter(MethodHandles.Lookup lookup,
+            Field f, Class<?> type, Object value) throws Throwable {
+        countTest(true);
+        boolean isStatic = Modifier.isStatic(f.getModifiers());
+        MethodType expType = MethodType.methodType(void.class, HasFields.class, type);
+        if (isStatic)  expType = expType.dropParameterTypes(0, 1);
+        MethodHandle mh = lookup.unreflectSetter(f);
+        assertSame(mh.type(), expType);
+        assertEquals(mh.toString(), f.getName());
+        HasFields fields = new HasFields();
+        Object sawValue;
+        Class<?> vtype = type;
+        if (type != int.class)  vtype = Object.class;
+        int last = mh.type().parameterCount() - 1;
+        mh = MethodHandles.convertArguments(mh, mh.type().generic().changeReturnType(void.class).changeParameterType(last, vtype));
+        assertEquals(f.get(fields), value);  // clean to start with
+        for (int i = 0; i <= 1; i++) {
+            Object putValue = randomArg(type);
+            if (isStatic) {
+                if (type == int.class)
+                    mh.<void>invoke((int)(Integer)putValue);  // do these exactly
+                else
+                    mh.<void>invoke(putValue);
+            } else {
+                if (type == int.class)
+                    mh.<void>invoke((Object) fields, (int)(Integer)putValue);
+                else
+                    mh.<void>invoke((Object) fields, putValue);
+            }
+            assertEquals(f.get(fields), putValue);
+        }
+        f.set(fields, value);  // put it back
     }
 
-    @Test @Ignore("unimplemented")
+    @Test
     public void testArrayElementGetter() throws Throwable {
         startTest("arrayElementGetter");
-        Class<?> arrayClass = null;
-        MethodHandle expResult = null;
-        MethodHandle result = MethodHandles.arrayElementGetter(arrayClass);
-        assertEquals(expResult, result);
-        fail("The test case is a prototype.");
+        testArrayElementGetterSetter(new Object[10], false);
+        testArrayElementGetterSetter(new String[10], false);
+        testArrayElementGetterSetter(new int[10], false);
+        // FIXME: Do the other primitive types.
+        //testArrayElementGetterSetter(new float[10], false);
     }
 
-    @Test @Ignore("unimplemented")
+    @Test
     public void testArrayElementSetter() throws Throwable {
         startTest("arrayElementSetter");
-        Class<?> arrayClass = null;
-        MethodHandle expResult = null;
-        MethodHandle result = MethodHandles.arrayElementSetter(arrayClass);
-        assertEquals(expResult, result);
-        fail("The test case is a prototype.");
+        testArrayElementGetterSetter(new Object[10], true);
+        testArrayElementGetterSetter(new String[10], true);
+        testArrayElementGetterSetter(new int[10], true);
+        // FIXME: Do the other primitive types.
+        //testArrayElementGetterSetter(new float[10], true);
+    }
+
+    public void testArrayElementGetterSetter(Object array, boolean testSetter) throws Throwable {
+        countTest(true);
+        Class<?> arrayType = array.getClass();
+        Class<?> elemType = arrayType.getComponentType();
+        MethodType expType = !testSetter
+                ? MethodType.methodType(elemType,   arrayType, int.class)
+                : MethodType.methodType(void.class, arrayType, int.class, elemType);
+        MethodHandle mh = !testSetter
+                ? MethodHandles.arrayElementGetter(arrayType)
+                : MethodHandles.arrayElementSetter(arrayType);
+        assertSame(mh.type(), expType);
+        //assertEquals(mh.toString(), f.getName());
+        Object sawValue, expValue;
+        List<Object> model = array2list(array);
+        int length = Array.getLength(array);
+        for (int i = 0; i < length; i++) {
+            // update array element
+            Object random = randomArg(elemType);
+            model.set(i, random);
+            if (testSetter) {
+                if (elemType == int.class)
+                    mh.<void>invoke((int[]) array, i, (int)(Integer)random);
+                else
+                    mh.invokeGeneric(array, i, random);
+                assertEquals(model, array2list(array));
+            } else {
+                Array.set(array, i, random);
+
+            }
+            // observe array element
+            sawValue = Array.get(array, i);
+            if (!testSetter) {
+                expValue = sawValue;
+                if (elemType == int.class)
+                    sawValue = mh.<int>invoke((int[]) array, i);
+                else
+                    sawValue = mh.invokeGeneric(array, i);
+                assertEquals(sawValue, expValue);
+                assertEquals(model, array2list(array));
+            }
+        }
+    }
+
+    List<Object> array2list(Object array) {
+        int length = Array.getLength(array);
+        ArrayList<Object> model = new ArrayList<Object>(length);
+        for (int i = 0; i < length; i++)
+            model.add(Array.get(array, i));
+        return model;
     }
 
     static class Callee {
@@ -684,11 +898,11 @@
         }
         static MethodHandle ofType(Class<?> rtype, int n) {
             if (n == -1)
-                return ofType(MethodType.make(rtype, Object[].class));
-            return ofType(MethodType.makeGeneric(n).changeReturnType(rtype));
+                return ofType(MethodType.methodType(rtype, Object[].class));
+            return ofType(MethodType.genericMethodType(n).changeReturnType(rtype));
         }
         static MethodHandle ofType(Class<?> rtype, Class<?>... ptypes) {
-            return ofType(MethodType.make(rtype, ptypes));
+            return ofType(MethodType.methodType(rtype, ptypes));
         }
         static MethodHandle ofType(MethodType type) {
             Class<?> rtype = type.returnType();
@@ -722,7 +936,7 @@
             if (params[i] == null)  params[i] = idType.parameterType(i);
         }
         // simulate the pairwise conversion
-        MethodType newType = MethodType.make(rtype, params);
+        MethodType newType = MethodType.methodType(rtype, params);
         Object[] args = randomArgs(newType.parameterArray());
         Object[] convArgs = args.clone();
         for (int i = 0; i < args.length; i++) {
@@ -731,7 +945,7 @@
             if (src != dst)
                 convArgs[i] = castToWrapper(convArgs[i], dst);
         }
-        Object convResult = MethodHandles.invokeVarargs(id, convArgs);
+        Object convResult = id.invokeVarargs(convArgs);
         {
             Class<?> dst = newType.returnType();
             Class<?> src = idType.returnType();
@@ -753,7 +967,7 @@
         if (!positive)  return; // negative test failed as expected
         assertEquals(newType, target.type());
         printCalled(target, id.toString(), args);
-        Object result = MethodHandles.invokeVarargs(target, args);
+        Object result = target.invokeVarargs(args);
         assertCalled(name, convArgs);
         assertEquals(convResult, result);
         System.out.print(':');
@@ -870,11 +1084,11 @@
             System.out.println("in types:  "+Arrays.asList(types));
             System.out.println("out types: "+Arrays.asList(permTypes));
         }
-        MethodType inType  = MethodType.make(Object.class, types);
-        MethodType outType = MethodType.make(Object.class, permTypes);
+        MethodType inType  = MethodType.methodType(Object.class, types);
+        MethodType outType = MethodType.methodType(Object.class, permTypes);
         MethodHandle target = MethodHandles.convertArguments(ValueConversions.varargsList(outargs), outType);
         MethodHandle newTarget = MethodHandles.permuteArguments(target, inType, reorder);
-        Object result = MethodHandles.invokeVarargs(newTarget, args);
+        Object result = newTarget.invokeVarargs(args);
         Object expected = Arrays.asList(permArgs);
         assertEquals(expected, result);
     }
@@ -905,7 +1119,7 @@
         Object[] args = randomArgs(target2.type().parameterArray());
         // make sure the target does what we think it does:
         if (pos == 0 && nargs < 5) {
-            Object[] check = (Object[]) MethodHandles.invokeVarargs(target, args);
+            Object[] check = (Object[]) target.invokeVarargs(args);
             assertArrayEquals(args, check);
             switch (nargs) {
                 case 0:
@@ -927,7 +1141,7 @@
             List<Class<?>> spreadParams = newParams.subList(pos, nargs);
             spreadParams.clear(); spreadParams.add(Object[].class);
         }
-        MethodType newType = MethodType.make(Object.class, newParams);
+        MethodType newType = MethodType.methodType(Object.class, newParams);
         MethodHandle result = MethodHandles.spreadArguments(target2, newType);
         Object[] returnValue;
         if (pos == 0) {
@@ -935,7 +1149,7 @@
         } else {
             Object[] args1 = Arrays.copyOfRange(args, 0, pos+1);
             args1[pos] = Arrays.copyOfRange(args, pos, args.length);
-            returnValue = (Object[]) MethodHandles.invokeVarargs(result, args1);
+            returnValue = (Object[]) result.invokeVarargs(args1);
         }
         assertArrayEquals(args, returnValue);
     }
@@ -972,7 +1186,7 @@
         if (verbosity >= 2)
             System.out.println("collect from "+Arrays.asList(args)+" ["+pos+".."+nargs+"]");
         MethodHandle result = MethodHandles.collectArguments(target, newType);
-        Object[] returnValue = (Object[]) MethodHandles.invokeVarargs(result, args);
+        Object[] returnValue = (Object[]) result.invokeVarargs(args);
 //        assertTrue(returnValue.length == pos+1 && returnValue[pos] instanceof Object[]);
 //        returnValue[pos] = Arrays.asList((Object[]) returnValue[pos]);
 //        collectedArgs[pos] = Arrays.asList((Object[]) collectedArgs[pos]);
@@ -1005,7 +1219,7 @@
         MethodHandle target2 = MethodHandles.insertArguments(target, pos,
                 (Object[]) argsToInsert.toArray());
         argsToInsert.clear();  // remove from argsToInsert
-        Object res2 = MethodHandles.invokeVarargs(target2, argsToPass.toArray());
+        Object res2 = target2.invokeVarargs(argsToPass);
         Object res2List = Arrays.asList((Object[])res2);
         if (verbosity >= 2)
             System.out.println("result: "+res2List);
@@ -1040,7 +1254,7 @@
         Object[] filteredArgs = argsToPass.clone();
         filteredArgs[pos] = filter.invoke(filteredArgs[pos]);
         List<Object> expected = Arrays.asList(filteredArgs);
-        Object result = MethodHandles.invokeVarargs(target2, argsToPass);
+        Object result = target2.invokeVarargs(argsToPass);
         if (verbosity >= 2)
             System.out.println("result: "+result);
         if (!expected.equals(result))
@@ -1075,9 +1289,9 @@
         List<Object> argsToFold = expected.subList(pos, pos + fold);
         if (verbosity >= 2)
             System.out.println("fold: "+argsToFold+" into "+target2);
-        Object foldedArgs = MethodHandles.invokeVarargs(combine, argsToFold.toArray());
+        Object foldedArgs = combine.invokeVarargs(argsToFold);
         argsToFold.add(0, foldedArgs);
-        Object result = MethodHandles.invokeVarargs(target2, argsToPass.toArray());
+        Object result = target2.invokeVarargs(argsToPass);
         if (verbosity >= 2)
             System.out.println("result: "+result);
         if (!expected.equals(result))
@@ -1109,7 +1323,7 @@
         for (int i = drop; i > 0; i--) {
             argsToDrop.add(pos, "blort#"+i);
         }
-        Object res2 = MethodHandles.invokeVarargs(target2, argsToDrop.toArray());
+        Object res2 = target2.invokeVarargs(argsToDrop);
         Object res2List = Arrays.asList((Object[])res2);
         //if (!resList.equals(res2List))
         //    System.out.println("*** fail at n/p/d = "+nargs+"/"+pos+"/"+drop+": "+argsToDrop+" => "+res2List);
@@ -1123,7 +1337,7 @@
         // exactInvoker, genericInvoker, varargsInvoker[0..N], dynamicInvoker
         Set<MethodType> done = new HashSet<MethodType>();
         for (int i = 0; i <= 6; i++) {
-            MethodType gtype = MethodType.makeGeneric(i);
+            MethodType gtype = MethodType.genericMethodType(i);
             for (Class<?> argType : new Class[]{Object.class, Integer.class, int.class}) {
                 for (int j = -1; j < i; j++) {
                     MethodType type = gtype;
@@ -1150,7 +1364,7 @@
         int nargs = type.parameterCount();
         boolean testRetCode = type.returnType() != void.class;
         MethodHandle target = PRIVATE.findStatic(MethodHandlesTest.class, "invokee",
-                                MethodType.makeGeneric(0, true));
+                                MethodType.genericMethodType(0, true));
         target = MethodHandles.collectArguments(target, type);
         Object[] args = randomArgs(type.parameterArray());
         List<Object> targetPlusArgs = new ArrayList<Object>(Arrays.asList(args));
@@ -1165,7 +1379,7 @@
         countTest();
         calledLog.clear();
         inv = MethodHandles.exactInvoker(type);
-        result = MethodHandles.invokeVarargs(inv, targetPlusArgs.toArray());
+        result = inv.invokeVarargs(targetPlusArgs);
         if (testRetCode)  assertEquals(code, result);
         assertCalled("invokee", args);
         // generic invoker
@@ -1191,7 +1405,7 @@
             assertCalled("invokee", args);
         }
         calledLog.clear();
-        result = MethodHandles.invokeVarargs(inv, targetPlusArgs.toArray());
+        result = inv.invokeVarargs(targetPlusArgs);
         if (testRetCode)  assertEquals(code, result);
         assertCalled("invokee", args);
         // varargs invoker #0
@@ -1233,7 +1447,7 @@
             List<Object> tailList = targetPlusVarArgs.subList(1+k, 1+nargs);
             Object[] tail = tailList.toArray();
             tailList.clear(); tailList.add(tail);
-            result = MethodHandles.invokeVarargs(inv, targetPlusVarArgs.toArray());
+            result = inv.invokeVarargs(targetPlusVarArgs);
             if (testRetCode)  assertEquals(code, result);
             assertCalled("invokee", args);
         }
@@ -1243,7 +1457,7 @@
         inv = MethodHandles.dynamicInvoker(site);
         site.setTarget(target);
         calledLog.clear();
-        result = MethodHandles.invokeVarargs(inv, args);
+        result = inv.invokeVarargs(args);
         if (testRetCode)  assertEquals(code, result);
         assertCalled("invokee", args);
     }
@@ -1296,9 +1510,9 @@
     }
     void testGuardWithTest(int nargs, Class<?> argClass) throws Throwable {
         countTest();
-        MethodHandle test = PRIVATE.findVirtual(Object.class, "equals", MethodType.make(boolean.class, Object.class));
-        MethodHandle target = PRIVATE.findStatic(MethodHandlesTest.class, "targetIfEquals", MethodType.makeGeneric(nargs));
-        MethodHandle fallback = PRIVATE.findStatic(MethodHandlesTest.class, "fallbackIfNotEquals", MethodType.makeGeneric(nargs));
+        MethodHandle test = PRIVATE.findVirtual(Object.class, "equals", MethodType.methodType(boolean.class, Object.class));
+        MethodHandle target = PRIVATE.findStatic(MethodHandlesTest.class, "targetIfEquals", MethodType.genericMethodType(nargs));
+        MethodHandle fallback = PRIVATE.findStatic(MethodHandlesTest.class, "fallbackIfNotEquals", MethodType.genericMethodType(nargs));
         while (test.type().parameterCount() < nargs)
             test = MethodHandles.dropArguments(test, test.type().parameterCount()-1, Object.class);
         while (test.type().parameterCount() > nargs)
@@ -1327,7 +1541,7 @@
             String willCall = (equals ? "targetIfEquals" : "fallbackIfNotEquals");
             if (verbosity >= 2)
                 System.out.println(logEntry(willCall, argList));
-            Object result = MethodHandles.invokeVarargs(mh, argList);
+            Object result = mh.invokeVarargs(argList);
             assertCalled(willCall, argList);
         }
     }
@@ -1359,7 +1573,7 @@
         Class<? extends Throwable> exType = thrown.getClass();
         MethodHandle throwOrReturn
                 = PRIVATE.findStatic(MethodHandlesTest.class, "throwOrReturn",
-                    MethodType.make(Object.class, Object.class, Throwable.class));
+                    MethodType.methodType(Object.class, Object.class, Throwable.class));
         MethodHandle thrower = throwOrReturn;
         while (thrower.type().parameterCount() < nargs)
             thrower = MethodHandles.dropArguments(thrower, thrower.type().parameterCount(), Object.class);
@@ -1369,7 +1583,7 @@
         //System.out.println("catching with "+target+" : "+throwOrReturn);
         Object[] args = randomArgs(nargs, Object.class);
         args[1] = (throwIt ? thrown : null);
-        Object returned = MethodHandles.invokeVarargs(target, args);
+        Object returned = target.invokeVarargs(args);
         //System.out.println("return from "+target+" : "+returned);
         if (!throwIt) {
             assertSame(args[0], returned);
@@ -1394,11 +1608,11 @@
         Class<? extends Throwable> exType = thrown.getClass();
         MethodHandle target = MethodHandles.throwException(returnType, exType);
         //System.out.println("throwing with "+target+" : "+thrown);
-        MethodType expectedType = MethodType.make(returnType, exType);
+        MethodType expectedType = MethodType.methodType(returnType, exType);
         assertEquals(expectedType, target.type());
         Throwable caught = null;
         try {
-            Object res = MethodHandles.invokeVarargs(target, thrown);
+            Object res = target.invokeGeneric(thrown);
             fail("got "+res+" instead of throwing "+thrown);
         } catch (Throwable ex) {
             if (ex != thrown) {
@@ -1438,13 +1652,13 @@
         static int     intIdentity(int x)     { trace("int.x", x); return x; }
         static MethodHandle REF_IDENTITY = PRIVATE.findStatic(
                 Surprise.class, "refIdentity",
-                    MethodType.make(Object.class, Object.class));
+                    MethodType.methodType(Object.class, Object.class));
         static MethodHandle BOX_IDENTITY = PRIVATE.findStatic(
                 Surprise.class, "boxIdentity",
-                    MethodType.make(Integer.class, Integer.class));
+                    MethodType.methodType(Integer.class, Integer.class));
         static MethodHandle INT_IDENTITY = PRIVATE.findStatic(
                 Surprise.class, "intIdentity",
-                    MethodType.make(int.class, int.class));
+                    MethodType.methodType(int.class, int.class));
     }
 
     void testCastFailure(String mode, int okCount) throws Throwable {
@@ -1455,12 +1669,12 @@
         if (mode.endsWith("/return")) {
             if (mode.equals("unbox/return")) {
                 // fail on return to ((Integer)surprise).intValue
-                surprise = MethodHandles.convertArguments(surprise, MethodType.make(int.class, Object.class));
-                identity = MethodHandles.convertArguments(identity, MethodType.make(int.class, Object.class));
+                surprise = MethodHandles.convertArguments(surprise, MethodType.methodType(int.class, Object.class));
+                identity = MethodHandles.convertArguments(identity, MethodType.methodType(int.class, Object.class));
             } else if (mode.equals("cast/return")) {
                 // fail on return to (Integer)surprise
-                surprise = MethodHandles.convertArguments(surprise, MethodType.make(Integer.class, Object.class));
-                identity = MethodHandles.convertArguments(identity, MethodType.make(Integer.class, Object.class));
+                surprise = MethodHandles.convertArguments(surprise, MethodType.methodType(Integer.class, Object.class));
+                identity = MethodHandles.convertArguments(identity, MethodType.methodType(Integer.class, Object.class));
             }
         } else if (mode.endsWith("/argument")) {
             MethodHandle callee = null;
@@ -1472,14 +1686,14 @@
                 callee = Surprise.BOX_IDENTITY;
             }
             if (callee != null) {
-                callee = MethodHandles.convertArguments(callee, MethodType.makeGeneric(1));
+                callee = MethodHandles.convertArguments(callee, MethodType.genericMethodType(1));
                 surprise = MethodHandles.filterArguments(callee, surprise);
                 identity = MethodHandles.filterArguments(callee, identity);
             }
         }
         assertNotSame(mode, surprise, boo);
-        identity = MethodHandles.convertArguments(identity, MethodType.makeGeneric(1));
-        surprise = MethodHandles.convertArguments(surprise, MethodType.makeGeneric(1));
+        identity = MethodHandles.convertArguments(identity, MethodType.genericMethodType(1));
+        surprise = MethodHandles.convertArguments(surprise, MethodType.genericMethodType(1));
         Object x = 42;
         for (int i = 0; i < okCount; i++) {
             Object y = identity.invoke(x);
@@ -1546,7 +1760,7 @@
         MethodHandles.Lookup lookup = IMPL_LOOKUP;
         for (;;) {
             int nargs = arrays.size();
-            MethodType type = MethodType.makeGeneric(nargs).changeReturnType(Object[].class);
+            MethodType type = MethodType.genericMethodType(nargs).changeReturnType(Object[].class);
             String name = "array";
             MethodHandle array = null;
             try {
@@ -1607,7 +1821,7 @@
         MethodHandles.Lookup lookup = IMPL_LOOKUP;
         for (;;) {
             int nargs = arrays.size();
-            MethodType type = MethodType.makeGeneric(nargs).changeReturnType(List.class);
+            MethodType type = MethodType.genericMethodType(nargs).changeReturnType(List.class);
             String name = "list";
             MethodHandle array = null;
             try {
@@ -1639,4 +1853,3 @@
         return MethodHandles.lookup();
     }
 }
-
--- a/netbeans/meth/test/jdk/java/dyn/MethodTypeTest.java	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/test/jdk/java/dyn/MethodTypeTest.java	Wed Jan 13 23:26:51 2010 -0800
@@ -54,28 +54,28 @@
         rtype = void.class;
         ptypes = new Class<?>[] { int.class, String.class };
 
-        mt_viS = MethodType.make(void.class, int.class, String.class);
-        mt_OO2 = MethodType.make(Object.class, Object.class, Object.class);
-        mt_vv = MethodType.make(void.class);
-        mt_Vv = MethodType.make(Void.class);
-        mt_Ov = MethodType.make(Object.class);
-        mt_iSI = MethodType.make(int.class, String.class, Integer.class);
-        mt_ISi = MethodType.make(Integer.class, String.class, int.class);
-        mt_ISI = MethodType.make(Integer.class, String.class, Integer.class);
-        mt_iSi = MethodType.make(int.class, String.class, int.class);
+        mt_viS = MethodType.methodType(void.class, int.class, String.class);
+        mt_OO2 = MethodType.methodType(Object.class, Object.class, Object.class);
+        mt_vv = MethodType.methodType(void.class);
+        mt_Vv = MethodType.methodType(Void.class);
+        mt_Ov = MethodType.methodType(Object.class);
+        mt_iSI = MethodType.methodType(int.class, String.class, Integer.class);
+        mt_ISi = MethodType.methodType(Integer.class, String.class, int.class);
+        mt_ISI = MethodType.methodType(Integer.class, String.class, Integer.class);
+        mt_iSi = MethodType.methodType(int.class, String.class, int.class);
 
         compareTo = String.class.getDeclaredMethod("compareTo", String.class);
 
-        mt_viO = MethodType.make(void.class, int.class, Object.class);
-        mt_iO2 = MethodType.make(int.class, Object.class, Object.class);
-        mt_OOi = MethodType.make(Object.class, Object.class, int.class);
-        mt_iOi = MethodType.make(int.class, Object.class, int.class);
+        mt_viO = MethodType.methodType(void.class, int.class, Object.class);
+        mt_iO2 = MethodType.methodType(int.class, Object.class, Object.class);
+        mt_OOi = MethodType.methodType(Object.class, Object.class, int.class);
+        mt_iOi = MethodType.methodType(int.class, Object.class, int.class);
 
-        mt_VIO = MethodType.make(Void.class, Integer.class, Object.class);
-        mt_IO2 = MethodType.make(Integer.class, Object.class, Object.class);
-        mt_OOI = MethodType.make(Object.class, Object.class, Integer.class);
-        mt_IOI = MethodType.make(Integer.class, Object.class, Integer.class);
-        mt_VIS = MethodType.make(Void.class, Integer.class, String.class);
+        mt_VIO = MethodType.methodType(Void.class, Integer.class, Object.class);
+        mt_IO2 = MethodType.methodType(Integer.class, Object.class, Object.class);
+        mt_OOI = MethodType.methodType(Object.class, Object.class, Integer.class);
+        mt_IOI = MethodType.methodType(Integer.class, Object.class, Integer.class);
+        mt_VIS = MethodType.methodType(Void.class, Integer.class, String.class);
 
     }
 
@@ -89,8 +89,8 @@
     @Test
     public void testMake_Class_ClassArr() {
         System.out.println("make (from type array)");
-        MethodType result = MethodType.make(rtype, ptypes);
-        assertEquals(mt_viS, result);
+        MethodType result = MethodType.methodType(rtype, ptypes);
+        assertSame(mt_viS, result);
     }
 
     /**
@@ -99,8 +99,8 @@
     @Test
     public void testMake_Class_List() {
         System.out.println("make (from type list)");
-        MethodType result = MethodType.make(rtype, Arrays.asList(ptypes));
-        assertEquals(mt_viS, result);
+        MethodType result = MethodType.methodType(rtype, Arrays.asList(ptypes));
+        assertSame(mt_viS, result);
     }
 
     /**
@@ -109,8 +109,8 @@
     @Test
     public void testMake_3args() {
         System.out.println("make (from type with varargs)");
-        MethodType result = MethodType.make(rtype, ptypes[0], ptypes[1]);
-        assertEquals(mt_viS, result);
+        MethodType result = MethodType.methodType(rtype, ptypes[0], ptypes[1]);
+        assertSame(mt_viS, result);
     }
 
     /**
@@ -120,9 +120,9 @@
     public void testMake_Class() {
         System.out.println("make (from single type)");
         Class<?> rt = Integer.class;
-        MethodType expResult = MethodType.make(rt, new Class<?>[0]);
-        MethodType result = MethodType.make(rt);
-        assertEquals(expResult, result);
+        MethodType expResult = MethodType.methodType(rt, new Class<?>[0]);
+        MethodType result = MethodType.methodType(rt);
+        assertSame(expResult, result);
     }
 
     @Test
@@ -130,8 +130,8 @@
         System.out.println("makeGeneric");
         int objectArgCount = 2;
         MethodType expResult = mt_OO2;
-        MethodType result = MethodType.makeGeneric(objectArgCount);
-        assertEquals(expResult, result);
+        MethodType result = MethodType.genericMethodType(objectArgCount);
+        assertSame(expResult, result);
     }
 
     /**
@@ -140,10 +140,10 @@
     @Test
     public void testMake_Method() {
         System.out.println("make (via MemberName.getMethodType)");
-        MethodType expResult = MethodType.make(int.class, String.class);
+        MethodType expResult = MethodType.methodType(int.class, String.class);
         MemberName name = new MemberName(compareTo);
         MethodType result = name.getMethodType();
-        assertEquals(expResult, result);
+        assertSame(expResult, result);
     }
 
     /**
@@ -153,8 +153,8 @@
     public void testMake_MethodType() {
         System.out.println("make (from rtype, MethodType)");
         MethodType expResult = mt_iO2;
-        MethodType result = MethodType.make(int.class, mt_IO2);
-        assertEquals(expResult, result);
+        MethodType result = MethodType.methodType(int.class, mt_IO2);
+        assertSame(expResult, result);
     }
 
     /**
@@ -181,7 +181,7 @@
             String result = instance.toBytecodeString();
             assertEquals("#"+i, expResults[i], result);
             MethodType parsed = MethodType.fromBytecodeString(result, loader);
-            assertEquals("--#"+i, instance, parsed);
+            assertSame("--#"+i, instance, parsed);
         }
     }
     private static String concat(Object... parts) {
@@ -232,7 +232,7 @@
         MethodType[] expResults = {mt_viO, mt_OO2, mt_vv, mt_Ov, mt_iO2, mt_OOi, mt_OO2, mt_iOi};
         for (int i = 0; i < instances.length; i++) {
             MethodType result = instances[i].erase();
-            assertEquals("#"+i, expResults[i], result);
+            assertSame("#"+i, expResults[i], result);
         }
     }
 
@@ -243,7 +243,7 @@
         MethodType[] expResults = {mt_OO2, mt_OO2, mt_Ov, mt_Ov, mt_OO2, mt_OO2, mt_OO2, mt_OO2};
         for (int i = 0; i < instances.length; i++) {
             MethodType result = instances[i].generic();
-            assertEquals("#"+i, expResults[i], result);
+            assertSame("#"+i, expResults[i], result);
         }
     }
 
@@ -254,7 +254,7 @@
         MethodType[] expResults = {mt_VIS, mt_OO2, mt_Vv, mt_Ov, mt_ISI, mt_ISI, mt_ISI, mt_ISI};
         for (int i = 0; i < instances.length; i++) {
             MethodType result = instances[i].wrap();
-            assertEquals("#"+i, expResults[i], result);
+            assertSame("#"+i, expResults[i], result);
         }
     }
 
@@ -265,7 +265,7 @@
         MethodType[] expResults = {mt_viS, mt_OO2, mt_vv, mt_Ov, mt_iSi, mt_iSi, mt_iSi, mt_iSi};
         for (int i = 0; i < instances.length; i++) {
             MethodType result = instances[i].unwrap();
-            assertEquals("#"+i, expResults[i], result);
+            assertSame("#"+i, expResults[i], result);
         }
     }
 
@@ -279,7 +279,7 @@
             MethodType instance = mt_viS;
             Class<?> expResult = ptypes[num];
             Class<?> result = instance.parameterType(num);
-            assertEquals(expResult, result);
+            assertSame(expResult, result);
         }
     }
 
@@ -304,7 +304,7 @@
         MethodType instance = mt_viS;
         Class<?> expResult = void.class;
         Class<?> result = instance.returnType();
-        assertEquals(expResult, result);
+        assertSame(expResult, result);
     }
 
     /**
--- a/netbeans/meth/test/sun/dyn/util/ValueConversionsTest.java	Wed Nov 25 12:52:40 2009 -0800
+++ b/netbeans/meth/test/sun/dyn/util/ValueConversionsTest.java	Wed Jan 13 23:26:51 2010 -0800
@@ -243,7 +243,7 @@
             Object[] args = new Object[nargs];
             for (int i = 0; i < nargs; i++)
                 args[i] = "#"+i;
-            Object res = MethodHandles.invokeVarargs(target, args);
+            Object res = target.invokeVarargs(args);
             assertArrayEquals(args, (Object[])res);
         }
     }
@@ -256,7 +256,7 @@
             Object[] args = new Object[nargs];
             for (int i = 0; i < nargs; i++)
                 args[i] = "#"+i;
-            Object res = MethodHandles.invokeVarargs(target, args);
+            Object res = target.invokeVarargs(args);
             assertEquals(Arrays.asList(args), res);
         }
     }