--- /home/cpdev/src/classpath/gnu/java/nio/charset/UTF_16Decoder.java	2005-07-02 21:03:08.000000000 +0000
+++ gnu/java/nio/charset/UTF_16Decoder.java	2005-06-30 05:34:10.000000000 +0000
@@ -55,8 +55,8 @@
   static final int LITTLE_ENDIAN = 1;
   static final int UNKNOWN_ENDIAN = 2;
 
-  private static final char BYTE_ORDER_MARK = 0xFEFF;
-  private static final char REVERSED_BYTE_ORDER_MARK = 0xFFFE;
+  private static final char BYTE_ORDER_MARK = '\uFEFF';
+  private static final char REVERSED_BYTE_ORDER_MARK = '\uFFFE';
 
   private final int originalByteOrder;
   private int byteOrder;
@@ -83,7 +83,7 @@
             // handle byte order mark
             if (byteOrder == UNKNOWN_ENDIAN)
               {
-                char c = (char) (((b1 & 0xFF) << 8) | (b2 & 0xFF));
+                char c = (char) ((b1 << 8) | b2);
                 if (c == BYTE_ORDER_MARK)
                   {
                     byteOrder = BIG_ENDIAN;
@@ -104,7 +104,6 @@
                   }
               }
 
-	    // FIXME: Change so you only do a single comparison here.
             char c = byteOrder == BIG_ENDIAN ? (char) ((b1 << 8) | b2)
                                              : (char) ((b2 << 8) | b1);
 
