am 7ffcb9bb: am dc680b49: Merge "Add access checks to Method and Field reflection."

* commit '7ffcb9bb366f058dfd9f53d4e15a12d3e5737b29':
  Add access checks to Method and Field reflection.
diff --git a/dalvik/src/main/java/dalvik/annotation/BrokenTest.java b/dalvik/src/main/java/dalvik/annotation/BrokenTest.java
index 401d652..16788d0 100644
--- a/dalvik/src/main/java/dalvik/annotation/BrokenTest.java
+++ b/dalvik/src/main/java/dalvik/annotation/BrokenTest.java
@@ -25,6 +25,8 @@
  * Marks a test case as broken. This means the test case should be fixed.
  *
  * @hide
+ *
+ * @deprecated - use expectations/brokentests.txt instead
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ ElementType.METHOD })
diff --git a/dalvik/src/main/java/dalvik/annotation/SideEffect.java b/dalvik/src/main/java/dalvik/annotation/SideEffect.java
index b92e9bc..2d691e3 100644
--- a/dalvik/src/main/java/dalvik/annotation/SideEffect.java
+++ b/dalvik/src/main/java/dalvik/annotation/SideEffect.java
@@ -27,6 +27,8 @@
  * isolated manner.
  *
  * @hide
+ *
+ * @deprecated - use expectations/brokentests.txt instead
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ ElementType.METHOD, ElementType.TYPE })
diff --git a/dex/src/main/java/com/android/dex/DexException.java b/dex/src/main/java/com/android/dex/DexException.java
index a30a46f..ee0af18 100644
--- a/dex/src/main/java/com/android/dex/DexException.java
+++ b/dex/src/main/java/com/android/dex/DexException.java
@@ -22,7 +22,7 @@
  * Thrown when there's a format problem reading, writing, or generally
  * processing a dex file.
  */
-public final class DexException extends ExceptionWithContext {
+public class DexException extends ExceptionWithContext {
     public DexException(String message) {
         super(message);
     }
diff --git a/dex/src/main/java/com/android/dex/DexIndexOverflowException.java b/dex/src/main/java/com/android/dex/DexIndexOverflowException.java
new file mode 100644
index 0000000..3226207
--- /dev/null
+++ b/dex/src/main/java/com/android/dex/DexIndexOverflowException.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dex;
+
+/**
+ * Thrown when there's an index overflow writing a dex file.
+ */
+public final class DexIndexOverflowException extends DexException {
+    public DexIndexOverflowException(String message) {
+        super(message);
+    }
+
+    public DexIndexOverflowException(Throwable cause) {
+        super(cause);
+    }
+}
diff --git a/expectations/brokentests.txt b/expectations/brokentests.txt
index 3412e1c..e722427 100644
--- a/expectations/brokentests.txt
+++ b/expectations/brokentests.txt
@@ -883,5 +883,71 @@
       "org.apache.harmony.tests.java.nio.channels.ServerSocketChannelTest#test_bind_explicitPort",
       "org.apache.harmony.tests.java.nio.channels.SocketChannelTest#testBind_ExplicitFreePort"
   ]
+},
+{
+  description: "Fails in CTS, passes in CoreTestRunner.",
+  result: EXEC_FAILED,
+  names: [
+      "org.apache.harmony.tests.java.net.URLConnection#test_getContentEncoding",
+      "libcore.java.text.OldNumberFormatTest#test_parseLjava_lang_String",
+      "libcore.java.nio.channels.OldSocketChannelTest#test_writeLjava_nio_ByteBuffer_Nonblocking_HugeData",
+      "org.apache.harmony.tests.java.lang.ProcessManagerTest#testSleep",
+      "libcore.java.security.cert.OldPKIXParametersTest#testPKIXParametersKeyStore04"
+  ]
+},
+{
+  description: "Suffers from DH slowness, disabling for now.",
+  result: EXEC_FAILED,
+  names: [
+      "libcore.java.security.OldDHTest#testDHGen",
+      "libcore.java.security.OldKeyPairGeneratorTestDH#testKeyPairGenerator",
+      "libcore.javax.crypto.spec.KeyPairGeneratorTestDH#testKeyPairGenerator",
+      "libcore.javax.crypto.spec.AlgorithmParametersTestDH#testAlgorithmParameters",
+      "libcore.javax.crypto.spec.AlgorithmParameterGeneratorTestDH#testAlgorithmParameterGenerator"
+  ]
+},
+{
+  description: "Destroys MD5 provider, hurts succeeding tests",
+  result: EXEC_FAILED,
+  names: [
+      "tests.api.javax.security.cert.X509CertificateTest#testVerifyPublicKey",
+      "tests.api.javax.security.cert.X509CertificateTest#testVerifyPublicKeyString"
+  ]
+},
+{
+  description: "Suffers from side effect of other, currently unknown test",
+  result: EXEC_FAILED,
+  names: [
+      "org.apache.harmony.luni.tests.internal.net.www.protocol.http.HttpURLConnectionTest#testProxyAuthorization"
+  ]
+},
+{
+  description: "Support_TestWebServer requires isolation.",
+  result: EXEC_FAILED,
+  names: [
+      "libcore.java.net.OldURLClassLoaderTest#test_findResourceLjava_lang_String"
+  ]
+},
+{
+  description: "This test affects tests that are run after this one due to caching in URLConnection.",
+  result: EXEC_FAILED,
+  names: [
+      "org.apache.harmony.luni.tests.java.net.ContentHandlerFactoryTest#test_createContentHandler"
+  ]
+},
+{
+  description: "Causes OutOfMemoryError to test finalization",
+  result: EXEC_FAILED,
+  names: [
+      "org.apache.harmony.tests.java.lang.ref.SoftReferenceTest#test_get_SoftReference",
+      "org.apache.harmony.crypto.tests.javax.crypto#ExemptionMechanismTest#test_finalize"
+  ]
+},
+{
+  description: "Causes open dex file error",
+  result: EXEC_FAILED,
+  names: [
+      "org.apache.harmony.tests.java.lang.reflect.GenericSignatureFormatErrorTest#test_signatureFormatError"
+  ]
 }
 ]
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessManagerTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessManagerTest.java
index 3930b59..9f7474a 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessManagerTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ProcessManagerTest.java
@@ -16,8 +16,6 @@
 
 package org.apache.harmony.tests.java.lang;
 
-import dalvik.annotation.BrokenTest;
-
 import junit.framework.TestCase;
 
 import java.io.BufferedReader;
@@ -47,7 +45,7 @@
         assertEquals(greeting, readLine(process));
     }
 
-    @BrokenTest("Sporadic failures in CTS, but not in CoreTestRunner")
+    // BrokenTest: Sporadic failures in CTS, but not in CoreTestRunner
     public void testSleep() throws IOException {
         String[] commands = { "sleep", "1" };
         process = Runtime.getRuntime().exec(commands, null, null);
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ref/SoftReferenceTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ref/SoftReferenceTest.java
index cfc5d0d..f66cbbf 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ref/SoftReferenceTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/ref/SoftReferenceTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.harmony.tests.java.lang.ref;
 
-import dalvik.annotation.SideEffect;
-
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
@@ -79,7 +77,7 @@
         assertTrue("Same object not returned.", bool == sr.get());
     }
 
-    @SideEffect("Causes OutOfMemoryError to test finalization")
+    // SideEffect: Causes OutOfMemoryError to test finalization
     public void test_get_SoftReference() {
 
         class TestObject {
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/reflect/GenericSignatureFormatErrorTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/reflect/GenericSignatureFormatErrorTest.java
index 9cd4947..0cad681 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/reflect/GenericSignatureFormatErrorTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/lang/reflect/GenericSignatureFormatErrorTest.java
@@ -1,7 +1,6 @@
 package org.apache.harmony.tests.java.lang.reflect;
 
 import dalvik.annotation.AndroidOnly;
-import dalvik.annotation.SideEffect;
 import dalvik.system.DexFile;
 
 import junit.framework.TestCase;
@@ -34,9 +33,9 @@
 
     @AndroidOnly("Uses Android specific class dalvik.system.DexFile " +
             "for loading classes.")
-    @SideEffect("strange issue (exception: 'could not open dex file', " +
-            "dalvikvm: 'waitpid failed' log msg  - only occurs when @SideEffect is removed " +
-            "and this test is run via running tests.luni.AllTestsLang TestSuite")
+    // SideEffect: strange issue (exception: 'could not open dex file', 
+    //  dalvikvm: 'waitpid failed' log msg  - only occurs when @SideEffect is removed 
+    // and this test is run via running tests.luni.AllTestsLang TestSuite
     public void test_signatureFormatError() throws Exception {
         /*
          * dex1.bytes is a jar file with a classes.dex in it.
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/javax/security/cert/X509CertificateTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/javax/security/cert/X509CertificateTest.java
index e937db9..64bfbb3 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/javax/security/cert/X509CertificateTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/javax/security/cert/X509CertificateTest.java
@@ -22,9 +22,6 @@
 
 package tests.api.javax.security.cert;
 
-import dalvik.annotation.BrokenTest;
-import dalvik.annotation.SideEffect;
-
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -661,7 +658,7 @@
      * @throws CertificateException
      * {@link Certificate#verify(PublicKey)}
      */
-    @SideEffect("Destroys MD5 provider, hurts succeeding tests")
+    // Side Effect: Destroys MD5 provider, hurts succeeding tests
     public void testVerifyPublicKey() throws InvalidKeyException,
             NoSuchAlgorithmException, NoSuchProviderException,
             SignatureException, CertificateException {
@@ -744,7 +741,7 @@
      * @throws CertificateException
      * {@link Certificate#verify(PublicKey, String)}
      */
-    @SideEffect("Destroys MD5 provider, hurts succeeding tests")
+    // SideEffect: Destroys MD5 provider, hurts succeeding tests
     public void testVerifyPublicKeyString() throws InvalidKeyException,
             java.security.cert.CertificateException, NoSuchAlgorithmException,
             NoSuchProviderException, SignatureException, IOException,
diff --git a/luni/src/main/java/java/lang/Character.java b/luni/src/main/java/java/lang/Character.java
index 2bf3a89..59931f6 100644
--- a/luni/src/main/java/java/lang/Character.java
+++ b/luni/src/main/java/java/lang/Character.java
@@ -1535,7 +1535,6 @@
      * don't have a corresponding {@code UnicodeScript} will be in {@code UNKNOWN}.
      *
      * @since 1.7
-     * @hide
      */
     public static enum UnicodeScript {
         /** ISO 15924 English name "Arabic" */
diff --git a/luni/src/main/java/java/net/SocketOption.java b/luni/src/main/java/java/net/SocketOption.java
index 3f65494..bc3e101 100644
--- a/luni/src/main/java/java/net/SocketOption.java
+++ b/luni/src/main/java/java/net/SocketOption.java
@@ -27,7 +27,6 @@
  *
  * @param <T> the type of the value
  * @since 1.7
- * @hide Until ready for a public API change
  */
 public interface SocketOption<T> {
 
diff --git a/luni/src/main/java/java/net/StandardSocketOptions.java b/luni/src/main/java/java/net/StandardSocketOptions.java
index 3d10caf..a793f66 100644
--- a/luni/src/main/java/java/net/StandardSocketOptions.java
+++ b/luni/src/main/java/java/net/StandardSocketOptions.java
@@ -32,7 +32,6 @@
  * for each type of socket.
  *
  * @since 1.7
- * @hide Until ready for a public API change
  */
 public final class StandardSocketOptions {
 
diff --git a/luni/src/main/java/java/net/URLConnection.java b/luni/src/main/java/java/net/URLConnection.java
index cc7de90..d24e273 100644
--- a/luni/src/main/java/java/net/URLConnection.java
+++ b/luni/src/main/java/java/net/URLConnection.java
@@ -320,7 +320,6 @@
      * {@code content-length} or {@code -1} if this field is not set.
      *
      * @since 1.7
-     * @hide Until ready for a public API change
      */
     public long getContentLengthLong() {
         return getHeaderFieldLong("Content-Length", -1);
@@ -568,7 +567,6 @@
      *            the default value if no field has been found.
      * @return the value of the specified header field as a number.
      * @since 1.7
-     * @hide Until ready for a public API change
      */
     public long getHeaderFieldLong(String field, long defaultValue) {
         try {
diff --git a/luni/src/main/java/java/nio/DatagramChannelImpl.java b/luni/src/main/java/java/nio/DatagramChannelImpl.java
index 883ffea..7c92d83 100644
--- a/luni/src/main/java/java/nio/DatagramChannelImpl.java
+++ b/luni/src/main/java/java/nio/DatagramChannelImpl.java
@@ -113,7 +113,6 @@
         return socket;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     synchronized public DatagramChannel bind(SocketAddress local) throws IOException {
         checkOpen();
@@ -161,21 +160,18 @@
         }
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     synchronized public SocketAddress getLocalAddress() throws IOException {
         checkOpen();
         return isBound ? new InetSocketAddress(localAddress, localPort) : null;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> T getOption(SocketOption<T> option) throws IOException {
         return NioUtils.getSocketOption(
                 this, StandardSocketOptions.DATAGRAM_SOCKET_OPTIONS, option);
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> DatagramChannel setOption(SocketOption<T> option, T value) throws IOException {
         checkOpen();
@@ -184,7 +180,6 @@
         return this;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public Set<SocketOption<?>> supportedOptions() {
         return StandardSocketOptions.DATAGRAM_SOCKET_OPTIONS;
diff --git a/luni/src/main/java/java/nio/ServerSocketChannelImpl.java b/luni/src/main/java/java/nio/ServerSocketChannelImpl.java
index 5adea1a..7a9ba7a 100644
--- a/luni/src/main/java/java/nio/ServerSocketChannelImpl.java
+++ b/luni/src/main/java/java/nio/ServerSocketChannelImpl.java
@@ -59,7 +59,6 @@
         return socket;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public final ServerSocketChannel bind(SocketAddress localAddr, int backlog) throws IOException {
         if (!isOpen()) {
@@ -82,7 +81,6 @@
         return this;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public SocketAddress getLocalAddress() throws IOException {
         if (!isOpen()) {
@@ -91,20 +89,17 @@
         return socket.getLocalSocketAddress();
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> T getOption(SocketOption<T> option) throws IOException {
         return NioUtils.getSocketOption(this, StandardSocketOptions.SERVER_SOCKET_OPTIONS, option);
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> ServerSocketChannel setOption(SocketOption<T> option, T value) throws IOException {
         NioUtils.setSocketOption(this, StandardSocketOptions.SERVER_SOCKET_OPTIONS, option, value);
         return this;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public Set<SocketOption<?>> supportedOptions() {
         return StandardSocketOptions.SERVER_SOCKET_OPTIONS;
diff --git a/luni/src/main/java/java/nio/SocketChannelImpl.java b/luni/src/main/java/java/nio/SocketChannelImpl.java
index d1e77d6..d7cd562 100644
--- a/luni/src/main/java/java/nio/SocketChannelImpl.java
+++ b/luni/src/main/java/java/nio/SocketChannelImpl.java
@@ -140,7 +140,6 @@
         return socket;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     synchronized public final SocketChannel bind(SocketAddress local) throws IOException {
         if (!isOpen()) {
@@ -190,7 +189,6 @@
         }
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     synchronized public SocketAddress getLocalAddress() throws IOException {
         if (!isOpen()) {
@@ -199,20 +197,17 @@
         return isBound ? new InetSocketAddress(localAddress, localPort) : null;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> T getOption(SocketOption<T> option) throws IOException {
         return NioUtils.getSocketOption(this, StandardSocketOptions.SOCKET_OPTIONS, option);
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> SocketChannel setOption(SocketOption<T> option, T value) throws IOException {
         NioUtils.setSocketOption(this, StandardSocketOptions.SOCKET_OPTIONS, option, value);
         return this;
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public Set<SocketOption<?>> supportedOptions() {
         return StandardSocketOptions.SOCKET_OPTIONS;
diff --git a/luni/src/main/java/java/nio/channels/AlreadyBoundException.java b/luni/src/main/java/java/nio/channels/AlreadyBoundException.java
index 0a35fc3..70c70ac 100644
--- a/luni/src/main/java/java/nio/channels/AlreadyBoundException.java
+++ b/luni/src/main/java/java/nio/channels/AlreadyBoundException.java
@@ -19,8 +19,6 @@
 /**
  * An {@code AlreadyBoundException} is thrown when an attempt is made to bind a NetworkChannel that
  * is already bound.
- *
- * @hide Until ready for a public API change
  */
 public class AlreadyBoundException extends IllegalStateException {
 
diff --git a/luni/src/main/java/java/nio/channels/DatagramChannel.java b/luni/src/main/java/java/nio/channels/DatagramChannel.java
index 3a5d1cc..ca43e99 100644
--- a/luni/src/main/java/java/nio/channels/DatagramChannel.java
+++ b/luni/src/main/java/java/nio/channels/DatagramChannel.java
@@ -92,7 +92,6 @@
      */
     public abstract DatagramSocket socket();
 
-    /** @hide Until ready for a public API change */
     @Override
     public DatagramChannel bind(SocketAddress local) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -100,7 +99,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public SocketAddress getLocalAddress() throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -108,7 +106,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> T getOption(SocketOption<T> option) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -116,7 +113,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> DatagramChannel setOption(SocketOption<T> option, T value) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -124,7 +120,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public Set<SocketOption<?>> supportedOptions() {
         // This method was added for interoperability with Java 7, where it is abstract. It is
diff --git a/luni/src/main/java/java/nio/channels/FileChannel.java b/luni/src/main/java/java/nio/channels/FileChannel.java
index e5f2862c..3989167 100644
--- a/luni/src/main/java/java/nio/channels/FileChannel.java
+++ b/luni/src/main/java/java/nio/channels/FileChannel.java
@@ -76,9 +76,8 @@
  * stream and vice versa; this includes modifications to the file position,
  * content, size, etc.
  */
-// TODO: Remove ByteChannel when SeekableByteChannel is unhidden.
 public abstract class FileChannel extends AbstractInterruptibleChannel
-        implements GatheringByteChannel, ScatteringByteChannel, ByteChannel, SeekableByteChannel {
+        implements GatheringByteChannel, ScatteringByteChannel, SeekableByteChannel {
 
     /**
      * {@code MapMode} defines file mapping mode constants.
diff --git a/luni/src/main/java/java/nio/channels/NetworkChannel.java b/luni/src/main/java/java/nio/channels/NetworkChannel.java
index 9b46e30..3ae1e6b 100644
--- a/luni/src/main/java/java/nio/channels/NetworkChannel.java
+++ b/luni/src/main/java/java/nio/channels/NetworkChannel.java
@@ -26,7 +26,6 @@
  * A common interface for channels that are backed by network sockets.
  *
  * @since 1.7
- * @hide Until ready for a public API change
  */
 public interface NetworkChannel extends AutoCloseable, Channel, Closeable {
 
@@ -46,7 +45,6 @@
    *     if the channel is already bound.
    * @throws IOException
    *     if another I/O error occurs.
-   * @hide Until ready for a public API change
    */
   NetworkChannel bind(SocketAddress local) throws IOException;
 
@@ -64,7 +62,6 @@
    *     if the channel is closed.
    * @throws IOException
    *     if another I/O error occurs.
-   * @hide Until ready for a public API change
    */
   SocketAddress getLocalAddress() throws IOException;
 
@@ -77,7 +74,6 @@
    *     if the socket is closed
    * @throws IOException
    *     if the value cannot be read.
-   * @hide Until ready for a public API change
    * @see java.net.StandardSocketOptions
    */
   <T> T getOption(SocketOption<T> option) throws IOException;
@@ -94,15 +90,12 @@
    *     if the socket is closed
    * @throws IOException
    *     if the value cannot be written.
-   * @hide Until ready for a public API change
    * @see java.net.StandardSocketOptions
    */
   <T> NetworkChannel setOption(SocketOption<T> option, T value) throws IOException;
 
   /**
    * Returns the set of socket options supported by this channel.
-   *
-   * @hide Until ready for a public API change
    */
   Set<SocketOption<?>> supportedOptions();
 }
diff --git a/luni/src/main/java/java/nio/channels/SeekableByteChannel.java b/luni/src/main/java/java/nio/channels/SeekableByteChannel.java
index f4d6beb..da4671d 100644
--- a/luni/src/main/java/java/nio/channels/SeekableByteChannel.java
+++ b/luni/src/main/java/java/nio/channels/SeekableByteChannel.java
@@ -33,7 +33,6 @@
  * {@link #truncate}, {@link #position} and {@link #write} for details. The current size can also
  * be queried.
  *
- * @hide Until ready for a public API change
  * @since 1.7
  */
 public interface SeekableByteChannel extends ByteChannel {
diff --git a/luni/src/main/java/java/nio/channels/ServerSocketChannel.java b/luni/src/main/java/java/nio/channels/ServerSocketChannel.java
index c720451..790344b 100644
--- a/luni/src/main/java/java/nio/channels/ServerSocketChannel.java
+++ b/luni/src/main/java/java/nio/channels/ServerSocketChannel.java
@@ -89,7 +89,6 @@
      * {@inheritDoc}
      *
      * <p>This is equivalent to {@code bind(local, 0)}.
-     * @hide Until ready for a public API change
      */
     @Override
     public final ServerSocketChannel bind(SocketAddress local) throws IOException {
@@ -115,7 +114,6 @@
      * @throws IOException
      *             if another I/O error occurs.
      * @since 1.7
-     * @hide Until ready for a public API change
      */
     public ServerSocketChannel bind(SocketAddress localAddr, int backlog) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -123,15 +121,13 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
-     @Override
+    @Override
     public SocketAddress getLocalAddress() throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
         // concrete here to avoid breaking existing Android applications that extend this class.
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> T getOption(SocketOption<T> option) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -139,7 +135,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> ServerSocketChannel setOption(SocketOption<T> option, T value) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -147,7 +142,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public Set<SocketOption<?>> supportedOptions() {
         // This method was added for interoperability with Java 7, where it is abstract. It is
diff --git a/luni/src/main/java/java/nio/channels/SocketChannel.java b/luni/src/main/java/java/nio/channels/SocketChannel.java
index a6d1551..e96c6a1 100644
--- a/luni/src/main/java/java/nio/channels/SocketChannel.java
+++ b/luni/src/main/java/java/nio/channels/SocketChannel.java
@@ -142,7 +142,6 @@
      */
     public abstract Socket socket();
 
-    /** @hide Until ready for a public API change */
     @Override
     public SocketChannel bind(SocketAddress local) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -150,7 +149,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public SocketAddress getLocalAddress() throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -158,7 +156,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> T getOption(SocketOption<T> option) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -166,7 +163,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public <T> SocketChannel setOption(SocketOption<T> option, T value) throws IOException {
         // This method was added for interoperability with Java 7, where it is abstract. It is
@@ -174,7 +170,6 @@
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-    /** @hide Until ready for a public API change */
     @Override
     public Set<SocketOption<?>> supportedOptions() {
         // This method was added for interoperability with Java 7, where it is abstract. It is
diff --git a/luni/src/main/java/java/util/IllformedLocaleException.java b/luni/src/main/java/java/util/IllformedLocaleException.java
index db1754e..3dec1cd 100644
--- a/luni/src/main/java/java/util/IllformedLocaleException.java
+++ b/luni/src/main/java/java/util/IllformedLocaleException.java
@@ -21,7 +21,6 @@
  *
  * See {@link Locale} and {@link Locale.Builder}.
  *
- * @hide
  * @since 1.7
  */
 public class IllformedLocaleException extends RuntimeException {
diff --git a/luni/src/main/java/java/util/Locale.java b/luni/src/main/java/java/util/Locale.java
index 885d150..428bede 100644
--- a/luni/src/main/java/java/util/Locale.java
+++ b/luni/src/main/java/java/util/Locale.java
@@ -249,7 +249,6 @@
      *
      * See {@link #getExtension(char)} and {@link Builder#setExtension(char, String)}.
      *
-     * @hide
      * @since 1.7
      */
     public static final char PRIVATE_USE_EXTENSION = 'x';
@@ -260,7 +259,6 @@
      *
      * See {@link #getExtension(char)} and {@link Builder#setExtension(char, String)}.
      *
-     * @hide
      * @since 1.7
      */
     public static final char UNICODE_LOCALE_EXTENSION = 'u';
@@ -293,7 +291,6 @@
      * the structured state (keywords and attributes) specified therein.
      *
      * @since 1.7
-     * @hide
      */
     public static final class Builder {
         private String language;
@@ -773,7 +770,6 @@
      *
      * @throws NullPointerException if {@code languageTag} is {@code null}.
      *
-     * @hide
      * @since 1.7
      */
     public static Locale forLanguageTag(String languageTag) {
@@ -1177,7 +1173,6 @@
      * If set, the script code will be a title cased string of length 4, as per the ISO 15924
      * specification.
      *
-     * @hide
      * @since 1.7
      */
     public String getScript() {
@@ -1187,7 +1182,6 @@
     /**
      * Equivalent to {@code getDisplayScript(Locale.getDefault()))}
      *
-     * @hide
      * @since 1.7
      */
     public String getDisplayScript() {
@@ -1199,7 +1193,6 @@
      * script code is unknown, the return value of this method is the same as that of
      * {@link #getScript()}.
      *
-     * @hide
      * @since 1.7
      */
     public String getDisplayScript(Locale locale) {
@@ -1236,7 +1229,6 @@
      * For example, we do not require scripts to be a registered ISO 15924 scripts or
      * languages to appear in the ISO-639-2 code list.
      *
-     * @hide
      * @since 1.7
      */
     public String toLanguageTag() {
@@ -1253,7 +1245,6 @@
      * See <a href="https://tools.ietf.org/html/bcp47#section-2.1">
      *     the IETF BCP-47 specification</a> (Section 2.2.6) for details.
      *
-     * @hide
      * @since 1.7
      */
     public Set<Character> getExtensionKeys() {
@@ -1268,7 +1259,6 @@
      * locale extension can be fetched using {@link #getUnicodeLocaleAttributes()},
      * {@link #getUnicodeLocaleKeys()}  and {@link #getUnicodeLocaleType}.
      *
-     * @hide
      * @since 1.7
      */
     public String getExtension(char extensionKey) {
@@ -1281,7 +1271,6 @@
      * For more information about types and keywords, see {@link Builder#setUnicodeLocaleKeyword}
      * and <a href="http://www.unicode.org/reports/tr35/#BCP47">Unicode Technical Standard #35</a>
      *
-     * @hide
      * @since 1.7
      */
     public String getUnicodeLocaleType(String keyWord) {
@@ -1294,7 +1283,6 @@
      * For more information about attributes, see {@link Builder#addUnicodeLocaleAttribute}
      * and <a href="http://www.unicode.org/reports/tr35/#BCP47">Unicode Technical Standard #35</a>
      *
-     * @hide
      * @since 1.7
      */
     public Set<String> getUnicodeLocaleAttributes() {
@@ -1307,7 +1295,6 @@
      * For more information about types and keywords, see {@link Builder#setUnicodeLocaleKeyword}
      * and <a href="http://www.unicode.org/reports/tr35/#BCP47">Unicode Technical Standard #35</a>
      *
-     * @hide
      * @since 1.7
      */
     public Set<String> getUnicodeLocaleKeys() {
diff --git a/luni/src/main/java/java/util/concurrent/ConcurrentLinkedDeque.java b/luni/src/main/java/java/util/concurrent/ConcurrentLinkedDeque.java
index 54b53ae..b38d6a5 100644
--- a/luni/src/main/java/java/util/concurrent/ConcurrentLinkedDeque.java
+++ b/luni/src/main/java/java/util/concurrent/ConcurrentLinkedDeque.java
@@ -56,8 +56,6 @@
  * actions subsequent to the access or removal of that element from
  * the {@code ConcurrentLinkedDeque} in another thread.
  *
- * @hide
- *
  * @since 1.7
  * @author Doug Lea
  * @author Martin Buchholz
diff --git a/luni/src/main/java/java/util/concurrent/ForkJoinPool.java b/luni/src/main/java/java/util/concurrent/ForkJoinPool.java
index 5ac01c8..9448616 100644
--- a/luni/src/main/java/java/util/concurrent/ForkJoinPool.java
+++ b/luni/src/main/java/java/util/concurrent/ForkJoinPool.java
@@ -39,7 +39,7 @@
  * ForkJoinPool}s may also be appropriate for use with event-style
  * tasks that are never joined.
  *
- * <p>A static {@link #commonPool()} is available and appropriate for
+ * <p>A static {@code commonPool()} is available and appropriate for
  * most applications. The common pool is used by any ForkJoinTask that
  * is not explicitly submitted to a specified pool. Using the common
  * pool normally reduces resource usage (its threads are slowly
@@ -127,7 +127,6 @@
  * or internal resources have been exhausted.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public class ForkJoinPool extends AbstractExecutorService {
@@ -213,8 +212,7 @@
      * choosing existing queues, and may be randomly repositioned upon
      * contention with other submitters.  In essence, submitters act
      * like workers except that they are restricted to executing local
-     * tasks that they submitted (or in the case of CountedCompleters,
-     * others with the same root task).  However, because most
+     * tasks that they submitted. However, because most
      * shared/external queue operations are more expensive than
      * internal, and because, at steady state, external submitters
      * will compete for CPU with workers, ForkJoinTask.join and
@@ -419,12 +417,6 @@
      * to find work (see MAX_HELP) and fall back to suspending the
      * worker and if necessary replacing it with another.
      *
-     * Helping actions for CountedCompleters are much simpler: Method
-     * helpComplete can take and execute any task with the same root
-     * as the task being waited on. However, this still entails some
-     * traversal of completer chains, so is less efficient than using
-     * CountedCompleters without explicit joins.
-     *
      * It is impossible to keep exactly the target parallelism number
      * of threads running at any given time.  Determining the
      * existence of conservatively safe helping targets, the
@@ -2907,7 +2899,7 @@
      * Possibly initiates an orderly shutdown in which previously
      * submitted tasks are executed, but no new tasks will be
      * accepted. Invocation has no effect on execution state if this
-     * is the {@link #commonPool()}, and no additional effect if
+     * is the {@code commonPool()}, and no additional effect if
      * already shut down.  Tasks that are in the process of being
      * submitted concurrently during the course of this method may or
      * may not be rejected.
@@ -2920,7 +2912,7 @@
     /**
      * Possibly attempts to cancel and/or stop all tasks, and reject
      * all subsequently submitted tasks.  Invocation has no effect on
-     * execution state if this is the {@link #commonPool()}, and no
+     * execution state if this is the {@code commonPool()}, and no
      * additional effect if already shut down. Otherwise, tasks that
      * are in the process of being submitted or executed concurrently
      * during the course of this method may or may not be
@@ -2979,8 +2971,8 @@
     /**
      * Blocks until all tasks have completed execution after a
      * shutdown request, or the timeout occurs, or the current thread
-     * is interrupted, whichever happens first. Because the {@link
-     * #commonPool()} never terminates until program shutdown, when
+     * is interrupted, whichever happens first. Because the {@code
+     * commonPool()} never terminates until program shutdown, when
      * applied to the common pool, this method is equivalent to {@link
      * #awaitQuiescence(long, TimeUnit)} but always returns {@code false}.
      *
@@ -3064,7 +3056,7 @@
 
     /**
      * Waits and/or attempts to assist performing tasks indefinitely
-     * until the {@link #commonPool()} {@link #isQuiescent}.
+     * until the {@code commonPool()} {@link #isQuiescent}.
      */
     static void quiesceCommonPool() {
         common.awaitQuiescence(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
diff --git a/luni/src/main/java/java/util/concurrent/ForkJoinTask.java b/luni/src/main/java/java/util/concurrent/ForkJoinTask.java
index 6d25775..c6bc6de 100644
--- a/luni/src/main/java/java/util/concurrent/ForkJoinTask.java
+++ b/luni/src/main/java/java/util/concurrent/ForkJoinTask.java
@@ -32,8 +32,8 @@
  *
  * <p>A "main" {@code ForkJoinTask} begins execution when it is
  * explicitly submitted to a {@link ForkJoinPool}, or, if not already
- * engaged in a ForkJoin computation, commenced in the {@link
- * ForkJoinPool#commonPool()} via {@link #fork}, {@link #invoke}, or
+ * engaged in a ForkJoin computation, commenced in the {@code
+ * ForkJoinPool.commonPool()} via {@link #fork}, {@link #invoke}, or
  * related methods.  Once started, it will usually in turn start other
  * subtasks.  As indicated by the name of this class, many programs
  * using {@code ForkJoinTask} employ only methods {@link #fork} and
@@ -74,10 +74,9 @@
  * but doing do requires three further considerations: (1) Completion
  * of few if any <em>other</em> tasks should be dependent on a task
  * that blocks on external synchronization or I/O. Event-style async
- * tasks that are never joined (for example, those subclassing {@link
- * CountedCompleter}) often fall into this category.  (2) To minimize
- * resource impact, tasks should be small; ideally performing only the
- * (possibly) blocking action. (3) Unless the {@link
+ * tasks that are never joined often fall into this category.
+ * (2) To minimize resource impact, tasks should be small; ideally
+ * performing only the (possibly) blocking action. (3) Unless the {@link
  * ForkJoinPool.ManagedBlocker} API is used, or the number of possibly
  * blocked tasks is known to be less than the pool's {@link
  * ForkJoinPool#getParallelism} level, the pool cannot guarantee that
@@ -120,13 +119,11 @@
  * <p>The ForkJoinTask class is not usually directly subclassed.
  * Instead, you subclass one of the abstract classes that support a
  * particular style of fork/join processing, typically {@link
- * RecursiveAction} for most computations that do not return results,
- * {@link RecursiveTask} for those that do, and {@link
- * CountedCompleter} for those in which completed actions trigger
- * other actions.  Normally, a concrete ForkJoinTask subclass declares
- * fields comprising its parameters, established in a constructor, and
- * then defines a {@code compute} method that somehow uses the control
- * methods supplied by this base class.
+ * RecursiveAction} for most computations that do not return results
+ * and {@link RecursiveTask} for those that do. Normally, a concrete
+ * ForkJoinTask subclass declares fields comprising its parameters,
+ * established in a constructor, and then defines a {@code compute}
+ * method that somehow uses the control methods supplied by this base class.
  *
  * <p>Method {@link #join} and its variants are appropriate for use
  * only when completion dependencies are acyclic; that is, the
@@ -138,9 +135,9 @@
  * may be of use in constructing custom subclasses for problems that
  * are not statically structured as DAGs. To support such usages, a
  * ForkJoinTask may be atomically <em>tagged</em> with a {@code short}
- * value using {@link #setForkJoinTaskTag} or {@link
- * #compareAndSetForkJoinTaskTag} and checked using {@link
- * #getForkJoinTaskTag}. The ForkJoinTask implementation does not use
+ * value using {@code setForkJoinTaskTag} or {@code
+ * compareAndSetForkJoinTaskTag} and checked using {@code
+ * getForkJoinTaskTag}. The ForkJoinTask implementation does not use
  * these {@code protected} methods or tags for any purpose, but they
  * may be of use in the construction of specialized subclasses.  For
  * example, parallel graph traversals can use the supplied methods to
@@ -178,7 +175,6 @@
  * execution. Serialization is not relied on during execution itself.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public abstract class ForkJoinTask<V> implements Future<V>, Serializable {
@@ -645,8 +641,8 @@
 
     /**
      * Arranges to asynchronously execute this task in the pool the
-     * current task is running in, if applicable, or using the {@link
-     * ForkJoinPool#commonPool()} if not {@link #inForkJoinPool}.  While
+     * current task is running in, if applicable, or using the {@code
+     * ForkJoinPool.commonPool()} if not {@link #inForkJoinPool}.  While
      * it is not necessarily enforced, it is a usage error to fork a
      * task more than once unless it has completed and been
      * reinitialized.  Subsequent modifications to the state of this
diff --git a/luni/src/main/java/java/util/concurrent/ForkJoinWorkerThread.java b/luni/src/main/java/java/util/concurrent/ForkJoinWorkerThread.java
index 5f2799b..ae28700 100644
--- a/luni/src/main/java/java/util/concurrent/ForkJoinWorkerThread.java
+++ b/luni/src/main/java/java/util/concurrent/ForkJoinWorkerThread.java
@@ -18,7 +18,6 @@
  * {@linkplain ForkJoinPool#ForkJoinPool use it} in a {@code ForkJoinPool}.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public class ForkJoinWorkerThread extends Thread {
diff --git a/luni/src/main/java/java/util/concurrent/LinkedTransferQueue.java b/luni/src/main/java/java/util/concurrent/LinkedTransferQueue.java
index cff5dbf..a041fb1 100644
--- a/luni/src/main/java/java/util/concurrent/LinkedTransferQueue.java
+++ b/luni/src/main/java/java/util/concurrent/LinkedTransferQueue.java
@@ -50,7 +50,6 @@
  * the {@code LinkedTransferQueue} in another thread.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  * @param <E> the type of elements held in this collection
  */
diff --git a/luni/src/main/java/java/util/concurrent/Phaser.java b/luni/src/main/java/java/util/concurrent/Phaser.java
index a9adbe5..a97d187 100644
--- a/luni/src/main/java/java/util/concurrent/Phaser.java
+++ b/luni/src/main/java/java/util/concurrent/Phaser.java
@@ -227,7 +227,6 @@
  * of participants.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public class Phaser {
diff --git a/luni/src/main/java/java/util/concurrent/RecursiveAction.java b/luni/src/main/java/java/util/concurrent/RecursiveAction.java
index 8d666f6..e3a6340 100644
--- a/luni/src/main/java/java/util/concurrent/RecursiveAction.java
+++ b/luni/src/main/java/java/util/concurrent/RecursiveAction.java
@@ -131,7 +131,6 @@
  * }}</pre>
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public abstract class RecursiveAction extends ForkJoinTask<Void> {
diff --git a/luni/src/main/java/java/util/concurrent/RecursiveTask.java b/luni/src/main/java/java/util/concurrent/RecursiveTask.java
index 421c9d3..80baa52 100644
--- a/luni/src/main/java/java/util/concurrent/RecursiveTask.java
+++ b/luni/src/main/java/java/util/concurrent/RecursiveTask.java
@@ -34,7 +34,6 @@
  * sequentially solve rather than subdividing.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public abstract class RecursiveTask<V> extends ForkJoinTask<V> {
diff --git a/luni/src/main/java/java/util/concurrent/ScheduledThreadPoolExecutor.java b/luni/src/main/java/java/util/concurrent/ScheduledThreadPoolExecutor.java
index a52351b..483981d 100644
--- a/luni/src/main/java/java/util/concurrent/ScheduledThreadPoolExecutor.java
+++ b/luni/src/main/java/java/util/concurrent/ScheduledThreadPoolExecutor.java
@@ -690,7 +690,6 @@
      * @param value if {@code true}, remove on cancellation, else don't
      * @see #getRemoveOnCancelPolicy
      * @since 1.7
-     * @hide
      */
     public void setRemoveOnCancelPolicy(boolean value) {
         removeOnCancel = value;
@@ -705,7 +704,6 @@
      *         from the queue
      * @see #setRemoveOnCancelPolicy
      * @since 1.7
-     * @hide
      */
     public boolean getRemoveOnCancelPolicy() {
         return removeOnCancel;
diff --git a/luni/src/main/java/java/util/concurrent/ThreadLocalRandom.java b/luni/src/main/java/java/util/concurrent/ThreadLocalRandom.java
index a559321..5baf75f 100644
--- a/luni/src/main/java/java/util/concurrent/ThreadLocalRandom.java
+++ b/luni/src/main/java/java/util/concurrent/ThreadLocalRandom.java
@@ -30,7 +30,6 @@
  * generation methods.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  */
 public class ThreadLocalRandom extends Random {
diff --git a/luni/src/main/java/java/util/concurrent/TransferQueue.java b/luni/src/main/java/java/util/concurrent/TransferQueue.java
index 9cd5773..4c2be6f 100644
--- a/luni/src/main/java/java/util/concurrent/TransferQueue.java
+++ b/luni/src/main/java/java/util/concurrent/TransferQueue.java
@@ -33,7 +33,6 @@
  * and {@code transfer} are effectively synonymous.
  *
  * @since 1.7
- * @hide
  * @author Doug Lea
  * @param <E> the type of elements held in this collection
  */
diff --git a/luni/src/main/java/java/util/concurrent/atomic/Fences.java b/luni/src/main/java/java/util/concurrent/atomic/Fences.java
index 7ecf45a..5714ba0 100644
--- a/luni/src/main/java/java/util/concurrent/atomic/Fences.java
+++ b/luni/src/main/java/java/util/concurrent/atomic/Fences.java
@@ -453,7 +453,6 @@
  *
  * </dl>
  *
- * @since 1.7
  * @hide
  * @author Doug Lea
  */
diff --git a/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java b/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java
index 4c5e280..37aa9d0 100644
--- a/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java
+++ b/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java
@@ -1255,7 +1255,6 @@
      *         current thread, and {@code false} if the current thread
      *         is at the head of the queue or the queue is empty
      * @since 1.7
-     * @hide
      */
     public final boolean hasQueuedPredecessors() {
         // The correctness of this depends on head being initialized
diff --git a/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedSynchronizer.java b/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedSynchronizer.java
index 0350060..e711da5 100644
--- a/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedSynchronizer.java
+++ b/luni/src/main/java/java/util/concurrent/locks/AbstractQueuedSynchronizer.java
@@ -1485,7 +1485,6 @@
      *         current thread, and {@code false} if the current thread
      *         is at the head of the queue or the queue is empty
      * @since 1.7
-     * @hide
      */
     public final boolean hasQueuedPredecessors() {
         // The correctness of this depends on head being initialized
diff --git a/luni/src/main/java/libcore/net/url/FileURLConnection.java b/luni/src/main/java/libcore/net/url/FileURLConnection.java
index f8d7926..185bc12 100644
--- a/luni/src/main/java/libcore/net/url/FileURLConnection.java
+++ b/luni/src/main/java/libcore/net/url/FileURLConnection.java
@@ -101,7 +101,6 @@
      *
      * @return the length of the file
      * @since 1.7
-     * @hide Until ready for a public API change
      */
     @Override
     public long getContentLengthLong() {
diff --git a/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java b/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java
index e00bcab..231b078 100644
--- a/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java
+++ b/luni/src/main/java/libcore/net/url/JarURLConnectionImpl.java
@@ -273,8 +273,6 @@
      * Returns the content length of the resource. Test cases reveal that if the URL is referring to
      * a Jar file, this method answers a content-length returned by URLConnection. For a jar entry
      * it should return the entry's size. Otherwise, it will return -1.
-     *
-     * @hide Until ready for a public API change
      */
     @Override
     public long getContentLengthLong() {
diff --git a/luni/src/test/java/com/android/org/bouncycastle/jce/provider/CertBlacklistTest.java b/luni/src/test/java/com/android/org/bouncycastle/jce/provider/CertBlacklistTest.java
index 6d033d3..1475a63 100644
--- a/luni/src/test/java/com/android/org/bouncycastle/jce/provider/CertBlacklistTest.java
+++ b/luni/src/test/java/com/android/org/bouncycastle/jce/provider/CertBlacklistTest.java
@@ -109,6 +109,24 @@
                     "3xQAyMuOHm72exJljYFqIsiNvGE0KufCqCuH1PD97IXMrLlwGmKKg5jP349lySBpJjm6RDqCTT+6" +
                     "dUl2jkVbeNmco99Y7AOdtLsOdXBMCo5x8lK8zwQWFrzEms0joHXCpWfGWA==";
 
+    public static final String ANSSI = "" +
+                    "MIIDbDCCAlSgAwIBAgIDAx2nMA0GCSqGSIb3DQEBBQUAMEsxCzAJBgNVBAYTAkZSMQ4wDAYDVQQK" +
+                    "EwVER1RQRTEsMCoGA1UEAxMjQUMgREdUUEUgU2lnbmF0dXJlIEF1dGhlbnRpZmljYXRpb24wHhcN" +
+                    "MTMwNzE4MTAwNTI4WhcNMTQwNzE4MTAwNTI4WjA+MQswCQYDVQQGEwJGUjETMBEGA1UECgwKREcg" +
+                    "VHLDqXNvcjEaMBgGA1UEAwwRQUMgREcgVHLDqXNvciBTU0wwggEiMA0GCSqGSIb3DQEBAQUAA4IB" +
+                    "DwAwggEKAoIBAQDI0WFSUyY+MmtFkqFjTefoFyDgh9b1C/2YvSIvT8oCH62JWT5rpeTCZwaXbqWc" +
+                    "jaNfzggqaFsokqfhBif43HNHNtNJmvKE32VcuLB0SpsLR/1VeTd9F99C1JeHVa+nelumOHEfouX8" +
+                    "rRFrxNXNIYTVeiENT8Y2YqRb/XAril9g7i674uFzLiNR/t/N/F8Exujv9U8m8rmgud/+tG9WDRaD" +
+                    "Jwoj3ZFCOnL5qLnSUEcS6TzWpozLmC2JVO5GZKGGd7qC9FjdBkVilkbVIEGSrYvz2Uz2v5IGqMBI" +
+                    "QaFL/kSYWxGTaedTOk2drFEApp9AEPTfv1NwCWBfegsGQrHUROM3AgMBAAGjZjBkMBIGA1UdEwEB" +
+                    "/wQIMAYBAf8CAQQwHQYDVR0OBBYEFAAMW8lJqJW0DtAv5p3Mjogxvh9lMB8GA1UdIwQYMBaAFOnb" +
+                    "kI/9W5nkFTvwYlyn5A1Y6IeZMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAtDfG" +
+                    "HkHOLW2d9fiMtwtkEwDauISJLJyCjoRmawzmQbIZXq7HaLliVfE0sdfKUm0iQ0im1/CpnJLPoTeK" +
+                    "yBHvNu1ubLc2m+9dabAYhF3pVdKC+gNaAzBXZ9Gt0p1CLk1lf8Hg+R10HN2IPCv7V/crz2Ga+c23" +
+                    "4P3pfwYW8+Nd7alGCuvqot6UYXOlheF7zWUkHn6z6tvY+9oMDHKSUAthhA/FB50JgJU89zyTv1eg" +
+                    "Y3ldKwvYBW3W3yNZdTHbPyNsPJdhqA55mDNsteE5YTp1PyySDb1MSVrbxDEruoH6ZE99Hob4Ih8A" +
+                    "mn7MHZatGClECgjXWFZ2Gxa7OUCaQpcH8g==";
+
     public CertBlacklistTest() throws IOException {
         tmpFile = File.createTempFile("test", "");
         DEFAULT_PUBKEYS = getDefaultPubkeys();
@@ -415,6 +433,20 @@
         assertEquals(bl.isPublicKeyBlackListed(pk), true);
     }
 
+    public void testANSSISerialBlacklist() throws Exception {
+        CertBlacklist bl = new CertBlacklist();
+        assertEquals(bl.isSerialNumberBlackListed(createSerialNumber(ANSSI)), true);
+    }
+
+    public void testANSSIIntermediatePubkeyBlacklist() throws Exception {
+        // build the public key
+        PublicKey pk = createPublicKey(ANSSI);
+        // set our blacklist path
+        CertBlacklist bl = new CertBlacklist();
+        // check to make sure it isn't blacklisted
+        assertEquals(bl.isPublicKeyBlackListed(pk), true);
+    }
+
     private static void printHash(String cert) throws Exception {
         System.out.println("CERTIFICATE PUBLIC KEY HASH: " + getHash(createPublicKey(cert)));
     }
diff --git a/luni/src/test/java/libcore/java/net/OldURLClassLoaderTest.java b/luni/src/test/java/libcore/java/net/OldURLClassLoaderTest.java
index 3a5608c..38a0f95 100644
--- a/luni/src/test/java/libcore/java/net/OldURLClassLoaderTest.java
+++ b/luni/src/test/java/libcore/java/net/OldURLClassLoaderTest.java
@@ -17,7 +17,6 @@
 
 package libcore.java.net;
 
-import dalvik.annotation.SideEffect;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -207,7 +206,7 @@
         }
     }
 
-    @SideEffect("Support_TestWebServer requires isolation.")
+    // SideEffect: Support_TestWebServer requires isolation.
     public void test_findResourceLjava_lang_String() throws Exception {
         File tmp = File.createTempFile("test", ".txt");
 
@@ -232,7 +231,7 @@
     /**
      * Regression for Harmony-2237
      */
-    @SideEffect("Support_TestWebServer requires isolation.")
+    // SideEffect: Support_TestWebServer requires isolation.
     public void test_findResource_String() throws Exception {
         File tempFile1 = File.createTempFile("textFile", ".txt");
         tempFile1.createNewFile();
diff --git a/luni/src/test/java/libcore/java/nio/channels/OldSocketChannelTest.java b/luni/src/test/java/libcore/java/nio/channels/OldSocketChannelTest.java
index 0d0c69f..f849c33 100644
--- a/luni/src/test/java/libcore/java/nio/channels/OldSocketChannelTest.java
+++ b/luni/src/test/java/libcore/java/nio/channels/OldSocketChannelTest.java
@@ -17,7 +17,6 @@
 
 package libcore.java.nio.channels;
 
-import dalvik.annotation.BrokenTest;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
@@ -235,7 +234,7 @@
         return connected;
     }
 
-    @BrokenTest("Occasionally fail in CTS, but works in CoreTestRunner")
+    // Broken Test: Occasionally fail in CTS, but works in CoreTestRunner
     public void test_writeLjava_nio_ByteBuffer_Nonblocking_HugeData() throws IOException {
         // initialize write content
         ByteBuffer writeContent = ByteBuffer.allocate(CAPACITY_HUGE);
diff --git a/luni/src/test/java/libcore/java/security/OldDHTest.java b/luni/src/test/java/libcore/java/security/OldDHTest.java
index 421d153..58d96ed 100644
--- a/luni/src/test/java/libcore/java/security/OldDHTest.java
+++ b/luni/src/test/java/libcore/java/security/OldDHTest.java
@@ -15,7 +15,6 @@
  */
 package libcore.java.security;
 
-import dalvik.annotation.BrokenTest;
 import java.security.AlgorithmParameterGenerator;
 import java.security.AlgorithmParameters;
 import java.security.KeyPair;
@@ -27,7 +26,7 @@
 
 public class OldDHTest extends TestCase {
 
-    @BrokenTest("Suffers from DH slowness, disabling for now")
+    // BrokenTest Suffers from DH slowness, disabling for now
     public void testDHGen() throws Exception {
         KeyPairGenerator gen = null;
         try {
diff --git a/luni/src/test/java/libcore/java/security/OldKeyPairGeneratorTestDH.java b/luni/src/test/java/libcore/java/security/OldKeyPairGeneratorTestDH.java
index f39705b..9be282d 100644
--- a/luni/src/test/java/libcore/java/security/OldKeyPairGeneratorTestDH.java
+++ b/luni/src/test/java/libcore/java/security/OldKeyPairGeneratorTestDH.java
@@ -15,7 +15,6 @@
  */
 package libcore.java.security;
 
-import dalvik.annotation.BrokenTest;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
 import java.security.NoSuchAlgorithmException;
@@ -24,7 +23,7 @@
 
 public class OldKeyPairGeneratorTestDH extends TestCase {
 
-    @BrokenTest("Takes ages due to DH computations. Disabling for now.")
+    // Broken Test: Takes ages due to DH computations. Disabling for now.
     public void testKeyPairGenerator() throws NoSuchAlgorithmException {
         KeyPairGenerator generator = KeyPairGenerator.getInstance("DH");
 
diff --git a/luni/src/test/java/libcore/java/security/cert/OldPKIXParametersTest.java b/luni/src/test/java/libcore/java/security/cert/OldPKIXParametersTest.java
index d69e0e2..0832dae 100644
--- a/luni/src/test/java/libcore/java/security/cert/OldPKIXParametersTest.java
+++ b/luni/src/test/java/libcore/java/security/cert/OldPKIXParametersTest.java
@@ -22,7 +22,6 @@
 
 package libcore.java.security.cert;
 
-import dalvik.annotation.BrokenTest;
 import java.io.ByteArrayInputStream;
 import java.security.InvalidAlgorithmParameterException;
 import java.security.KeyStore;
@@ -176,7 +175,7 @@
      * @throws InvalidAlgorithmParameterException
      * @throws KeyStoreException
      */
-    @BrokenTest("Fails in CTS environment, but passes in CoreTestRunner")
+    // Broken Test: Fails in CTS environment, but passes in CoreTestRunner
     public final void testPKIXParametersKeyStore04() throws Exception {
 
 
diff --git a/luni/src/test/java/libcore/java/text/OldNumberFormatTest.java b/luni/src/test/java/libcore/java/text/OldNumberFormatTest.java
index 356d0a9..d281a91 100644
--- a/luni/src/test/java/libcore/java/text/OldNumberFormatTest.java
+++ b/luni/src/test/java/libcore/java/text/OldNumberFormatTest.java
@@ -16,7 +16,6 @@
  */
 package libcore.java.text;
 
-import dalvik.annotation.BrokenTest;
 import java.text.ChoiceFormat;
 import java.text.DecimalFormat;
 import java.text.FieldPosition;
@@ -733,7 +732,7 @@
                 + " instead of Integer.MIN_VALUE", result == 0);
     }
 
-    @BrokenTest("Fails in CTS, passes in CoreTestRunner")
+    // Broken Test: Fails in CTS, passes in CoreTestRunner
     public void test_parseLjava_lang_String() {
         NumberFormat nf1 = NumberFormat.getInstance();
         try {
diff --git a/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParameterGeneratorTestDH.java b/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParameterGeneratorTestDH.java
index 578ee6b..e64fb9e 100644
--- a/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParameterGeneratorTestDH.java
+++ b/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParameterGeneratorTestDH.java
@@ -26,7 +26,7 @@
         super("DH", new AlgorithmParameterKeyAgreementHelper("DH"));
     }
 
-    @BrokenTest("Suffers from DH slowness, disabling for now")
+    // Broken Test: Suffers from DH slowness, disabling for now
     public void testAlgorithmParameterGenerator() {
         super.testAlgorithmParameterGenerator();
     }
diff --git a/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDH.java b/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDH.java
index 165daa1..897e62b 100644
--- a/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDH.java
+++ b/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDH.java
@@ -15,7 +15,6 @@
  */
 package libcore.javax.crypto.spec;
 
-import dalvik.annotation.BrokenTest;
 import java.math.BigInteger;
 import javax.crypto.spec.DHParameterSpec;
 import tests.security.AlgorithmParameterKeyAgreementHelper;
@@ -61,7 +60,7 @@
 
     }
 
-    @BrokenTest("Suffers from DH slowness, disabling for now")
+    // Broken Test: Suffers from DH slowness, disabling for now
     public void testAlgorithmParameters() {
         super.testAlgorithmParameters();
     }
diff --git a/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestDH.java b/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestDH.java
index c4322ff..8e500e1 100644
--- a/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestDH.java
+++ b/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestDH.java
@@ -15,7 +15,6 @@
  */
 package libcore.javax.crypto.spec;
 
-import dalvik.annotation.BrokenTest;
 import java.security.NoSuchAlgorithmException;
 import tests.security.KeyAgreementHelper;
 import tests.security.KeyPairGeneratorTest;
@@ -26,7 +25,7 @@
         super("DH", new KeyAgreementHelper("DH"));
     }
 
-    @BrokenTest("Takes ages due to DH computations. Disabling for now.")
+    // Broken Test: Takes ages due to DH computations. Disabling for now.
     public void testKeyPairGenerator() throws NoSuchAlgorithmException {
         super.testKeyPairGenerator();
     }
diff --git a/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/ExemptionMechanismTest.java b/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/ExemptionMechanismTest.java
index f617adb..87b2913 100644
--- a/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/ExemptionMechanismTest.java
+++ b/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/ExemptionMechanismTest.java
@@ -17,8 +17,6 @@
 
 package org.apache.harmony.crypto.tests.javax.crypto;
 
-import dalvik.annotation.SideEffect;
-
 import java.math.BigInteger;
 import java.security.AlgorithmParameters;
 import java.security.InvalidAlgorithmParameterException;
@@ -186,7 +184,7 @@
         }
     }
 
-    @SideEffect("Causes OutOfMemoryError to test finalization")
+    // Side Effect: Causes OutOfMemoryError to test finalization
     public void test_finalize () {
         Mock_ExemptionMechanism mem = new Mock_ExemptionMechanism(null, null, "Name");
         assertNotNull(mem);
diff --git a/luni/src/test/java/org/apache/harmony/luni/tests/internal/net/www/protocol/http/HttpURLConnectionTest.java b/luni/src/test/java/org/apache/harmony/luni/tests/internal/net/www/protocol/http/HttpURLConnectionTest.java
index 5d8c621..290ae9a 100644
--- a/luni/src/test/java/org/apache/harmony/luni/tests/internal/net/www/protocol/http/HttpURLConnectionTest.java
+++ b/luni/src/test/java/org/apache/harmony/luni/tests/internal/net/www/protocol/http/HttpURLConnectionTest.java
@@ -17,8 +17,6 @@
 
 package org.apache.harmony.luni.tests.internal.net.www.protocol.http;
 
-import dalvik.annotation.SideEffect;
-
 import java.io.IOException;
 import java.net.Authenticator;
 import java.net.HttpURLConnection;
@@ -270,7 +268,7 @@
             ProxySelector.setDefault(defPS);
         }
     }
-    @SideEffect("Suffers from side effect of other, currently unknown test")
+    // SideEffect: Suffers from side effect of other, currently unknown test
     public void testProxyAuthorization() throws Exception {
         // Set up test Authenticator
         Authenticator.setDefault(new Authenticator() {
diff --git a/luni/src/test/java/org/apache/harmony/luni/tests/java/net/ContentHandlerFactoryTest.java b/luni/src/test/java/org/apache/harmony/luni/tests/java/net/ContentHandlerFactoryTest.java
index 74b2276..f3d5518 100644
--- a/luni/src/test/java/org/apache/harmony/luni/tests/java/net/ContentHandlerFactoryTest.java
+++ b/luni/src/test/java/org/apache/harmony/luni/tests/java/net/ContentHandlerFactoryTest.java
@@ -1,7 +1,5 @@
 package org.apache.harmony.luni.tests.java.net;
 
-import dalvik.annotation.SideEffect;
-
 import junit.framework.TestCase;
 
 import tests.support.Support_Configuration;
@@ -24,9 +22,9 @@
     boolean isGetContentCalled = false;
     boolean isCreateContentHandlerCalled = false;
 
-    @SideEffect("This test affects tests that are run after this one." +
-            " The reason are side effects due to caching in URLConnection." +
-            " Maybe this test needs to be run in isolation.")
+    // SideEffect: This test affects tests that are run after this one.
+    // The reason are side effects due to caching in URLConnection.
+    // Maybe this test needs to be run in isolation.
     public void test_createContentHandler() throws IOException {
 
         TestContentHandlerFactory factory =  new TestContentHandlerFactory();
diff --git a/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java b/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java
index e2a3a47..d3da174 100644
--- a/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java
+++ b/luni/src/test/java/org/apache/harmony/luni/tests/java/net/URLConnectionTest.java
@@ -16,7 +16,6 @@
 
 package org.apache.harmony.luni.tests.java.net;
 
-import dalvik.annotation.BrokenTest;
 import junit.framework.TestCase;
 import tests.support.Support_Configuration;
 import tests.support.Support_TestWebData;
@@ -442,7 +441,7 @@
      * @throws IOException
      * {@link java.net.URLConnection#getContentEncoding()}
      */
-    @BrokenTest("Fails in CTS, passes in CoreTestRunner")
+    // broken test - Fails in CTS, passes in CoreTestRunner
     public void test_getContentEncoding() throws IOException {
         // faulty setup
         try {